/**
 * Single Product Page Redesign (classic WooCommerce product, Blocksy layout)
 *
 * Enqueued only on single-product pages by inc/single-product-functions.php,
 * and every rule is additionally prefixed with body.single-product (added by
 * WooCommerce on product pages only), so nothing here can reach any other
 * page. Main-product rules are further scoped to .product-entry-wrapper and
 * related-product rules to .related, so the two never bleed into each other.
 *
 * Visual language matches the approved Cart and Checkout (assets/css/cart.css,
 * assets/css/checkout.css): same palette tokens, fonts, field borders, radii
 * and navy button. Those tokens are scoped to their own pages, so they're
 * redefined here rather than shared -- neither file is touched.
 *
 * Presentation only. No element is hidden, moved out of its container or
 * re-ordered in the DOM: the Add to Cart form, Ring Size / Engraving fields,
 * quantity, gallery slider, thumbnails and zoom keep their markup and
 * behaviour. Blocksy's WooCommerce CSS prints after this file, so selectors
 * carry the body.single-product prefix for specificity rather than !important,
 * and Blocksy's own custom properties are set wherever it exposes one.
 *
 * Breakpoints follow Blocksy's: 1000px (two columns), 690px, 480px.
 */

body.single-product {
	--eternity-product-navy: var(--theme-palette-color-1, #0D2A4D);
	--eternity-product-navy-deep: var(--theme-palette-color-4, #10243D);
	--eternity-product-gold: var(--theme-palette-color-2, #C99A73);
	--eternity-product-cream: var(--theme-palette-color-5, #F8F5F1);
	--eternity-product-text: var(--theme-text-color, #1B1B1B);
	--eternity-product-muted: #5B6573;
	--eternity-product-line: #E3E6EA;
	/* ~3:1 against white -- meets WCAG non-text contrast for field outlines */
	--eternity-product-field-border: #8A94A3;
	--eternity-product-radius: 6px;
	--eternity-product-card-radius: 10px;
	--eternity-product-heading-font: Georgia, 'Times New Roman', serif;
	--eternity-product-body-font: var(--theme-font-family, Helvetica), Helvetica, Arial, sans-serif;

	/* Blocksy's top/bottom content spacing (60px live) -- the gap between the
	   header and the breadcrumbs. Compact, as on Cart / Checkout. */
	--theme-content-vertical-spacing: 28px;
}

/* ============================================
   SOCIAL CHAT FLOATING BUTTON -- single-product pages only
   Social Chat (wp-whatsapp-chat 8.6.4) mounts its floating widget inside a
   server-rendered <div class="qlwapp">. On mobile it overlapped the gallery
   thumbnails, engraving field and specifications; the inline WhatsApp
   assistance panel below Add to Cart replaces it here. The plugin stays
   active and every other page is unaffected (same approach as cart.css).
   ============================================ */

body.single-product .qlwapp {
	display: none;
}

/* ============================================
   BREADCRUMBS (Blocksy hero, type-1)
   ============================================ */

body.single-product .hero-section[data-type="type-1"] {
	--margin-bottom: 20px;
	margin-bottom: 20px;
}

body.single-product .hero-section[data-type="type-1"] .ct-breadcrumbs {
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--eternity-product-muted);
	--theme-link-initial-color: var(--eternity-product-muted);
	--theme-link-hover-color: var(--eternity-product-navy);
}

/* ============================================
   TWO-COLUMN LAYOUT
   Blocksy drives both column widths from --product-gallery-width (summary
   width is calc(100% - gallery)). This overrides the 42% set in style.css
   for a larger gallery; mobile/tablet (below 1000px) stay full width.
   ============================================ */

@media (min-width: 1000px) {
	body.single-product .product-entry-wrapper {
		--product-gallery-width: 50%;
	}

	body.single-product .product-entry-wrapper .entry-summary {
		margin-inline-start: 56px;
	}
}

/* ============================================
   GALLERY
   style.css already gives every image a square white frame with
   object-fit: contain (no cropping); only the frame treatment, thumbnails
   and arrows are styled here. Works for both Blocksy outputs: a single
   <figure> (one image) and the flexy slider + thumbnail pills (several).
   ============================================ */

body.single-product .product-entry-wrapper .woocommerce-product-gallery {
	--thumbs-spacing: 10px;
	--border-radius: var(--eternity-product-card-radius);
}

/* Main image frame -- single image (direct child) and slider items */
body.single-product .product-entry-wrapper .ct-product-gallery-container > .ct-media-container,
body.single-product .product-entry-wrapper .flexy-items .ct-media-container {
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-card-radius);
}

/* Slider arrows: white discs with a navy arrow */
body.single-product .product-entry-wrapper .flexy > [class*="flexy-arrow"] {
	--flexy-nav-background-color: #ffffff;
	--flexy-nav-background-hover-color: var(--eternity-product-navy);
	--flexy-nav-arrow-color: var(--eternity-product-navy);
	--flexy-nav-arrow-hover-color: #ffffff;
	box-shadow: 0 2px 10px rgba(13, 42, 77, 0.12);
}

/* Thumbnails: 5 per row on desktop (Blocksy default 20%), 4 / 3 on small
   screens via Blocksy's own breakpoints -- only the frame is styled. */
body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] .ct-media-container {
	border-radius: var(--eternity-product-radius);
	background-color: #ffffff;
}

body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] li .ct-media-container::after {
	border-width: 1px;
	border-color: var(--eternity-product-line);
}

body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] li {
	opacity: 0.7;
}

