/* =============================================================================
   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:      #ffffff00;
	--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);    }
}

/* ── Page background ─────────────────────────────────────────────────────── */
body.single-product {
	background: var(--surface);
	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 var(--border);
	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; }

/* ── Hide the theme's default WooCommerce breadcrumb ─────────────────────── */
/* PHP unhooks woocommerce_breadcrumb from woocommerce_before_main_content,
   but some themes render their own breadcrumb from a different hook or
   directly in the header. Belt-and-braces: hide any remaining instance on
   single product pages so only our .spp-breadcrumb shows. */
body.single-product .woocommerce-breadcrumb,
body.single-product nav.woocommerce-breadcrumb { display: none !important; }



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

/* ── Two-column layout ───────────────────────────────────────────────────── */
/* Desktop grid:
     row 1 → gallery (col 1)   |   summary (col 2)
     row 2 → excerpt (col 1)   |   (empty)
   Grid items stretch to match the tallest cell (default align-items behaviour) —
   the gallery column stretches to match the summary's height. */
.spp-layout {
    display: grid;
    grid-template-columns: 3fr 2fr;
    grid-template-rows: auto auto;
    column-gap: 4vw;
    row-gap: 0px;
}
.spp-gallery          { grid-column: 1; grid-row: 1; }
.spp-summary          { grid-column: 2; grid-row: 1; }
.spp-product-excerpt  { grid-column: 1; grid-row: 2; }

/* ── Gallery ─────────────────────────────────────────────────────────────── */
/* Flex column so .spp-gallery__main can flex: 1 and fill the vertical space
   left over after the thumbnail strip. Combined with grid cell stretching,
   this makes the image match the summary card's height exactly. */
.spp-gallery {
	position: sticky;
	top: 64px; /* clears the frosted breadcrumb */
	align-self: start;
	display: flex;
	flex-direction: column;
}
.spp-gallery__main {
	position: relative;
	border-radius: var(--r-lg);
	overflow: hidden;
	background: #fff;
	width: 100%;
	flex: 0 0 auto;
	min-height: 0;
	box-shadow: var(--sh-lg);
}
.spp-gallery__img {
	width: 100% !important;
	height: auto !important;
	max-width: 100% !important;
	max-height: none !important;
	object-fit: contain !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); }

/* ── Product excerpt card ────────────────────────────────────────────────── */
/* Sits below the gallery in the left column (row 2 in .spp-layout grid).
   Mirrors the warm amber-bordered .spp-price-card on the right column —
   creates visual symmetry between the two columns and grounds the gallery
   with a brief description without forcing the user to scroll into the tabs. */
.spp-product-excerpt {
	background: transparent;
	border: 1.5px solid var(--color-secondary);
	border-radius: var(--r-md);
	padding: 18px 25px;
	box-shadow: var(--sh-xs);
	color: var(--color-accent);
	animation: riseIn .45s var(--ease) both;
}
.spp-product-excerpt__label {
	display: block;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 1.1px;
	text-transform: uppercase;
	color: var(--ink-50);
	margin: 0 0 8px;
}
.spp-product-excerpt__body {
	font-size: 14px;
	line-height: 1.65;
}
.spp-product-excerpt__body > *:first-child { margin-top: 0; }
.spp-product-excerpt__body > *:last-child  { margin-bottom: 0; }
.spp-product-excerpt__body p { margin: 0 0 .6em; }
.spp-product-excerpt__body p:last-child { margin-bottom: 0; }
.spp-product-excerpt__body strong,
.spp-product-excerpt__body b { font-weight: 700; color: var(--color-accent); }
.spp-product-excerpt__body em,
.spp-product-excerpt__body i { font-style: italic; }
.spp-product-excerpt__body a {
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: opacity .2s var(--ease);
}
.spp-product-excerpt__body a:hover { opacity: .72; }
.spp-product-excerpt__body ul,
.spp-product-excerpt__body ol { margin: .4em 0 .6em; padding-left: 1.2em; }
.spp-product-excerpt__body li { margin-bottom: .25em; }
.spp-product-excerpt__body ul li::marker { color: var(--color-secondary); }

/* ── 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);
}
/* Force text inside price card + excerpt card to black */
.spp-product-excerpt,
.spp-product-excerpt * {
	color: #000 !important;
}

/* 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 (transparent, secondary-colour border) */
.spp-price-card {
	background: transparent;
	border: 1.5px solid var(--color-secondary);
	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; }

/* Quantity label */
.spp-qty-label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
	margin: 10px;
}

