/* ==========================================================================
   MOMKIN — Fiche produit (v2.10)
   Chargée uniquement sur les fiches produit (inc/momkin-product.php).
   Structure Blocksy conservée : galerie | résumé, puis le roman, la fiche
   technique, les avis, les produits associés et la barre d'achat flottante.
   Tokens --mk-* : style.css § 1. Mode sombre : les tokens suivent.
   ========================================================================== */

/* --- 0. Couleurs héritées du Customizer (ancien bleu #343399) -------------- */
body.single-product {
	--theme-link-initial-color: var(--mk-link);
	--theme-link-hover-color: var(--mk-link-hover);
}

/* --- 1. Mise en page ------------------------------------------------------- */
.single-product div.product .product-entry-wrapper {
	gap: clamp(2rem, 1rem + 3vw, 4.5rem);
	align-items: start;
}

/* Galerie : écrin sable, couverture entière, collante sur ordinateur */
.single-product div.product .woocommerce-product-gallery {
	padding: clamp(1rem, 0.6rem + 1.6vw, 2rem);
	border-radius: var(--mk-r-xl);
	background-color: var(--mk-sand);
}

.single-product div.product .ct-product-gallery-container {
	background: none;
	border-radius: 0;
}

.single-product .woocommerce-product-gallery .flexy-item .ct-media-container {
	border-radius: var(--mk-r-book);
	box-shadow: var(--mk-shadow-book);
	overflow: hidden;
}

.single-product .woocommerce-product-gallery .flexy-item img {
	object-fit: contain;
}

/* Vignettes (recto / verso) */
.single-product .woocommerce-product-gallery .flexy-pills {
	margin-top: var(--mk-sp-4);
}

.single-product .woocommerce-product-gallery .flexy-pills ol,
.single-product .woocommerce-product-gallery .flexy-pills {
	gap: var(--mk-sp-3);
}

.single-product .woocommerce-product-gallery .flexy-pills li,
.single-product .woocommerce-product-gallery .flexy-pills .ct-media-container {
	border-radius: var(--mk-r-sm);
	overflow: hidden;
}

.single-product .woocommerce-product-gallery .flexy-pills li {
	opacity: 0.6;
	outline: 2px solid transparent;
	outline-offset: 2px;
	transition: opacity var(--mk-transition), outline-color var(--mk-transition);
}

.single-product .woocommerce-product-gallery .flexy-pills li.active,
.single-product .woocommerce-product-gallery .flexy-pills li:hover {
	opacity: 1;
	outline-color: var(--mk-terra);
}

/* Loupe : pastille discrète au lieu de l'emoji brut */
.single-product .woocommerce-product-gallery__trigger {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background-color: var(--mk-chalk);
	box-shadow: var(--mk-shadow-sm);
	font-size: 1rem;
	text-decoration: none;
}

@media (min-width: 1000px) {
	.single-product div.product .woocommerce-product-gallery {
		position: sticky;
		top: calc(var(--mk-header-h) + 1.5rem);
	}
	.admin-bar.single-product div.product .woocommerce-product-gallery {
		top: calc(var(--mk-header-h) + 1.5rem + 32px);
	}
}

/* --- 2. Résumé ------------------------------------------------------------- */
.single-product .summary .ct-breadcrumbs {
	margin-bottom: var(--mk-sp-4);
	font-size: var(--mk-fs-xs);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--mk-text-soft);
}

.single-product .summary .ct-breadcrumbs a {
	color: var(--mk-text-soft);
	text-decoration: none;
}

.single-product .summary .ct-breadcrumbs a:hover {
	color: var(--mk-link);
}

.single-product div.product .summary .product_title {
	margin-bottom: var(--mk-sp-3);
	font-family: var(--mk-font-title);
	font-size: var(--mk-fs-h1);
	font-weight: 600;
	line-height: var(--mk-lh-tight);
	letter-spacing: -0.015em;
	color: var(--mk-heading);
	text-wrap: balance;
}