body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] li:hover,
body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] li.active {
	opacity: 1;
}

body.single-product .product-entry-wrapper .flexy-pills[data-type="thumbs"] li.active .ct-media-container::after {
	border-width: 2px;
	border-color: var(--eternity-product-navy);
}

/* Lightbox / zoom trigger (only present if enabled in Blocksy) */
body.single-product .product-entry-wrapper .woocommerce-product-gallery__trigger {
	--lightbox-button-icon-color: var(--eternity-product-navy);
	--lightbox-button-hover-background-color: var(--eternity-product-navy);
	box-shadow: 0 2px 10px rgba(13, 42, 77, 0.12);
}

/* ============================================
   SUMMARY -- title, price, short description, meta
   Blocksy spaces every summary element with --product-element-spacing
   (35px live); tightened here for a compact purchase column.
   ============================================ */

body.single-product .product-entry-wrapper .entry-summary-items > * {
	--product-element-spacing: 20px;
}

body.single-product .product-entry-wrapper .entry-summary .product_title {
	--theme-font-family: var(--eternity-product-heading-font);
	--theme-font-size: 32px;
	--theme-font-weight: 600;
	--theme-line-height: 1.25;
	--theme-heading-color: var(--eternity-product-navy);
	--product-element-spacing: 12px;
	color: var(--eternity-product-navy);
	letter-spacing: 0.01em;
}

body.single-product .product-entry-wrapper .entry-summary-items > .price {
	--theme-font-size: 26px;
	--theme-font-weight: 600;
	--product-element-spacing: 22px;
	font-family: var(--eternity-product-body-font);
	color: var(--eternity-product-navy);
	letter-spacing: 0.01em;
}

body.single-product .product-entry-wrapper .entry-summary-items > .price .woocommerce-Price-amount {
	color: inherit;
}