/* 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; 
	background: #d4d4dc59;
	border-radius: 10px;
}

/* 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-variation-ui {
	margin: 0 0 20px;
}
.spp-variation-group__label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
	margin: 0 0 14px;
}
.spp-variation-group__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
	gap: 14px;
}
.spp-variation-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 132px;
	padding: 18px 16px;
	border: 1.5px solid rgba(17,17,24,.12) !important;
	border-color: var(--color-accent)!important;
	border-radius: var(--r-md) !important;
	background: transparent;
	color: var(--color-accent)!important;
	text-align: center;
	cursor: pointer;
	box-shadow: var(--sh-xs);
	transition: transform .2s var(--spring), box-shadow .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);
}
.spp-variation-card:hover:not(:disabled):not(.is-active),
button.spp-variation-card:hover:not(:disabled):not(.is-active) {
    background: transparent !important;
    background-color: transparent !important;
    border-color: var(--color-accent) !important;
    color: var(--color-accent) !important;
    transform: none !important;
    box-shadow: var(--sh-xs) !important;
}

.spp-cart-form .spp-variation-card,
button.spp-variation-card {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
}

.spp-variation-card.is-active {
	border-color: var(--color-primary) !important;
	box-shadow: 0 10px 24px rgba(145,22,24,.18);
	background: linear-gradient(135deg, var(--color-secondary), var(--color-primary)) !important;
}
.spp-variation-card.is-active .spp-variation-card__title,
.spp-variation-card.is-active .spp-variation-card__price {
	color: #fff;
}
.spp-variation-card.is-active .spp-variation-card__meta {
	color: rgba(255,255,255,.78);
}
.spp-variation-card:disabled {
	opacity: .45;
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}
.spp-variation-card__title {
	display: block;
	font-size: 16px;
	font-weight: 800;
	line-height: 1.2;
	color: var(--color-accent);
}
.spp-variation-card__meta {
	display: block;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.2;
	color: var(--ink-50);
}
.spp-variation-card__price {
	display: block;
	font-size: 16px;
	font-weight: 800;
	line-height: 1.2;
	color: var(--color-primary);
}
.spp-cart-form table.variations       { display: none !important; }
.spp-cart-form .reset_variations      { display: none !important; }

/* Modifier groups */
.spp-modifier-ui {
	display: grid;
	gap: 18px;
	margin: 0 0 22px;
}
.spp-modifier-group {
	border: 1px solid var(--border);
	border-radius: var(--r-md);
	background: var(--surface);
	padding: 16px;
	box-shadow: var(--sh-xs);
}
.spp-modifier-group.is-invalid {
	border-color: #c62828;
	box-shadow: 0 0 0 3px rgba(198,40,40,.08);
}
.spp-modifier-group__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 0 0 12px;
}
.spp-modifier-group__label {
	margin: 0;
	font-size: 13px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .8px;
	color: var(--color-accent);
}
.spp-modifier-group__required {
	font-size: 11px;
	font-weight: 700;
	color: var(--color-primary);
}
.spp-modifier-group__options {
	display: grid;
	gap: 10px;
}
.spp-modifier-option {
	display: block;
	cursor: pointer;
}
.spp-modifier-option__input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.spp-modifier-option__content {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 13px 14px 13px 14px;
	padding-right: 46px;
	border: 1px solid rgba(17,17,24,.12);
	border-radius: 10px;
	background: #fff;
	position: relative;
	transition: border-color .2s ease, box-shadow .2s ease;
}
/* Circle indicator — unselected */
.spp-modifier-option__content::after {
	content: '';
	position: absolute;
	right: 14px;
	top: 50%;
	transform: translateY(-50%);
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 2px solid rgba(17,17,24,.20);
	background: transparent;
	transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
	flex-shrink: 0;
}
.spp-modifier-option:hover .spp-modifier-option__content {
	border-color: var(--color-secondary);
}
.spp-modifier-option:hover .spp-modifier-option__content::after {
	border-color: var(--color-secondary);
}
/* Circle indicator — selected */
.spp-modifier-option.is-selected .spp-modifier-option__content {
	border-color: var(--color-primary);
	background: #fff;
	box-shadow: 0 4px 14px rgba(145,22,24,.08);
}
.spp-modifier-option.is-selected .spp-modifier-option__content::after {
	border-color: var(--color-primary);
	background: var(--color-primary);
	box-shadow: 0 2px 6px rgba(145,22,24,.25);
}
.spp-modifier-option__text {
	font-size: 15px;
	font-weight: 600;
	color: var(--color-accent);
}
.spp-modifier-option__price {
	font-size: 13px;
	font-weight: 700;
	color: var(--color-primary);
	white-space: nowrap;
}
.spp-modifier-group__error {
	margin: 10px 0 0;
	font-size: 12px;
	font-weight: 600;
	color: #c62828;
}

/* ── 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: var(--r-pill);
	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; }

/* ── Reviews section (collapsible accordion) ─────────────────────────────── */
/* The whole tabs wrapper is wrapped in <details>. With description and
   additional_information tabs filtered out, the inner tab strip has only one
   entry, so we hide it and let the <summary> serve as the section header.
   The card breaks out wider than the main page gutter for visual weight. */
.spp-tabs-wrap {
	margin-top: 64px;
	background: var(--surface);
	border-radius: var(--r-lg);
	overflow: hidden;
	/* Breakout: extend ~40px beyond the .spp-page gutter on each side,
	   clamped so we never push past the viewport on small screens. */
	margin-left:  clamp(0px, calc(-40px + (100vw - 100%) / 2), 40px);
	margin-right: clamp(0px, calc(-40px + (100vw - 100%) / 2), 40px);
}