.single-product .summary .woocommerce-product-rating {
	display: flex;
	align-items: center;
	gap: var(--mk-sp-2);
	margin-bottom: var(--mk-sp-4);
	font-size: var(--mk-fs-sm);
}

.single-product .summary .woocommerce-product-rating .star-rating {
	color: var(--mk-saffron);
}

.single-product .summary .woocommerce-review-link {
	color: var(--mk-text-soft);
}

.single-product div.product .summary p.price {
	margin-bottom: var(--mk-sp-4);
	font-family: var(--mk-font-title);
	font-size: clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
	font-weight: 600;
	line-height: 1.1;
	color: var(--mk-heading);
	font-variant-numeric: lining-nums;
}

.single-product div.product .summary p.price del {
	margin-right: var(--mk-sp-2);
	font-size: 0.6em;
	font-weight: 400;
	color: var(--mk-text-soft);
	opacity: 1;
}

.single-product div.product .summary p.price ins {
	color: var(--mk-promo);
	text-decoration: none;
}

/* Repères du livre (inc/momkin-product.php) */
.mk-pfacts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mk-sp-2);
	margin: 0 0 var(--mk-sp-5);
	padding: 0;
	list-style: none;
}

.mk-pfacts li {
	margin: 0;
	padding: 0.3rem 0.75rem;
	border: 1px solid var(--mk-border);
	border-radius: var(--mk-r-pill);
	background-color: var(--mk-chalk);
	font-size: var(--mk-fs-xs);
	font-weight: 600;
	color: var(--mk-heading);
}

/* Accroche courte : son titre devient une phrase d'accroche, plus un gros titre */
.single-product .woocommerce-product-details__short-description {
	max-width: 62ch;
	font-size: var(--mk-fs-body);
	line-height: var(--mk-lh-body);
	color: var(--mk-text);
}

.single-product .woocommerce-product-details__short-description > h2,
.single-product .woocommerce-product-details__short-description > h3 {
	margin: 0 0 var(--mk-sp-3);
	font-family: var(--mk-font-title);
	font-size: var(--mk-fs-h4);
	font-style: italic;
	font-weight: 500;
	line-height: var(--mk-lh-title);
	color: var(--mk-terra-deep);
}

.single-product .woocommerce-product-details__short-description > h2 strong,
.single-product .woocommerce-product-details__short-description > h3 strong {
	font-weight: inherit;
	color: inherit;
}

.single-product .woocommerce-product-details__short-description p + p {
	margin-top: var(--mk-sp-3);
}

.single-product .summary .ct-product-divider {
	border-color: var(--mk-divider);
}

/* --- 3. Ajout au panier ---------------------------------------------------- */
.single-product .summary .ct-product-add-to-cart {
	padding: var(--mk-sp-5);
	border: 1px solid var(--mk-border);
	border-radius: var(--mk-r-lg);
	background-color: var(--mk-chalk);
}

.single-product .summary .ct-product-add-to-cart p.stock {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 var(--mk-sp-4);
	font-size: var(--mk-fs-sm);
}

.single-product .summary .ct-product-add-to-cart p.stock::before {
	content: "";
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background-color: currentColor;
}

.single-product .summary .ct-cart-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mk-sp-3);
	align-items: stretch;
}

.single-product .summary .ct-cart-actions .quantity {
	min-height: 3.25rem;
	border-color: var(--mk-border-strong);
	border-radius: var(--mk-r-md);
}

.single-product .summary .single_add_to_cart_button {
	flex: 1 1 12rem;
	min-height: 3.25rem;
	font-size: 1.0625rem;
	font-weight: 600;
	border-radius: var(--mk-r-md);
}

.single-product .summary .wc-ppcp-paylater-msg__container {
	flex-basis: 100%;
}