/* Sale prices (none live today) -- keep the regular price readable */
body.single-product .product-entry-wrapper .entry-summary-items > .price del {
	font-size: 0.7em;
	font-weight: 400;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .entry-summary-items > .price ins {
	text-decoration: none;
}

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description {
	font-size: 15px;
	line-height: 1.7;
	color: #3A4452;
}

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description > p:not(.eternity-manufacturing-time) {
	margin-bottom: 0.75em;
}

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description > :last-child {
	margin-bottom: 0;
}

body.single-product .product-entry-wrapper .entry-summary .ct-product-divider {
	--single-product-layer-divider: 1px solid var(--eternity-product-line);
}

/* SKU / Category */
body.single-product .product-entry-wrapper .entry-summary-items .product_meta > span {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.1em;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .entry-summary-items .product_meta > span > * {
	opacity: 1;
	font-weight: 400;
	letter-spacing: 0.04em;
	color: var(--eternity-product-text);
	--theme-link-initial-color: var(--eternity-product-text);
	--theme-link-hover-color: var(--eternity-product-navy);
}

/* ============================================
   MANUFACTURING TIME NOTICE
   Whether it appears (category / Greg-earring rules) is decided entirely by
   inc/manufacturing-time-notice-functions.php. One compact white container
   matching the Product Highlights above it: each benefit is a small navy
   icon + heading + detail, stacked, with a thin divider between them. The
   heading and detail share one line when they fit and wrap onto two on
   narrow screens, keeping the notice about as tall as the old two-line
   paragraph. Selector specificity beats
   assets/css/manufacturing-time-notice.css on purpose.
   Both placements are covered: inside the short description (normal) and
   directly in the summary (fallback when the short description is empty).
   ============================================ */

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description .eternity-manufacturing-time,
body.single-product .product-entry-wrapper .entry-summary-items > .eternity-manufacturing-time {
	margin: 12px 0 0 0;
	padding: 0;
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-radius);
	background-color: #ffffff;
	font-size: 13px;
	line-height: 1.4;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .entry-summary-items > .eternity-manufacturing-time {
	margin-top: 0;
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__item {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 9px 14px;
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__item + .eternity-manufacturing-time__item {
	border-top: 1px solid var(--eternity-product-line);
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__icon {
	flex: 0 0 auto;
	display: inline-flex;
	margin-top: 1px;
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__icon svg {
	display: block;
	width: 16px;
	height: 16px;
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__text {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 8px;
	row-gap: 1px;
	min-width: 0;
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__title {
	font-weight: 600;
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper .eternity-manufacturing-time__detail {
	color: var(--eternity-product-muted);
}

/* ============================================
   PRODUCT HIGHLIGHTS
   Rendered by inc/product-highlights-functions.php inside the short
   description, after its text and before the Manufacturing Time notice.
   Three columns (two when only two highlights resolve); stacked
   label / value rows on narrow phones.
   ============================================ */

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description .eternity-product-highlights {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 18px 0 0 0;
	padding: 0;
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-radius);
	background-color: #ffffff;
}

body.single-product .product-entry-wrapper .woocommerce-product-details__short-description .eternity-product-highlights[data-count="2"] {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

body.single-product .product-entry-wrapper .eternity-product-highlights__item {
	min-width: 0;
	margin: 0;
	padding: 12px 14px;
}

body.single-product .product-entry-wrapper .eternity-product-highlights__item + .eternity-product-highlights__item {
	border-left: 1px solid var(--eternity-product-line);
}

body.single-product .product-entry-wrapper .eternity-product-highlights__label {
	margin: 0 0 4px 0;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .eternity-product-highlights__value {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--eternity-product-navy);
	overflow-wrap: anywhere;
}

/* ============================================
   RING SIZE + ENGRAVING FIELDS
   Markup, field names, required attribute, option list, maxlength and
   position inside form.cart are untouched -- restyle only, beating the
   specificity of ring-size-field.css / engraving-field.css.
   ============================================ */

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field,
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field {
	margin: 0 0 18px 0;
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__label,
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__label {
	margin: 0 0 8px 0;
	font-family: var(--eternity-product-body-font);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__select,
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__input {
	min-height: 50px;
	font-family: var(--eternity-product-body-font);
	font-size: 15px;
	color: var(--eternity-product-text);
	background-color: #ffffff;
	border: 1px solid var(--eternity-product-field-border);
	border-radius: var(--eternity-product-radius);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__select {
	padding: 12px 40px 12px 14px;
	cursor: pointer;
}

body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__input {
	padding: 0 14px;
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__select:hover,
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__input:hover {
	border-color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__select:focus,
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__input:focus {
	outline: none;
	border-color: var(--eternity-product-navy);
	box-shadow: 0 0 0 3px rgba(13, 42, 77, 0.12);
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__guide-link {
	margin-top: 8px;
	font-size: 13px;
	color: var(--eternity-product-navy);
	text-decoration: underline;
	text-underline-offset: 2px;
}

body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__guide-link:hover,
body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__guide-link:focus-visible {
	color: var(--eternity-product-gold);
}

/* Character allowance hint -- mirrors the field's existing 25-character
   maxlength (eternity_engraving_max_length()); purely visual. */
body.single-product .product-entry-wrapper form.cart .eternity-engraving-field::after {
	content: "Up to 25 characters";
	display: block;
	margin-top: 6px;
	font-size: 12px;
	color: var(--eternity-product-muted);
}

/* ============================================
   QUANTITY + ADD TO CART (matches Cart's Proceed to Checkout button)
   Blocksy custom properties only for sizing, so its +/- controls keep
   their own positioning maths.
   ============================================ */

body.single-product .product-entry-wrapper .entry-summary-items > .ct-product-add-to-cart > .cart {
	--theme-button-min-height: 54px;
}

body.single-product .product-entry-wrapper .ct-cart-actions {
	gap: 12px;
}

body.single-product .product-entry-wrapper .ct-cart-actions .quantity[data-type="type-2"] {
	--quantity-width: 120px;
	--quantity-arrows-initial-color: var(--eternity-product-navy);
	--quantity-arrows-hover-color: var(--eternity-product-navy);
	--quantity-hover-color: var(--eternity-product-cream);
}

body.single-product .product-entry-wrapper .ct-cart-actions .quantity[data-type="type-2"] input[type="number"] {
	--theme-form-field-border-initial-color: var(--eternity-product-field-border);
	--theme-form-field-border-focus-color: var(--eternity-product-navy);
	--theme-form-field-border-radius: var(--eternity-product-radius);
	font-size: 15px;
	font-weight: 600;
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper .ct-cart-actions .single_add_to_cart_button {
	--theme-button-background-initial-color: var(--eternity-product-navy);
	--theme-button-background-hover-color: var(--eternity-product-navy-deep);
	--theme-button-text-initial-color: #ffffff;
	--theme-button-text-hover-color: #ffffff;
	border-radius: var(--eternity-product-radius);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	box-shadow: 0 6px 18px rgba(13, 42, 77, 0.18);
	transition: background-color 0.2s ease, box-shadow 0.2s ease;
}

body.single-product .product-entry-wrapper .ct-cart-actions .single_add_to_cart_button:hover {
	box-shadow: 0 8px 22px rgba(13, 42, 77, 0.26);
}

body.single-product .product-entry-wrapper .ct-cart-actions .single_add_to_cart_button:focus-visible {
	outline: 2px solid var(--eternity-product-gold);
	outline-offset: 3px;
}

/* "View cart" link -- only appears if AJAX add to cart is enabled */
body.single-product .product-entry-wrapper .ct-cart-actions .added_to_cart {
	--theme-button-background-initial-color: #ffffff;
	--theme-button-background-hover-color: var(--eternity-product-cream);
	--theme-button-text-initial-color: var(--eternity-product-navy);
	--theme-button-text-hover-color: var(--eternity-product-navy);
	border: 1px solid var(--eternity-product-navy);
	border-radius: var(--eternity-product-radius);
	font-weight: 600;
}

/* ============================================
   TRUST + CUSTOMER ASSISTANCE PANEL
   Rendered by inc/single-product-functions.php after the Add to Cart form.
   ============================================ */

body.single-product .product-entry-wrapper .eternity-product-assurance {
	margin-top: 22px;
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-card-radius);
	background-color: #ffffff;
	overflow: hidden;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 16px 18px;
	list-style: none;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 0;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background-color: var(--eternity-product-cream);
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper .eternity-product-assurance__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	font-size: 13px;
	line-height: 1.45;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .eternity-product-assurance__text strong,
body.single-product .product-entry-wrapper .eternity-product-assurance__help-text strong {
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--eternity-product-navy);
}

body.single-product .product-entry-wrapper .eternity-product-assurance a:not(.eternity-product-assurance__whatsapp) {
	color: var(--eternity-product-navy);
	text-decoration: underline;
	text-underline-offset: 2px;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__help {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 14px 18px;
	border-top: 1px solid var(--eternity-product-line);
	background-color: var(--eternity-product-cream);
}

body.single-product .product-entry-wrapper .eternity-product-assurance__help-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 0;
	font-size: 13px;
	line-height: 1.45;
	color: var(--eternity-product-muted);
}

body.single-product .product-entry-wrapper .eternity-product-assurance__whatsapp {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 42px;
	padding: 0 18px;
	border: 1px solid var(--eternity-product-navy);
	border-radius: var(--eternity-product-radius);
	background-color: #ffffff;
	color: var(--eternity-product-navy);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: background-color 0.2s ease, color 0.2s ease;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__whatsapp:hover,
body.single-product .product-entry-wrapper .eternity-product-assurance__whatsapp:focus-visible {
	background-color: var(--eternity-product-navy);
	color: #ffffff;
}

body.single-product .product-entry-wrapper .eternity-product-assurance__whatsapp:focus-visible {
	outline: 2px solid var(--eternity-product-gold);
	outline-offset: 2px;
}

body.single-product .product-entry-wrapper .eternity-product-assurance .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ============================================
   PRODUCT TABS (Blocksy type-1, centred)
   Only existing tabs are styled -- no tab is added, removed or renamed.
   ============================================ */

body.single-product .product > .woocommerce-tabs {
	padding-top: 56px;
	--tab-border-color: var(--eternity-product-line);
	--tab-background: var(--eternity-product-navy);
}

body.single-product .product > .woocommerce-tabs .tabs {
	--theme-font-size: 13px;
	--theme-letter-spacing: 0.1em;
	--theme-link-initial-color: var(--eternity-product-muted);
	--theme-link-hover-color: var(--eternity-product-navy);
	--theme-link-active-color: var(--eternity-product-navy);
}

body.single-product .product > .woocommerce-tabs .tabs li.active a {
	color: var(--eternity-product-navy);
}

body.single-product .product > .woocommerce-tabs div.woocommerce-Tabs-panel.panel {
	padding-top: 32px;
}

/* Additional information table */
body.single-product .product > .woocommerce-tabs table.shop_attributes {
	max-width: 760px;
	margin-inline: auto;
	border: 1px solid var(--eternity-product-line);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--eternity-product-card-radius);
	overflow: hidden;
}

body.single-product .product > .woocommerce-tabs table.shop_attributes th,
body.single-product .product > .woocommerce-tabs table.shop_attributes td {
	padding: 13px 18px;
	border: 0;
	border-bottom: 1px solid var(--eternity-product-line);
	font-size: 14px;
	line-height: 1.5;
	vertical-align: top;
}

body.single-product .product > .woocommerce-tabs table.shop_attributes tr:last-child th,
body.single-product .product > .woocommerce-tabs table.shop_attributes tr:last-child td {
	border-bottom: 0;
}

body.single-product .product > .woocommerce-tabs table.shop_attributes th {
	width: 38%;
	background-color: var(--eternity-product-cream);
	font-weight: 600;
	text-align: start;
	color: var(--eternity-product-navy);
}

body.single-product .product > .woocommerce-tabs table.shop_attributes td {
	background-color: #ffffff;
	color: var(--eternity-product-text);
}

body.single-product .product > .woocommerce-tabs table.shop_attributes td p {
	margin: 0;
}

/* ============================================
   REVIEWS (WooCommerce native)
   ============================================ */

body.single-product .woocommerce-Reviews {
	max-width: 760px;
	margin-inline: auto;
	--star-rating-initial-color: var(--eternity-product-gold);
}

body.single-product .woocommerce-Reviews .woocommerce-Reviews-title,
body.single-product .woocommerce-Reviews .comment-reply-title {
	font-family: var(--eternity-product-heading-font);
	font-size: 22px;
	font-weight: 600;
	color: var(--eternity-product-navy);
}

body.single-product .woocommerce-Reviews .woocommerce-noreviews {
	color: var(--eternity-product-muted);
}

body.single-product .woocommerce-Reviews .star-rating {
	color: var(--eternity-product-gold);
}

body.single-product .woocommerce-Reviews #review_form_wrapper {
	margin-top: 24px;
	padding: 24px;
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-card-radius);
	background-color: #ffffff;
}

body.single-product .woocommerce-Reviews .comment-form label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--eternity-product-navy);
}

body.single-product .woocommerce-Reviews .comment-form .comment-form-cookies-consent label {
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--eternity-product-muted);
}

body.single-product .woocommerce-Reviews .comment-form :is(input[type="text"], input[type="email"], textarea, select) {
	--theme-form-field-border-initial-color: var(--eternity-product-field-border);
	--theme-form-field-border-focus-color: var(--eternity-product-navy);
	--theme-form-field-border-radius: var(--eternity-product-radius);
}

body.single-product .woocommerce-Reviews .comment-form .form-submit .submit {
	--theme-button-background-initial-color: var(--eternity-product-navy);
	--theme-button-background-hover-color: var(--eternity-product-navy-deep);
	min-height: 46px;
	padding: 0 28px;
	border-radius: var(--eternity-product-radius);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* ============================================
   RELATED PRODUCTS (Blocksy module, WooCommerce's own selection)
   Visibility per device stays with Blocksy's Customizer setting
   (currently hidden on tablet / mobile via ct-hidden-sm / ct-hidden-md).
   ============================================ */

body.single-product .related {
	padding-top: 48px;
	border-top: 1px solid var(--eternity-product-line);
}

body.single-product .related .ct-module-title {
	margin-bottom: 28px;
	font-family: var(--eternity-product-heading-font);
	--theme-font-size: 28px;
	font-weight: 600;
	text-align: center;
	color: var(--eternity-product-navy);
}

body.single-product .related [data-products] .product figure .ct-media-container {
	border: 1px solid var(--eternity-product-line);
	border-radius: var(--eternity-product-card-radius);
	background-color: #ffffff;
}

body.single-product .related [data-products] .woocommerce-loop-product__title {
	--theme-font-size: 15px;
	--theme-font-weight: 600;
	--theme-link-initial-color: var(--eternity-product-navy);
	--theme-link-hover-color: var(--eternity-product-gold);
	line-height: 1.4;
}

body.single-product .related [data-products] .product .price {
	color: var(--eternity-product-navy);
	font-weight: 600;
}

body.single-product .related [data-products] .entry-meta {
	--theme-link-initial-color: var(--eternity-product-muted);
	--theme-font-size: 11px;
	letter-spacing: 0.08em;
}

body.single-product .related [data-products] .ct-woo-card-actions .button {
	--theme-button-background-initial-color: #ffffff;
	--theme-button-background-hover-color: var(--eternity-product-navy);
	--theme-button-text-initial-color: var(--eternity-product-navy);
	--theme-button-text-hover-color: #ffffff;
	border: 1px solid var(--eternity-product-navy);
	border-radius: var(--eternity-product-radius);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* ============================================
   TABLET (below Blocksy's two-column breakpoint)
   ============================================ */

@media (max-width: 999.98px) {
	body.single-product {
		--theme-content-vertical-spacing: 20px;
	}

	/* Keep the gallery from filling the whole viewport on tablets */
	body.single-product .product-entry-wrapper .woocommerce-product-gallery {
		max-width: 640px;
		margin-inline: auto;
		margin-bottom: 28px;
	}

	/* If related products are later enabled on tablet / mobile in Blocksy,
	   show two compact cards per row instead of Blocksy's one. */
	body.single-product .related [data-products] {
		--shop-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ============================================
   MOBILE
   ============================================ */

@media (max-width: 689.98px) {
	body.single-product {
		--theme-content-vertical-spacing: 12px;
	}

	body.single-product .hero-section[data-type="type-1"] {
		--margin-bottom: 12px;
		margin-bottom: 12px;
	}

	body.single-product .product-entry-wrapper .woocommerce-product-gallery {
		margin-bottom: 20px;
	}

	body.single-product .product-entry-wrapper .entry-summary-items > * {
		--product-element-spacing: 16px;
	}

	body.single-product .product-entry-wrapper .entry-summary .product_title {
		--theme-font-size: 24px;
		--product-element-spacing: 8px;
	}

	body.single-product .product-entry-wrapper .entry-summary-items > .price {
		--theme-font-size: 22px;
		--product-element-spacing: 16px;
	}

	body.single-product .product-entry-wrapper .entry-summary-items > .ct-product-add-to-cart > .cart {
		--theme-button-min-height: 52px;
	}

	body.single-product .product-entry-wrapper .ct-cart-actions .quantity[data-type="type-2"] {
		--quantity-width: 110px;
	}

	body.single-product .product-entry-wrapper .eternity-product-assurance__list {
		grid-template-columns: minmax(0, 1fr);
		gap: 12px;
		padding: 14px 16px;
	}

	body.single-product .product-entry-wrapper .eternity-product-assurance__help {
		flex-direction: column;
		align-items: stretch;
		padding: 14px 16px;
	}

	body.single-product .product > .woocommerce-tabs {
		padding-top: 36px;
	}

	body.single-product .product > .woocommerce-tabs div.woocommerce-Tabs-panel.panel {
		padding-top: 24px;
	}

	body.single-product .product > .woocommerce-tabs table.shop_attributes th,
	body.single-product .product > .woocommerce-tabs table.shop_attributes td {
		padding: 11px 14px;
		font-size: 13px;
	}

	body.single-product .woocommerce-Reviews #review_form_wrapper {
		padding: 18px 16px;
	}

	body.single-product .related {
		padding-top: 36px;
	}

	body.single-product .related .ct-module-title {
		--theme-font-size: 22px;
		margin-bottom: 20px;
	}
}

/* Narrow phones: one row per highlight, label left / value right */
@media (max-width: 479.98px) {
	body.single-product .product-entry-wrapper .woocommerce-product-details__short-description .eternity-product-highlights,
	body.single-product .product-entry-wrapper .woocommerce-product-details__short-description .eternity-product-highlights[data-count="2"] {
		grid-template-columns: minmax(0, 1fr);
	}

	body.single-product .product-entry-wrapper .eternity-product-highlights__item {
		display: flex;
		align-items: baseline;
		justify-content: space-between;
		gap: 16px;
		padding: 10px 14px;
	}

	body.single-product .product-entry-wrapper .eternity-product-highlights__item + .eternity-product-highlights__item {
		border-left: 0;
		border-top: 1px solid var(--eternity-product-line);
	}

	body.single-product .product-entry-wrapper .eternity-product-highlights__label {
		flex: 0 0 auto;
		margin: 0;
	}

	body.single-product .product-entry-wrapper .eternity-product-highlights__value {
		min-width: 0;
		text-align: right;
	}

	/* Manufacturing notice: each benefit wraps to two lines here, so the
	   row padding tightens slightly to keep the notice compact. */
	body.single-product .product-entry-wrapper .eternity-manufacturing-time__item {
		padding: 8px 12px;
	}
}

@media (prefers-reduced-motion: reduce) {
	body.single-product .product-entry-wrapper .ct-cart-actions .single_add_to_cart_button,
	body.single-product .product-entry-wrapper .eternity-product-assurance__whatsapp,
	body.single-product .product-entry-wrapper form.cart .eternity-ring-size-field__select,
	body.single-product .product-entry-wrapper form.cart .eternity-engraving-field__input {
		transition: none;
	}
}