/* <summary> — the clickable header row */
.spp-reviews-accordion > .spp-reviews-accordion__summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 22px clamp(20px, 3vw, 36px);
	cursor: pointer;
	list-style: none;
	user-select: none;
	transition: background .2s var(--ease);
}
.spp-reviews-accordion > .spp-reviews-accordion__summary::-webkit-details-marker { display: none; }
.spp-reviews-accordion > .spp-reviews-accordion__summary:hover {
	background: var(--surface-cool);
}
.spp-reviews-accordion > .spp-reviews-accordion__summary:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: -2px;
}
.spp-reviews-accordion__label {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 14px;
	min-width: 0;
}
.spp-reviews-accordion__title {
	font-size: clamp(1.05rem, 1.8vw, 1.25rem);
	font-weight: 900;
	color: var(--color-accent);
	letter-spacing: -.3px;
}
.spp-reviews-accordion__meta {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	color: var(--ink-50);
	font-weight: 600;
}
.spp-reviews-accordion__rating {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 3px 10px;
	border-radius: var(--r-pill);
	background: var(--surface-cool);
	color: var(--color-accent);
	font-weight: 800;
	font-size: 12px;
	letter-spacing: .2px;
}
.spp-reviews-accordion__rating span {
	color: var(--warm-amber);
	font-size: 13px;
	line-height: 1;
}
.spp-reviews-accordion__count {
	font-size: 13px;
}
.spp-reviews-accordion__chevron {
	flex-shrink: 0;
	color: var(--ink-50);
	transition: transform .25s var(--ease), color .2s var(--ease);
}
.spp-reviews-accordion[open] > .spp-reviews-accordion__summary .spp-reviews-accordion__chevron {
	transform: rotate(180deg);
	color: var(--color-primary);
}
.spp-reviews-accordion[open] > .spp-reviews-accordion__summary {
	border-bottom: 1px solid var(--border);
}

/* Body — the tabs panel content area */
.spp-reviews-accordion__body {
	animation: riseIn .35s var(--ease) both;
}

/* Hide the (now single-item) WC tab strip — the <summary> replaces it */
.spp-tabs-wrap .woocommerce-tabs ul.tabs {
	display: none !important;
}

/* Hide the duplicate "Reviews" h2 inside the panel — the summary already
   identifies the section. */
.spp-tabs-wrap .woocommerce-Reviews-title { display: none !important; }

/* Panels — generic .woocommerce-Tabs-panel rules (overrides WooCommerce defaults).
   Apply the body padding here so all panels get consistent breathing room
   inside the card. Background is transparent so it inherits the accordion's
   white surface. */
.spp-tabs-wrap .woocommerce-tabs .panel,
.spp-tabs-wrap .woocommerce-Tabs-panel,
.single-product .woocommerce-tabs .woocommerce-Tabs-panel {
	background: transparent;
	padding: clamp(24px, 3.5vw, 40px) clamp(20px, 3vw, 36px);
	font-size: 15px;
	line-height: 1.75;
	color: var(--color-accent);
	animation: riseIn .3s var(--ease) both;
	margin: 0;
}

/* =============================================================================
   Tab Panel — Description (prose)
   Plain WooCommerce product description. Elegant, readable typography with
   a constrained measure, clear heading hierarchy, and styled inline elements.
   ============================================================================= */