/* Champ anti-robots (WP Armour) : présent mais jamais visible */
.single-product .summary .altEmail_container {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Repères d'achat (inc/momkin-product.php) */
.mk-passure {
	display: grid;
	gap: var(--mk-sp-3);
	margin: var(--mk-sp-5) 0 0;
	padding: var(--mk-sp-4) 0 0;
	border-top: 1px solid var(--mk-divider);
	list-style: none;
}

.mk-passure li {
	display: flex;
	align-items: flex-start;
	gap: var(--mk-sp-3);
	margin: 0;
	font-size: var(--mk-fs-sm);
	line-height: 1.45;
	color: var(--mk-text);
}

.mk-passure .momkin-icon {
	flex: none;
	width: 1.375rem;
	height: 1.375rem;
	margin-top: 0.05rem;
	color: var(--mk-terra);
}

.mk-passure strong {
	color: var(--mk-heading);
	font-weight: 600;
}

.mk-passure small {
	display: block;
	font-size: var(--mk-fs-xs);
	color: var(--mk-text-soft);
}

.mk-passure a,
.mk-ppro a {
	color: var(--mk-link);
}

.mk-ppro {
	margin: var(--mk-sp-4) 0 0;
	padding: var(--mk-sp-3) var(--mk-sp-4);
	border-radius: var(--mk-r-md);
	background-color: var(--mk-sand);
	font-size: var(--mk-fs-sm);
	color: var(--mk-text);
}

/* Moyens de paiement (module Blocksy) */
.single-product .summary fieldset.ct-payment-methods {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--mk-sp-2);
	margin: 0;
	padding: var(--mk-sp-4) 0 0;
	border: 0;
}

.single-product .summary fieldset.ct-payment-methods legend {
	float: left;
	width: 100%;
	margin-bottom: var(--mk-sp-2);
	padding: 0;
	font-size: var(--mk-fs-xs);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--mk-text-soft);
	text-align: left;
}

/* Catégorie, partage */
.single-product .summary .product_meta {
	font-size: var(--mk-fs-xs);
	color: var(--mk-text-soft);
}

.single-product .summary .product_meta a {
	color: var(--mk-link);
}

.single-product .summary .ct-share-box .ct-module-title {
	font-family: var(--mk-font-title);
	font-style: italic;
	font-size: 1rem;
	font-weight: 500;
	color: var(--mk-heading);
}

.single-product .summary .ct-share-box a {
	display: inline-grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background-color: var(--mk-sand);
	color: var(--mk-heading);
	transition: background-color var(--mk-transition), color var(--mk-transition);
}

.single-product .summary .ct-share-box a:hover {
	background-color: var(--mk-ink);
	color: var(--mk-text-on-ink);
}

/* --- 4. Le roman, fiche technique, avis ------------------------------------ */
.single-product .woocommerce-tabs {
	margin-top: clamp(3rem, 2rem + 3vw, 5rem);
}

.single-product .woocommerce-tabs > article > div {
	padding-block: clamp(2.5rem, 2rem + 2vw, 3.5rem);
	border-top: 1px solid var(--mk-divider);
}

.single-product .woocommerce-tabs > article > div:first-child {
	border-top: 0;
	padding-top: 0;
}

/* Titres de section : Fraunces, plus de capitales bleues */
.single-product .woocommerce-tabs > article .entry-content > h2:first-of-type,
.single-product .woocommerce-tabs #tab-additional_information > h2,
.single-product section.related > :is(h2, .ct-module-title),
.single-product section.up-sells > :is(h2, .ct-module-title) {
	--theme-font-family: var(--mk-font-title);
	--theme-text-transform: none;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 var(--mk-sp-6);
	font-family: var(--mk-font-title);
	font-size: var(--mk-fs-h2);
	font-weight: 600;
	letter-spacing: -0.015em;
	line-height: var(--mk-lh-tight);
	text-transform: none;
	color: var(--mk-heading);
}