.spp-tabs-wrap .woocommerce-Tabs-panel--description {
	max-width: 72ch;
	font-size: 15px;
	line-height: 1.75;
	color: var(--color-accent);
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description > *:first-child { margin-top: 0; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description > *:last-child  { margin-bottom: 0; }

/* Empty description fallback (WC usually hides the tab entirely, but just in case) */
.spp-tabs-wrap .woocommerce-Tabs-panel--description:empty {
	min-height: 80px;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description:empty::before {
	content: "No description available for this product yet.";
	display: block;
	color: var(--ink-50);
	font-style: italic;
	padding: 20px 0;
}

/* Headings inside prose */
.spp-tabs-wrap .woocommerce-Tabs-panel--description h1,
.spp-tabs-wrap .woocommerce-Tabs-panel--description h2,
.spp-tabs-wrap .woocommerce-Tabs-panel--description h3,
.spp-tabs-wrap .woocommerce-Tabs-panel--description h4,
.spp-tabs-wrap .woocommerce-Tabs-panel--description h5,
.spp-tabs-wrap .woocommerce-Tabs-panel--description h6 {
	font-weight: 900;
	color: var(--color-accent);
	letter-spacing: -.3px;
	line-height: 1.25;
	margin: 1.6em 0 .5em;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description h1 { font-size: 1.6rem; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description h2 { font-size: 1.35rem; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description h3 { font-size: 1.15rem; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description h4 {
	font-size: .8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description h5 { font-size: 1rem; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description h6 { font-size: .95rem; color: var(--ink-50); }

/* Paragraphs + inline */
.spp-tabs-wrap .woocommerce-Tabs-panel--description p {
	margin: 0 0 1.1em;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description strong,
.spp-tabs-wrap .woocommerce-Tabs-panel--description b { font-weight: 700; color: var(--color-accent); }
.spp-tabs-wrap .woocommerce-Tabs-panel--description em,
.spp-tabs-wrap .woocommerce-Tabs-panel--description i { font-style: italic; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description small { font-size: .88em; color: var(--ink-50); }

/* Links */
.spp-tabs-wrap .woocommerce-Tabs-panel--description a {
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: opacity .2s var(--ease);
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description a:hover { opacity: .72; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description a:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
	border-radius: 2px;
}

/* Lists */
.spp-tabs-wrap .woocommerce-Tabs-panel--description ul,
.spp-tabs-wrap .woocommerce-Tabs-panel--description ol {
	margin: 0 0 1.1em;
	padding-left: 1.4em;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description li { margin-bottom: .35em; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description li:last-child { margin-bottom: 0; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description ul li::marker { color: var(--color-secondary); }
.spp-tabs-wrap .woocommerce-Tabs-panel--description ol li::marker { color: var(--color-primary); font-weight: 700; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description ul ul,
.spp-tabs-wrap .woocommerce-Tabs-panel--description ol ol,
.spp-tabs-wrap .woocommerce-Tabs-panel--description ul ol,
.spp-tabs-wrap .woocommerce-Tabs-panel--description ol ul { margin: .35em 0 .35em 0; }

/* Blockquote — warm amber card */
.spp-tabs-wrap .woocommerce-Tabs-panel--description blockquote {
	margin: 1.4em 0;
	padding: 14px 20px;
	border-left: 3px solid var(--warm-amber);
	background: linear-gradient(135deg, #fff9ed 0%, #fdf5e2 100%);
	border-radius: 0 var(--r-md) var(--r-md) 0;
	font-style: italic;
	color: var(--color-accent);
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description blockquote p:last-child { margin-bottom: 0; }
.spp-tabs-wrap .woocommerce-Tabs-panel--description blockquote cite {
	display: block;
	margin-top: 6px;
	font-size: 12px;
	font-style: normal;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
}

/* Images */
.spp-tabs-wrap .woocommerce-Tabs-panel--description img {
	max-width: 100%;
	height: auto;
	border-radius: var(--r-md);
	box-shadow: var(--sh-sm);
	margin: 1.2em 0;
	display: block;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description figure {
	margin: 1.4em 0;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description figcaption {
	margin-top: 8px;
	font-size: 12px;
	color: var(--ink-50);
	text-align: center;
}

/* Code */
.spp-tabs-wrap .woocommerce-Tabs-panel--description code {
	font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
	font-size: .88em;
	padding: 2px 6px;
	background: var(--surface-cool);
	border-radius: var(--r-xs);
	color: var(--color-primary);
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description pre {
	background: var(--surface-cool);
	border: 1px solid var(--border);
	border-radius: var(--r-md);
	padding: 14px 16px;
	overflow-x: auto;
	font-size: 13px;
	line-height: 1.55;
	margin: 1.2em 0;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description pre code {
	background: transparent;
	padding: 0;
	color: inherit;
	font-size: inherit;
}

/* Horizontal rule — soft amber */
.spp-tabs-wrap .woocommerce-Tabs-panel--description hr {
	border: none;
	border-top: 1px solid var(--warm-amber);
	opacity: .55;
	margin: 1.8em 0;
}

/* Tables inside prose */
.spp-tabs-wrap .woocommerce-Tabs-panel--description table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
	margin: 1.2em 0;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description th,
.spp-tabs-wrap .woocommerce-Tabs-panel--description td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--border);
	text-align: left;
	vertical-align: top;
}
.spp-tabs-wrap .woocommerce-Tabs-panel--description th {
	background: var(--surface-cool);
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .8px;
	color: var(--ink-50);
}

/* =============================================================================
   Tab Panel — Additional Information (product attributes)
   WooCommerce renders <table class="woocommerce-product-attributes shop_attributes">
   with a row per attribute (label cell + value cell). Styled here as a clean
   spec-card matching the design language of .spp-summary on the right column.
   The duplicate <h2>Additional information</h2> heading is suppressed in PHP
   via the `woocommerce_product_additional_information_heading` filter.
   ============================================================================= */
.spp-tabs-wrap .woocommerce-Tabs-panel--additional_information {
	max-width: 720px;
}

.spp-tabs-wrap .woocommerce-product-attributes,
.spp-tabs-wrap table.shop_attributes {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--r-lg);
	box-shadow: var(--sh-sm);
	overflow: hidden; /* clip the cell backgrounds to the rounded corners */
	margin: 0;
	font-size: 14px;
	animation: riseIn .45s var(--ease) both;
}

/* Warm amber top accent, matching .spp-meta-table */
.spp-tabs-wrap .woocommerce-product-attributes tr:first-child th,
.spp-tabs-wrap .woocommerce-product-attributes tr:first-child td,
.spp-tabs-wrap table.shop_attributes tr:first-child th,
.spp-tabs-wrap table.shop_attributes tr:first-child td {
	border-top: 2px solid var(--color-secondary);
}

/* Row layout */
.spp-tabs-wrap .woocommerce-product-attributes tr,
.spp-tabs-wrap table.shop_attributes tr {
	background: transparent;
	transition: background .15s var(--ease);
}
.spp-tabs-wrap .woocommerce-product-attributes tr:hover,
.spp-tabs-wrap table.shop_attributes tr:hover {
	background: linear-gradient(135deg, #fff9ed 0%, #fdf5e2 100%);
}

/* Label cell */
.spp-tabs-wrap .woocommerce-product-attributes th,
.spp-tabs-wrap .woocommerce-product-attributes-item__label,
.spp-tabs-wrap table.shop_attributes th {
	width: 38%;
	padding: 14px 18px;
	text-align: left;
	vertical-align: top;
	background: var(--surface-cool);
	border-bottom: 1px solid var(--border);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .8px;
	text-transform: uppercase;
	color: var(--ink-50);
	line-height: 1.4;
}

/* Value cell */
.spp-tabs-wrap .woocommerce-product-attributes td,
.spp-tabs-wrap .woocommerce-product-attributes-item__value,
.spp-tabs-wrap table.shop_attributes td {
	padding: 14px 18px;
	vertical-align: top;
	border-bottom: 1px solid var(--border);
	border-left: 1px solid var(--border);
	font-size: 14px;
	font-weight: 500;
	color: var(--color-accent);
	line-height: 1.55;
	font-style: normal; /* WooCommerce defaults this to italic */
}
.spp-tabs-wrap .woocommerce-product-attributes td p,
.spp-tabs-wrap .woocommerce-product-attributes-item__value p,
.spp-tabs-wrap table.shop_attributes td p {
	margin: 0 0 .5em;
}
.spp-tabs-wrap .woocommerce-product-attributes td p:last-child,
.spp-tabs-wrap .woocommerce-product-attributes-item__value p:last-child,
.spp-tabs-wrap table.shop_attributes td p:last-child {
	margin-bottom: 0;
}

/* Strip bottom border from the last row so it sits flush with the rounded edge */
.spp-tabs-wrap .woocommerce-product-attributes tr:last-child th,
.spp-tabs-wrap .woocommerce-product-attributes tr:last-child td,
.spp-tabs-wrap table.shop_attributes tr:last-child th,
.spp-tabs-wrap table.shop_attributes tr:last-child td {
	border-bottom: none;
}

/* Links inside attribute values (e.g. taxonomy-based attributes link to archives) */
.spp-tabs-wrap .woocommerce-product-attributes td a,
.spp-tabs-wrap table.shop_attributes td a {
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: opacity .2s var(--ease);
}
.spp-tabs-wrap .woocommerce-product-attributes td a:hover,
.spp-tabs-wrap table.shop_attributes td a:hover { opacity: .72; }

/* Empty state — no attributes set on this product */
.spp-tabs-wrap .woocommerce-Tabs-panel--additional_information:empty::before {
	content: "No additional information available for this product yet.";
	display: block;
	color: var(--ink-50);
	font-style: italic;
	padding: 20px 0;
}

/* =============================================================================
   Tab Panel — Reviews
   Full WooCommerce reviews markup: heading, empty state, existing reviews list,
   and the "Be the first to review…" form with interactive star rating.
   ============================================================================= */
.spp-tabs-wrap .woocommerce-Tabs-panel--reviews #reviews {
	display: grid;
	gap: 28px;
}

/* "Reviews" section heading — amber underline accent */
.spp-tabs-wrap .woocommerce-Reviews-title {
	position: relative;
	font-size: clamp(1.15rem, 2.2vw, 1.45rem);
	font-weight: 900;
	color: var(--color-accent);
	letter-spacing: -.3px;
	margin: 0 0 18px;
	padding-bottom: 12px;
}
.spp-tabs-wrap .woocommerce-Reviews-title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 44px;
	height: 3px;
	border-radius: var(--r-pill);
	background: var(--warm-amber);
}
.spp-tabs-wrap .woocommerce-Reviews-title span {
	color: var(--ink-50);
	font-weight: 600;
	font-size: .72em;
	letter-spacing: 0;
	margin-left: 6px;
}

/* Empty state — "There are no reviews yet." */
.spp-tabs-wrap .woocommerce-noreviews {
	display: flex;
	align-items: center;
	gap: 14px;
	background: linear-gradient(135deg, #fff9ed 0%, #fdf5e2 100%);
	border: 1.5px solid var(--warm-amber);
	border-radius: var(--r-md);
	padding: 18px 22px;
	margin: 0;
	color: var(--color-accent);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	box-shadow: var(--sh-xs);
	animation: riseIn .45s var(--ease) both;
}
/* No-reviews empty state — transparent bg, secondary border */
.spp-tabs-wrap .woocommerce-noreviews {
	background: transparent;
	border: 1.5px solid var(--color-secondary);
}


.spp-tabs-wrap .woocommerce-noreviews::before {
	content: "";
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	border-radius: var(--r-sm);
	background-color: var(--color-secondary);
	background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 22px 22px;
}

/* Existing reviews list (when the product has reviews) */
.spp-tabs-wrap #comments ol.commentlist {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: 14px;
}
.spp-tabs-wrap #comments ol.commentlist li.review,
.spp-tabs-wrap #comments ol.commentlist li.comment {
	background: var(--surface);
	border-radius: var(--r-md);
	padding: 18px 20px;
	box-shadow: var(--sh-xs);
	animation: riseIn .4s var(--ease) both;
}
.spp-tabs-wrap #comments .comment_container {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	width: 100%;
}
.spp-tabs-wrap #comments .comment_container img.avatar,
.spp-tabs-wrap #comments .comment_container .avatar {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
	margin: 0;
	flex-shrink: 0;
	box-shadow: var(--sh-xs);
}
.spp-tabs-wrap #comments .comment-text {
	flex: 1 1 auto;
	min-width: 0;
	width: auto;
}
.spp-tabs-wrap #comments .comment-text .star-rating {
	font-size: 13px;
	color: var(--color-secondary);
	margin: 0 0 6px;
}
.spp-tabs-wrap #comments .comment-text .star-rating {
	font-size: 13px;
	color: var(--color-secondary);
	margin: 0 0 6px;
}
.spp-tabs-wrap #comments .comment-text .meta {
	font-size: 12px;
	color: var(--ink-50);
	margin: 0 0 8px;
	line-height: 1.5;
}
.spp-tabs-wrap #comments .comment-text .meta strong,
.spp-tabs-wrap #comments .comment-text .woocommerce-review__author {
	font-weight: 700;
	color: var(--color-accent);
	font-size: 13px;
	text-transform: none;
	letter-spacing: 0;
}
.spp-tabs-wrap #comments .comment-text .woocommerce-review__dash,
.spp-tabs-wrap #comments .comment-text .woocommerce-review__published-date { color: var(--ink-50); }
.spp-tabs-wrap #comments .comment-text .description { font-size: 14px; line-height: 1.65; }
.spp-tabs-wrap #comments .comment-text .description p { margin: 0 0 .5em; }
.spp-tabs-wrap #comments .comment-text .description p:last-child { margin-bottom: 0; }
.spp-tabs-wrap #comments .verified {
	display: inline-block;
	margin-left: 6px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: #2d8a52;
}

/* ─────────────────────────────────────────────────────────────────────────
   Review form wrapper — the "Be the first to review …" card
   ───────────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap #review_form_wrapper {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--r-lg);
	padding: clamp(20px, 3vw, 32px);
	box-shadow: var(--sh-sm);
	animation: riseIn .5s var(--ease) both;
}
.spp-tabs-wrap #review_form_wrapper #review_form,
.spp-tabs-wrap #review_form_wrapper #respond { margin: 0; padding: 0; background: none; border: none; }

/* "Be the first to review [product]" — section heading */
.spp-tabs-wrap #review_form_wrapper .comment-reply-title {
	display: block;
	font-size: clamp(1rem, 1.8vw, 1.2rem);
	font-weight: 900;
	color: var(--color-accent);
	letter-spacing: -.2px;
	line-height: 1.25;
	margin: 0 0 6px;
}
.spp-tabs-wrap #review_form_wrapper #respond > p:not(.comment-form-rating):not(.comment-form-comment):not(.form-submit):not(.comment-notes):first-of-type,
.spp-tabs-wrap #review_form_wrapper .comment-notes {
	font-size: 13px;
	color: var(--ink-50);
	margin: 0 0 22px;
}
.spp-tabs-wrap #review_form_wrapper .comment-notes .required {
	color: var(--color-primary);
	font-weight: 700;
}

/* Hide WC's native <select name="rating"> — the star anchors are the UI */
.spp-tabs-wrap #review_form_wrapper select[name="rating"],
.spp-tabs-wrap #commentform select[name="rating"] {
	display: none !important;
}

/* Form rows + labels */
.spp-tabs-wrap #commentform p {
	margin: 0 0 18px;
}
.spp-tabs-wrap #commentform label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
	margin: 0 0 8px;
}
.spp-tabs-wrap #commentform label .required {
	color: var(--color-primary);
	margin-left: 2px;
}

/* ─────────────────────────────────────────────────────────────────────────
   Star rating input — p.stars with 5 <a> children
   Hover + selected states use --color-secondary. WooCommerce's own
   wc-single-product JS handles the click → hidden <select name="rating">.
   ───────────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap .comment-form-rating {
	margin-bottom: 22px;
}
.spp-tabs-wrap p.stars {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin: 0;
	padding: 0;
	line-height: 1;
}
.spp-tabs-wrap p.stars > span {
	display: inline-flex;
	gap: 4px;
}
.spp-tabs-wrap p.stars a {
	position: relative !important;
	display: inline-block !important;
	width: 32px !important;
	height: 32px !important;
	text-indent: -9999px !important;   /* hide the "1 of 5 stars" text from sighted users */
	overflow: hidden !important;
	text-decoration: none !important;
	border-radius: var(--r-xs)!important;
}
.spp-tabs-wrap p.stars a::before {
	content: "\2605"; /* ★ */
	position: absolute;
	inset: 0;
	text-indent: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 28px;
	line-height: 1;
	color: var(--ink-10);
	transition: color .15s var(--ease), transform .18s var(--spring);
}

/* Hover fill-up: hovered star + all preceding siblings turn on */
.spp-tabs-wrap p.stars:hover a::before { color: var(--color-secondary); }
.spp-tabs-wrap p.stars:hover a:hover ~ a::before { color: var(--ink-10); }
.spp-tabs-wrap p.stars a:hover::before { transform: scale(1.12); }

/* Selected state (WC adds .selected on p.stars + .active on clicked <a>) */
.spp-tabs-wrap p.stars.selected a:not(.active)::before { color: var(--color-secondary); }
.spp-tabs-wrap p.stars.selected a.active::before       { color: var(--color-secondary); }
.spp-tabs-wrap p.stars.selected a.active ~ a::before   { color: var(--ink-10); }

/* Keyboard focus */
.spp-tabs-wrap p.stars a:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}
.spp-tabs-wrap p.stars a:focus-visible::before { color: var(--color-secondary); }