.single-product .woocommerce-tabs > article .entry-content > h2:first-of-type::before,
.single-product .woocommerce-tabs #tab-additional_information > h2::before,
.single-product section.related > :is(h2, .ct-module-title)::before,
.single-product section.up-sells > :is(h2, .ct-module-title)::before {
	content: "";
	flex: none;
	width: 28px;
	height: 2px;
	border-radius: 2px;
	background: linear-gradient(90deg, var(--mk-saffron), var(--mk-terra));
}

/* « 1 avis pour … » : sous-titre discret (Blocksy affiche déjà « Avis (n) » au-dessus) */
.single-product .woocommerce-tabs .woocommerce-Reviews-title {
	--theme-font-family: var(--mk-font-body);
	--theme-text-transform: none;
	margin: calc(var(--mk-sp-6) * -0.5) 0 var(--mk-sp-5);
	font-family: var(--mk-font-body);
	font-size: var(--mk-fs-sm);
	font-weight: 500;
	letter-spacing: 0;
	line-height: 1.5;
	text-transform: none;
	color: var(--mk-text-soft);
}

.single-product .woocommerce-tabs .woocommerce-Reviews-title span {
	font-weight: 600;
	color: var(--mk-text);
}

/* Le roman : colonne de lecture confortable */
.single-product #tab-description {
	max-width: 72ch;
	font-size: 1.125rem;
	line-height: 1.8;
	color: var(--mk-text);
}

.single-product #tab-description > h2:not(:first-of-type),
.single-product #tab-description > h3 {
	margin: var(--mk-sp-6) 0 var(--mk-sp-3);
	font-family: var(--mk-font-title);
	font-size: var(--mk-fs-h3);
	font-weight: 600;
	line-height: var(--mk-lh-title);
	text-transform: none;
	color: var(--mk-heading);
}

.single-product #tab-description > h2:not(:first-of-type) strong,
.single-product #tab-description > h3 strong {
	font-weight: inherit;
	color: inherit;
}

.single-product #tab-description p + p {
	margin-top: 1.1em;
}

.single-product #tab-description strong {
	color: var(--mk-heading);
	font-weight: 650;
}

.single-product #tab-description a {
	color: var(--mk-link);
}

/* Fiche technique : carte à deux colonnes */
.single-product #tab-additional_information table.shop_attributes {
	width: 100%;
	max-width: 40rem;
	/* Le conteneur « is-layout-constrained » de WordPress centre ses enfants
	   avec margin auto !important : on aligne la carte sur le titre. */
	margin: 0 !important;
	border: 1px solid var(--mk-border);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--mk-r-lg);
	background-color: var(--mk-chalk);
	overflow: hidden;
}

.single-product #tab-additional_information table.shop_attributes th,
.single-product #tab-additional_information table.shop_attributes td {
	padding: 0.875rem 1.25rem;
	border: 0;
	border-bottom: 1px solid var(--mk-divider);
	background: none !important;
	font-size: var(--mk-fs-sm);
	text-align: left;
	vertical-align: top;
}

.single-product #tab-additional_information table.shop_attributes tr:last-child > * {
	border-bottom: 0;
}

.single-product #tab-additional_information table.shop_attributes th {
	width: 40%;
	font-size: var(--mk-fs-xs);
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--mk-text-soft);
}

.single-product #tab-additional_information table.shop_attributes td {
	font-weight: 600;
	color: var(--mk-heading);
}

.single-product #tab-additional_information table.shop_attributes td p {
	margin: 0;
}

/* Avis */
.single-product #reviews .ct-reviews-summary {
	padding: var(--mk-sp-5);
	border: 1px solid var(--mk-border);
	border-radius: var(--mk-r-lg);
	background-color: var(--mk-chalk);
}

.single-product #reviews .ct-reviews-average-rating {
	font-family: var(--mk-font-title);
	color: var(--mk-heading);
}

.single-product #reviews .star-rating,
.single-product #reviews .stars a {
	color: var(--mk-saffron);
}

.single-product #reviews .ct-review-rating-percent-bar {
	background-color: var(--mk-divider);
	border-radius: var(--mk-r-pill);
}