/* aria-checked radio semantics — visually mark the current checked star too */
.spp-tabs-wrap p.stars a[aria-checked="true"]::before { color: var(--color-secondary); }

/* ─────────────────────────────────────────────────────────────────────────
   Textarea — full-width, rounded, focus ring uses --color-primary
   ───────────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap #commentform textarea,
.spp-tabs-wrap #commentform textarea#comment {
	display: block;
	width: 100%;
	min-height: 140px;
	padding: 14px 16px;
	border: 1.5px solid var(--border);
	border-radius: var(--r-md);
	background: var(--surface);
	font-family: inherit;
	font-size: 15px;
	line-height: 1.6;
	color: black;
	resize: vertical;
	box-sizing: border-box;
	transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.spp-tabs-wrap #commentform textarea::placeholder { color: var(--ink-25); }
.spp-tabs-wrap #commentform textarea:focus,
.spp-tabs-wrap #commentform textarea:focus-visible {
	outline: none;
	border-color: var(--color-primary);
	/* Fallback for browsers without color-mix */
	box-shadow: 0 0 0 3px var(--ink-10);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 18%, transparent);
}

/* Optional author / email / url inputs (shown if user not logged in + WC config) */
.spp-tabs-wrap #commentform input[type="text"],
.spp-tabs-wrap #commentform input[type="email"],
.spp-tabs-wrap #commentform input[type="url"] {
	display: block;
	width: 100%;
	height: 46px;
	padding: 10px 14px;
	border: 1.5px solid var(--border);
	border-radius: var(--r-md);
	background: var(--surface);
	font-family: inherit;
	font-size: 14px;
	color: black;
	box-sizing: border-box;
	transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.spp-tabs-wrap #commentform input[type="text"]:focus,
.spp-tabs-wrap #commentform input[type="email"]:focus,
.spp-tabs-wrap #commentform input[type="url"]:focus {
	outline: none;
	border-color: var(--color-primary);
	box-shadow: 0 0 0 3px var(--ink-10);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 18%, transparent);
}

/* Cookies consent row */
.spp-tabs-wrap #commentform .comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin-bottom: 18px;
}
.spp-tabs-wrap #commentform .comment-form-cookies-consent input[type="checkbox"] {
	margin-top: 3px;
	accent-color: var(--color-primary);
	flex-shrink: 0;
}
.spp-tabs-wrap #commentform .comment-form-cookies-consent label {
	margin: 0;
	font-size: 12px;
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	color: var(--ink-50);
	line-height: 1.5;
}

/* ─────────────────────────────────────────────────────────────────────────
   Submit button — matches .single_add_to_cart_button (gradient, shine, lift)
   ───────────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap #commentform p.form-submit {
	margin-top: 24px;
	margin-bottom: 0;
}
.spp-tabs-wrap #commentform #submit,
.spp-tabs-wrap #commentform input[type="submit"],
.spp-tabs-wrap #commentform button[type="submit"] {
	position: relative;
	overflow: hidden;
	display: inline-block;
	min-width: 200px;
	padding: 0 32px;
	height: 52px;
	line-height: 52px;
	border: none;
	border-radius: 8px;
	background: var(--color-primary); /* fallback */
	background: linear-gradient(135deg, var(--color-secondary), var(--color-primary));
	color: #fff;
	font-family: inherit;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .8px;
	text-transform: uppercase;
	text-align: center;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	transition: transform .2s var(--spring), box-shadow .2s var(--ease);
}
/* Shine sweep on hover */
.spp-tabs-wrap #commentform #submit::after,
.spp-tabs-wrap #commentform input[type="submit"]::after,
.spp-tabs-wrap #commentform button[type="submit"]::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);
	pointer-events: none;
}
.spp-tabs-wrap #commentform #submit:hover,
.spp-tabs-wrap #commentform input[type="submit"]:hover,
.spp-tabs-wrap #commentform button[type="submit"]:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(145, 22, 24, .30);
}
.spp-tabs-wrap #commentform #submit:hover::after,
.spp-tabs-wrap #commentform input[type="submit"]:hover::after,
.spp-tabs-wrap #commentform button[type="submit"]:hover::after { transform: translateX(100%); }
.spp-tabs-wrap #commentform #submit:active,
.spp-tabs-wrap #commentform input[type="submit"]:active,
.spp-tabs-wrap #commentform button[type="submit"]:active { transform: scale(.97); }
.spp-tabs-wrap #commentform #submit:focus-visible,
.spp-tabs-wrap #commentform input[type="submit"]:focus-visible,
.spp-tabs-wrap #commentform button[type="submit"]:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 3px;
}