.single-product #reviews .ct-review-rating-percent-bar > * {
	background-color: var(--mk-saffron);
	border-radius: inherit;
}

.single-product #reviews .commentlist {
	margin: var(--mk-sp-5) 0 0;
	padding: 0;
	list-style: none;
}

.single-product #reviews .commentlist .comment_container {
	padding: var(--mk-sp-5);
	border: 1px solid var(--mk-border);
	border-radius: var(--mk-r-lg);
	background-color: var(--mk-chalk);
}

.single-product #reviews .commentlist .comment-text {
	border: 0;
	padding: 0;
	margin: 0;
}

.single-product #reviews .woocommerce-review__author {
	font-weight: 650;
	color: var(--mk-heading);
}

.single-product #reviews .woocommerce-review__published-date {
	font-size: var(--mk-fs-xs);
	color: var(--mk-text-soft);
}

.single-product #reviews .ct-review-title {
	margin: var(--mk-sp-2) 0;
	font-family: var(--mk-font-title);
	font-size: 1.125rem;
	font-weight: 600;
	color: var(--mk-heading);
}

.single-product #reviews .description {
	font-family: var(--mk-font-title);
	font-style: italic;
	font-size: 1.0625rem;
	line-height: 1.7;
	color: var(--mk-text);
}

.single-product #reviews #respond {
	margin-top: var(--mk-sp-6);
	padding: clamp(1.25rem, 1rem + 1vw, 2rem);
	border: 1px solid var(--mk-border);
	border-radius: var(--mk-r-lg);
	background-color: var(--mk-sand);
}

.single-product #reviews #reply-title,
.single-product #reviews .comment-reply-title {
	font-family: var(--mk-font-title);
	font-size: var(--mk-fs-h4);
	font-weight: 600;
	text-transform: none;
	color: var(--mk-heading);
}

.single-product #reviews .comment-form label {
	font-weight: 600;
	color: var(--mk-heading);
}

.single-product #reviews .comment-form input[type="text"],
.single-product #reviews .comment-form input[type="email"],
.single-product #reviews .comment-form textarea {
	border: 1px solid var(--mk-border-strong);
	border-radius: var(--mk-r-md);
	background-color: var(--mk-chalk);
	color: var(--mk-text);
	font-size: var(--mk-fs-body);
}

.single-product #reviews .comment-form input:focus,
.single-product #reviews .comment-form textarea:focus {
	border-color: var(--mk-lagoon);
	box-shadow: 0 0 0 3px rgba(31, 122, 140, 0.22);
	outline: none;
}

.single-product #reviews .form-submit .submit {
	min-height: 3rem;
	padding-inline: 1.75rem;
	border-radius: var(--mk-r-md);
	background-color: var(--mk-terra);
	color: var(--mk-on-accent);
	font-weight: 600;
}

.single-product #reviews .form-submit .submit:hover {
	background-color: var(--mk-terra-deep);
}

/* --- 5. Produits associés ------------------------------------------------- */
.single-product section.related,
.single-product section.up-sells {
	margin-top: clamp(3rem, 2rem + 3vw, 5rem);
	padding-top: clamp(2.5rem, 2rem + 2vw, 3.5rem);
	border-top: 1px solid var(--mk-divider);
}

.single-product :is(section.related, section.up-sells) .woocommerce-loop-product__title,
.single-product :is(section.related, section.up-sells) .woocommerce-loop-product__title a {
	font-family: var(--mk-font-title);
	font-size: 1.125rem;
	font-weight: 600;
	text-transform: none;
	color: var(--mk-heading);
}

/* --- 6. Barre d'achat flottante (Blocksy) ---------------------------------- */
.single-product .ct-floating-bar {
	background-color: var(--mk-chalk);
	border-bottom: 1px solid var(--mk-border);
	box-shadow: var(--mk-shadow-md);
}

.single-product .ct-floating-bar .ct-media-container {
	border-radius: var(--mk-r-book);
	background-color: var(--mk-sand);
}