/* ─────────────────────────────────────────────────────────────────────────
   Preserve hidden fields — do NOT alter display
   (These selectors are intentionally absent so browsers keep the form's
    existing hidden-input and Akismet honeypot visibility untouched.)
   Belt-and-braces reset in case a theme overrides them:
   ───────────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap #commentform input[type="hidden"] { display: none !important; }
/* Note: .akismet-fields-container ships with inline style="display:none" from
   Akismet itself — we deliberately do not target it here so its visibility
   stays exactly as the plugin set it. */

/* ── 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 BREAKPOINTS
   — 1024px: stack the two-column layout (prevents the squished summary +
             oversized gallery that happened in the 768–1023px range).
             Gallery + summary get max-width caps so they don't balloon.
   — 768px:  tighter padding on tabs/forms for tablet.
   — 480px:  small-phone-specific tweaks (tabs, stars, related products).
   ═════════════════════════════════════════════════════════════════════════════ */

/* ── Tablet & below: stack the layout ────────────────────────────────────── */
/* Bumped from 768px → 1024px because the 58fr/4fr desktop grid looks bad in
   the tablet range (gallery eats ~93% of width, summary squished to ~6%).
   Stacking earlier gives each section proper breathing room on tablets. */
@media (max-width: 1024px) {
	.spp-layout {
		grid-template-columns: 1fr;
		grid-template-rows: auto auto auto;
		row-gap: 64px;
	}
	/* Source order is gallery → excerpt → summary, which is also the order we
	   want stacked: read the short description before reaching the buy box. */
	.spp-gallery,
	.spp-product-excerpt,
	.spp-summary { grid-column: 1; grid-row: auto; }

	/* Gallery: release sticky + flex column behaviour + cap width so a 1000px
	   tablet doesn't render a 1000px-tall image. Restore aspect ratio on
	   .spp-gallery__main so stacked gallery stays a comfortable square. */
	.spp-gallery {
		position: static;
		display: block;
		padding-bottom: 0;
		max-width: 640px;
		margin: 0 auto;
		width: 100%;
	}
	.spp-gallery__main {
		flex: none;
		aspect-ratio: 1 / 1;
		min-height: 0;
	}
	/* Summary: cap width too so the form doesn't stretch awkwardly wide */
	.spp-summary {
		border-radius: var(--r-lg);
		max-width: 720px;
		margin: 0 auto;
		width: 100%;
	}
	.spp-product-excerpt {
		max-width: 720px;
		margin: 0 auto;
		width: 100%;
	}

	/* Related products — 3 columns on tablet feels more balanced than 4 squished */
	body.single-product .spp-related-wrap ul.products {
		grid-template-columns: repeat(3, 1fr) !important;
	}
}

/* ── Small tablet / large phone ──────────────────────────────────────────── */
@media (max-width: 768px) {
	.spp-layout {
		row-gap: 48px;
	}
	/* Related products drop to 2 columns */
	body.single-product .spp-related-wrap ul.products {
		grid-template-columns: repeat(2, 1fr) !important;
	}
	/* Tabs — tighter padding inside the card on tablet */
	.spp-tabs-wrap { margin-top: 48px; }
	.spp-tabs-wrap .woocommerce-tabs .panel,
	.spp-tabs-wrap .woocommerce-Tabs-panel,
	.single-product .woocommerce-tabs .woocommerce-Tabs-panel { padding: 28px 22px; }
	.spp-tabs-wrap #review_form_wrapper { padding: 22px; }
	.spp-tabs-wrap #commentform #submit,
	.spp-tabs-wrap #commentform input[type="submit"],
	.spp-tabs-wrap #commentform button[type="submit"] { width: 100%; min-width: 0; }
}

/* ── Phone ───────────────────────────────────────────────────────────────── */
@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;
	}
	/* Tabs — small-screen refinements */
	.spp-tabs-wrap .woocommerce-tabs ul.tabs li a { padding: 12px 10px; font-size: 11px; letter-spacing: .5px; }
	.spp-tabs-wrap .woocommerce-tabs .panel,
	.spp-tabs-wrap .woocommerce-Tabs-panel,
	.single-product .woocommerce-tabs .woocommerce-Tabs-panel { padding: 22px 18px; font-size: 14px; }
	.spp-tabs-wrap .woocommerce-Tabs-panel--description { font-size: 14px; }
	/* Attributes table — stack label above value at narrow widths for readability */
	.spp-tabs-wrap .woocommerce-product-attributes,
	.spp-tabs-wrap table.shop_attributes { font-size: 13px; }
	.spp-tabs-wrap .woocommerce-product-attributes th,
	.spp-tabs-wrap table.shop_attributes th {
		width: auto;
		padding: 12px 14px 2px;
		background: transparent;
		border-bottom: none;
	}
	.spp-tabs-wrap .woocommerce-product-attributes td,
	.spp-tabs-wrap table.shop_attributes td {
		padding: 0 14px 12px;
		border-left: none;
		font-size: 13px;
	}
	.spp-tabs-wrap #review_form_wrapper { padding: 18px; border-radius: var(--r-md); }
	.spp-tabs-wrap .woocommerce-noreviews { padding: 14px 16px; font-size: 13px; gap: 12px; }
	.spp-tabs-wrap .woocommerce-noreviews::before { width: 36px; height: 36px; background-size: 20px 20px; }
	/* Stars stay finger-friendly */
	.spp-tabs-wrap p.stars a { width: 34px; height: 34px; }
	.spp-tabs-wrap p.stars a::before { font-size: 30px; }
	.spp-tabs-wrap #commentform textarea,
	.spp-tabs-wrap #commentform textarea#comment { min-height: 120px; padding: 12px 14px; font-size: 14px; }
	.spp-tabs-wrap #commentform input[type="text"],
	.spp-tabs-wrap #commentform input[type="email"],
	.spp-tabs-wrap #commentform input[type="url"] { height: 44px; }
	/* Existing review items stack a little tighter */
	.spp-tabs-wrap #comments ol.commentlist li.review,
	.spp-tabs-wrap #comments ol.commentlist li.comment { padding: 14px 16px; }
	.spp-tabs-wrap #comments .comment_container { grid-template-columns: 40px 1fr; gap: 12px; }
	.spp-tabs-wrap #comments .comment_container img.avatar,
	.spp-tabs-wrap #comments .comment_container .avatar { width: 40px; height: 40px; }
}