.single-product .ct-floating-bar .ct-media-container {
	overflow: hidden;
}

/* La vignette WooCommerce (100 × 100) est déjà recadrée en carré :
   on la garde carrée, sans bandes vides. */
.single-product .ct-floating-bar .ct-media-container img {
	object-fit: cover;
}

.single-product .ct-floating-bar .product-title,
.single-product .ct-floating-bar .ct-floating-bar-title {
	font-family: var(--mk-font-title);
	font-weight: 600;
	color: var(--mk-heading);
}

.single-product .ct-floating-bar .single_add_to_cart_button,
.single-product .ct-floating-bar .button {
	border-radius: var(--mk-r-md);
	font-weight: 600;
}

/* --- 7. Mobile ------------------------------------------------------------- */
@media (max-width: 999px) {
	.single-product div.product .woocommerce-product-gallery {
		max-width: 30rem;
		margin-inline: auto;
	}
}

@media (max-width: 640px) {
	.single-product .summary .ct-product-add-to-cart {
		padding: var(--mk-sp-4);
	}
	.single-product .summary .single_add_to_cart_button {
		flex-basis: 100%;
	}
	.single-product #tab-description {
		font-size: var(--mk-fs-body);
	}
	.single-product #tab-additional_information table.shop_attributes th,
	.single-product #tab-additional_information table.shop_attributes td {
		padding: 0.75rem 1rem;
	}
	/* Barre flottante : titre + prix sur une ligne chacun, sans la mention de stock */
	.single-product .ct-floating-bar .stock {
		display: none;
	}
	.single-product .ct-floating-bar .product-title {
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
}

@media (max-width: 640px), (hover: none) {
	/* Produits associés : Blocksy masque le bouton « Ajouter au panier »
	   jusqu'au survol (réglage « auto-hide »), ce qui le rend invisible au
	   doigt. Sur écran tactile et mobile, on l'affiche en pleine largeur sous le prix. */
	.single-product :is(section.related, section.up-sells) .ct-woo-card-actions {
		flex-wrap: wrap;
		justify-content: center;
		row-gap: var(--mk-sp-2);
	}
	.single-product :is(section.related, section.up-sells) .ct-woo-card-actions .price {
		flex: 1 1 100%;
		justify-content: center;
		opacity: 1 !important;
		transform: none !important;
	}
	.single-product :is(section.related, section.up-sells) .ct-woo-card-actions .price::after {
		display: none;
	}
	.single-product :is(section.related, section.up-sells) .ct-woo-card-actions .button {
		position: static !important;
		flex: 1 1 100%;
		justify-content: center;
		min-height: 2.75rem;
		padding: 0.5rem 0.75rem !important;
		border-radius: var(--mk-r-md);
		background-color: var(--mk-terra) !important;
		color: #fff !important;
		font-size: var(--mk-fs-sm) !important;
		font-weight: 600;
		line-height: 1.2;
		text-align: center;
		opacity: 1 !important;
		visibility: visible !important;
		transform: none !important;
	}
}

@media (max-width: 480px) {
	.single-product :is(section.related, section.up-sells) li.product :is(.woocommerce-loop-product__title, .ct-woo-card-actions, .ct-woo-card-extra) {
		padding-inline: 0.75rem !important;
	}
	.single-product :is(section.related, section.up-sells) .woocommerce-loop-product__title,
	.single-product :is(section.related, section.up-sells) .woocommerce-loop-product__title a {
		font-size: 1rem;
	}
}

/* --- 8. Accessibilité, impression ------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
	.single-product .woocommerce-product-gallery .flexy-pills li,
	.single-product .summary .ct-share-box a {
		transition: none;
	}
}

@media print {
	.single-product .ct-floating-bar,
	.single-product .ct-share-box,
	.single-product .mk-ppro,
	.single-product section.related {
		display: none !important;
	}
	.single-product div.product .woocommerce-product-gallery {
		position: static;
	}
}
