/**
 * Fiche produit du template "New Shop".
 * Charge uniquement sur les produits de la categorie ciblee, apres
 * shop-new-shop.css dont elle reprend les jetons et la carte produit.
 */

.tvmf-product {
	--tvmf-ink: #111111;
	--tvmf-line: #e3e3e3;
	--tvmf-muted: #8a8a8a;
	--tvmf-accent: #b08d57;
	--tvmf-surface: #f6f4f1;

	width: 100%;
	max-width: 1360px;
	margin: 0 auto;
	padding: 24px 24px 72px;
	color: var(--tvmf-ink);
	box-sizing: border-box;
}

.tvmf-product *,
.tvmf-product *::before,
.tvmf-product *::after {
	box-sizing: border-box;
}

/* ------------------------------------------------------------------ */
/* Fil d'ariane                                                        */
/* ------------------------------------------------------------------ */

.tvmf-product__crumbs {
	margin-bottom: 22px;
	color: var(--tvmf-muted);
	font-size: 13px;
}

.tvmf-product__crumbs a {
	color: var(--tvmf-muted);
	text-decoration: none;
}

.tvmf-product__crumbs a:hover,
.tvmf-product__crumbs a:focus {
	color: var(--tvmf-ink);
}

.tvmf-product__crumb-sep {
	margin: 0 8px;
	color: #c4c4c4;
}

.tvmf-product__crumb-current {
	color: var(--tvmf-ink);
}

/* ------------------------------------------------------------------ */
/* Galerie                                                             */
/* ------------------------------------------------------------------ */

.tvmf-product__main {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: 48px;
	align-items: start;
	padding-bottom: 8px;
}

.tvmf-product__gallery {
	position: sticky;
	top: 300px;
	display: grid;
	grid-template-columns: 78px minmax(0, 1fr);
	gap: 12px;
	min-width: 0;
}

/* Sans vignette, le visuel occupe toute la colonne. */
.tvmf-product__gallery--single {
	grid-template-columns: minmax(0, 1fr);
}

.tvmf-product__thumbs {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.tvmf-product__thumb {
	position: relative;
	width: 78px;
	max-width: 100%;
	padding: 0;
	border: 1px solid var(--tvmf-line);
	background: var(--tvmf-surface);
	cursor: pointer;
	overflow: hidden;
}

.tvmf-product__thumb img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
}

.tvmf-product__thumb.is-active {
	border-color: var(--tvmf-ink);
}

.tvmf-product__stage {
	position: relative;
	margin: 0;
	background: var(--tvmf-surface);
	min-width: 0;
	overflow: hidden;
}

.tvmf-product__stage-image {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
}

/* Loupe au survol : un calque pose sur le visuel, qui montre la version
   pleine resolution recadree autour du curseur. La classe n'est posee que
   si le pointeur le permet, donc jamais sur un ecran tactile. */

.tvmf-product__stage--zoomable {
	cursor: zoom-in;
}

.tvmf-product__zoom {
	position: absolute;
	inset: 0;
	background-repeat: no-repeat;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.15s ease;
}

.tvmf-product__stage.is-zooming .tvmf-product__zoom {
	opacity: 1;
}

.tvmf-product__stage-hint {
	position: absolute;
	left: 14px;
	bottom: 12px;
	padding: 4px 9px;
	background: rgba(255, 255, 255, 0.9);
	color: var(--tvmf-muted);
	font-size: 11px;
	transition: opacity 0.15s ease;
}

/* Une fois la loupe ouverte, le rappel n'a plus lieu d'etre. */
.tvmf-product__stage.is-zooming .tvmf-product__stage-hint {
	opacity: 0;
}

.tvmf-product__stage-hint[hidden] {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	.tvmf-product__zoom,
	.tvmf-product__stage-hint {
		transition: none;
	}
}

.tvmf-product__stage-badge,
.tvmf-product__stage-sale {
	padding: 5px 10px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.02em;
}

/* Colonne du coin haut droit : badge, promotion, bouton video. */
.tvmf-product__stage-corner {
	position: absolute;
	top: 14px;
	right: 14px;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 8px;
	pointer-events: none;
}

.tvmf-product__stage-corner > * {
	pointer-events: auto;
}

.tvmf-product__stage-badge {
	background: var(--tvmf-ink);
	color: #ffffff;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.tvmf-product__stage-badge--featured {
	background: var(--tvmf-accent);
}

.tvmf-product__stage-sale {
	background: var(--tvmf-accent);
	color: #ffffff;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

/* ------------------------------------------------------------------ */
/* Video produit : bouton en haut a droite du visuel et popup          */
/* ------------------------------------------------------------------ */

.tvmf-product__video-open {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 13px 20px;
	border: 0;
	border-radius: 0;
	background: var(--tvmf-ink);
	color: #ffffff;
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.tvmf-product__video-open:hover,
.tvmf-product__video-open:focus-visible {
	background: var(--tvmf-accent);
}

.tvmf-product__video-open:focus-visible {
	outline: 2px solid var(--tvmf-ink);
	outline-offset: 2px;
}

.tvmf-product__video-open[hidden] {
	display: none;
}

/* Au-dessus du bouton, ni loupe ni curseur de zoom. */
.tvmf-product__stage.is-over-video .tvmf-product__zoom {
	opacity: 0;
}

.tvmf-product__video {
	/* 16/9 qui tient aussi en hauteur, croix de fermeture comprise. */
	width: min(960px, calc(100vw - 32px), calc((100vh - 128px) * 16 / 9));
	max-width: none;
	max-height: none;
	padding: 0;
	border: 0;
	background: #000000;
	overflow: visible;
}

.tvmf-product__video::backdrop {
	background: rgba(17, 17, 17, 0.85);
}

.tvmf-product__video-frame {
	position: relative;
	aspect-ratio: 16 / 9;
}

.tvmf-product__video-frame iframe,
.tvmf-product__video-frame video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	background: #000000;
}

.tvmf-product__video-close {
	position: absolute;
	right: 0;
	bottom: 100%;
	width: 40px;
	height: 40px;
	margin-bottom: 8px;
	padding: 0;
	border: 0;
	background: transparent;
	color: #ffffff;
	font-size: 34px;
	line-height: 1;
	cursor: pointer;
}

.tvmf-product__video-close:focus-visible {
	outline: 2px solid #ffffff;
}

/* Pas de defilement de la page derriere la popup. */
html.tvmf-video-open {
	overflow: hidden;
}

@media (max-width: 560px) {
	.tvmf-product__video-open {
		padding: 10px 14px;
		font-size: 13px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tvmf-product__video-open {
		transition: none;
	}
}

/* ------------------------------------------------------------------ */
/* Pack : contenu affiche au-dessus du bouton d'ajout au panier         */
/* ------------------------------------------------------------------ */

.tvmf-product .tvmf-pack {
	margin: 0 0 20px;
	padding: 16px 18px;
	border: 1px solid var(--tvmf-line);
	background: var(--tvmf-surface);
}

.tvmf-product .tvmf-pack__title {
	margin: 0 0 10px;
	padding: 0;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.tvmf-product .tvmf-pack__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tvmf-product .tvmf-pack__item {
	margin: 0 0 6px;
	padding: 0;
	font-size: 14px;
	list-style: none;
}

.tvmf-product .tvmf-pack__item a {
	color: var(--tvmf-ink);
}

.tvmf-product .tvmf-pack__qty {
	display: inline-block;
	min-width: 2.2em;
	color: var(--tvmf-muted);
	font-variant-numeric: tabular-nums;
}

.tvmf-product .tvmf-pack__saving {
	margin: 12px 0 0;
	padding: 10px 0 0;
	border-top: 1px solid var(--tvmf-line);
	font-size: 14px;
}

.tvmf-product .tvmf-pack__saving del {
	color: var(--tvmf-muted);
}

.tvmf-product .tvmf-pack__saving strong {
	color: var(--tvmf-accent);
}

/* ------------------------------------------------------------------ */
/* Colonne de droite                                                   */
/* ------------------------------------------------------------------ */

.tvmf-product__summary {
	min-width: 0;
}

.tvmf-product__eyebrow {
	margin: 0;
	color: var(--tvmf-ink);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.tvmf-product__title {
	margin: 10px 0 8px;
	padding: 0;
	font-size: 30px;
	font-weight: 600;
	line-height: 1.18;
}

.tvmf-product__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 16px;
	margin: 0;
	color: var(--tvmf-muted);
	font-size: 13px;
}

.tvmf-product__meta b {
	color: var(--tvmf-ink);
	font-weight: 600;
}

.tvmf-product__lead {
	margin-top: 18px;
	max-width: 62ch;
	color: #3d3c3a;
	font-size: 15px;
}

.tvmf-product__lead p {
	margin: 0 0 10px;
}

.tvmf-product__lead p:last-child {
	margin-bottom: 0;
}

/* Prix */

.tvmf-product__pricebox {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	margin-top: 22px;
	padding: 18px 0;
	border-top: 1px solid var(--tvmf-line);
	border-bottom: 1px solid var(--tvmf-line);
}

.tvmf-product__price-label {
	margin: 0;
	color: var(--tvmf-muted);
	font-size: 12px;
}

.tvmf-product__price {
	margin: 2px 0 0;
	font-size: 32px;
	font-weight: 700;
	line-height: 1.1;
	font-variant-numeric: tabular-nums;
}

.tvmf-product__price small {
	margin-left: 4px;
	color: var(--tvmf-muted);
	font-size: 13px;
	font-weight: 500;
}

.tvmf-product__price del {
	margin-right: 8px;
	color: var(--tvmf-muted);
	font-size: 18px;
	font-weight: 400;
}

.tvmf-product__price-tax {
	margin: 4px 0 0;
	color: var(--tvmf-muted);
	font-size: 12px;
	font-variant-numeric: tabular-nums;
}

.tvmf-product__availability {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	color: #3d3c3a;
	font-size: 13px;
}

.tvmf-product__dot {
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--tvmf-muted);
}

.tvmf-product__availability--instock .tvmf-product__dot {
	background: #3f9d6a;
}

.tvmf-product__availability--backorder .tvmf-product__dot {
	background: var(--tvmf-accent);
}

.tvmf-product__availability--outofstock .tvmf-product__dot {
	background: #c0554a;
}

.tvmf-product__shipping {
	color: var(--tvmf-muted);
}

/* ------------------------------------------------------------------ */
/* Configurateur et ajout au panier                                    */
/* ------------------------------------------------------------------ */

/* Le bloc reste celui de WooCommerce : on ne change que son habillage. */

.tvmf-product__cart {
	margin-top: 24px;
}

.tvmf-product__cart .variations {
	width: 100%;
	margin: 0 0 22px;
	border: 0;
	border-collapse: collapse;
}

.tvmf-product__cart .variations tbody,
.tvmf-product__cart .variations tr,
.tvmf-product__cart .variations th,
.tvmf-product__cart .variations td {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	text-align: left;
}

.tvmf-product__cart .variations tr + tr {
	margin-top: 22px;
}

.tvmf-product__cart .variations .label label {
	display: block;
	margin: 0 0 10px;
	color: var(--tvmf-ink);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.tvmf-product__cart .variations select {
	width: 100%;
	max-width: 100%;
	padding: 11px 12px;
	border: 1px solid var(--tvmf-line);
	background: #ffffff;
	color: var(--tvmf-ink);
	font-size: 14px;
}

/* Liste deroulante remplacee par des boutons : elle reste dans le DOM
   pour WooCommerce, mais sort du flux visuel. */
.tvmf-product__cart .variations select.tvmf-is-enhanced {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	white-space: nowrap;
}

.tvmf-product__segments {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 8px;
}

.tvmf-product__segment {
	padding: 11px 12px;
	border: 1px solid var(--tvmf-line);
	background: #ffffff;
	color: var(--tvmf-ink);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.3;
	text-align: left;
	cursor: pointer;
}

.tvmf-product__segment.is-active {
	border-color: var(--tvmf-ink);
	box-shadow: inset 0 0 0 1px var(--tvmf-ink);
}

.tvmf-product__segment[disabled] {
	color: #c4c4c4;
	cursor: not-allowed;
	text-decoration: line-through;
}

.tvmf-product__swatches {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.tvmf-product__swatch {
	position: relative;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 1px solid var(--tvmf-line);
	border-radius: 50%;
	background: var(--tvmf-swatch, #d8d8d8);
	cursor: pointer;
}

.tvmf-product__swatch.is-active::after {
	content: "";
	position: absolute;
	inset: -5px;
	border: 1.5px solid var(--tvmf-ink);
	border-radius: 50%;
}

.tvmf-product__swatch[disabled] {
	opacity: 0.35;
	cursor: not-allowed;
}

/* Valeur retenue, posee a droite du libelle par le script. */
.tvmf-product__option-value {
	float: right;
	color: var(--tvmf-muted);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
}

.tvmf-product__cart .reset_variations {
	display: inline-block;
	margin-top: 10px;
	color: var(--tvmf-muted);
	font-size: 12px;
}

/* Le prix de la variation est deja repris dans le bloc prix plus haut. */
.tvmf-product__cart .woocommerce-variation-price,
.tvmf-product__cart .woocommerce-variation-availability {
	display: none;
}

.tvmf-product__cart .woocommerce-variation-description {
	margin-bottom: 16px;
	color: #3d3c3a;
	font-size: 13px;
}

/* Ligne quantite + bouton */

.tvmf-product__cart form.cart,
.tvmf-product__cart .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 10px;
	margin: 0;
}

.tvmf-product__cart form.variations_form {
	display: block;
}

.tvmf-product__cart .quantity {
	display: flex;
	flex: 0 0 auto;
	align-items: stretch;
	border: 1px solid var(--tvmf-line);
}

.tvmf-product__cart .quantity input.qty {
	width: 52px;
	padding: 0;
	border: 0;
	background: #ffffff;
	color: var(--tvmf-ink);
	font-size: 14px;
	font-weight: 600;
	text-align: center;
	-moz-appearance: textfield;
}

.tvmf-product__cart .quantity input.qty::-webkit-outer-spin-button,
.tvmf-product__cart .quantity input.qty::-webkit-inner-spin-button {
	margin: 0;
	-webkit-appearance: none;
}

.tvmf-product__qty-step {
	width: 40px;
	padding: 0;
	border: 0;
	background: #ffffff;
	color: var(--tvmf-ink);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
}

.tvmf-product__cart button.single_add_to_cart_button,
.tvmf-product__cart .single_add_to_cart_button {
	flex: 1 1 200px;
	padding: 15px 18px;
	border: 1px solid var(--tvmf-ink);
	border-radius: 0;
	background: var(--tvmf-ink);
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	text-transform: none;
	cursor: pointer;
	transition: background-color 0.2s ease;
}

.tvmf-product__cart button.single_add_to_cart_button:hover,
.tvmf-product__cart button.single_add_to_cart_button:focus {
	background: var(--tvmf-accent);
	border-color: var(--tvmf-accent);
	color: #ffffff;
}

.tvmf-product__cart button.single_add_to_cart_button.disabled,
.tvmf-product__cart button.single_add_to_cart_button:disabled {
	background: #bdbdbd;
	border-color: #bdbdbd;
	cursor: not-allowed;
}

button.single_add_to_cart_button.button.alt.disabled.wc-variation-selection-needed {
	border: 2px solid #000;
	border-radius: 0;
	color: #000 !important;
	font-size: 16px;
	opacity: 1;
}

.tvmf-product__cart .stock {
	margin: 10px 0 0;
	font-size: 13px;
}

/* Certifications */

.tvmf-product__certifications {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 35px;
	align-items: center;
	margin: 26px 0 0;
	padding: 0 10px;
	list-style: none;
}

.tvmf-product__certifications li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tvmf-product__certifications img {
	display: block;
	width: 100%;
	height: auto;
	max-width: 320px;
	justify-self: center;
	/* L'image n'est pas l'element de grille (c'est le li) : le centrage passe par les marges. */
	margin: 0 auto;
}

/* Reassurance */

.tvmf-product__reassurance {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1px;
	margin: 26px 0 0;
	padding: 0;
	border: 1px solid var(--tvmf-line);
	background: var(--tvmf-line);
	list-style: none;
}

.tvmf-product__reassurance li {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	margin: 0;
	padding: 13px 14px;
	background: #ffffff;
	color: #3d3c3a;
	font-size: 12px;
	line-height: 1.45;
	list-style: none;
}

.tvmf-product__reassurance b {
	display: block;
	color: var(--tvmf-ink);
	font-size: 13px;
}

.tvmf-product__icon {
	flex: 0 0 auto;
	margin-top: 2px;
	color: var(--tvmf-ink);
}

/* ------------------------------------------------------------------ */
/* Bandes du bas : onglets, similaires, devis                          */
/* ------------------------------------------------------------------ */

.tvmf-product__band {
	margin-top: 52px;
	padding-top: 52px;
	border-top: 1px solid var(--tvmf-line);
}

.tvmf-product__band-title {
	margin: 0 0 6px;
	padding: 0;
	font-size: 21px;
	font-weight: 600;
}

.tvmf-product__band-sub {
	margin: 0 0 26px;
	color: var(--tvmf-muted);
	font-size: 13px;
}

.tvmf-product__tablist {
	display: flex;
	gap: 28px;
	margin-bottom: 30px;
	border-bottom: 1px solid var(--tvmf-line);
	overflow-x: auto;
	white-space: nowrap;
}

.tvmf-product__tab {
	padding: 0 0 12px;
	border-bottom: 2px solid transparent;
	color: var(--tvmf-muted);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.tvmf-product__tab.is-active,
.tvmf-product__tab:hover,
.tvmf-product__tab:focus {
	color: var(--tvmf-ink);
}

.tvmf-product__tab.is-active {
	border-bottom-color: var(--tvmf-ink);
}

.tvmf-product__pane + .tvmf-product__pane {
	margin-top: 36px;
}

.tvmf-product__pane-title {
	margin: 0 0 16px;
	padding: 0;
	font-size: 18px;
	font-weight: 600;
}

/* Une fois les onglets actifs, le titre du panneau fait doublon. */
.tvmf-product__band.is-enhanced .tvmf-product__pane-title {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	white-space: nowrap;
}

.tvmf-product__band.is-enhanced .tvmf-product__pane + .tvmf-product__pane {
	margin-top: 0;
}

.tvmf-product__pane[hidden] {
	display: none;
}

.tvmf-product__pane-body {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
	gap: 48px;
	align-items: start;
}

.tvmf-product__pane-body h3 {
	margin: 0 0 12px;
	padding: 0;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.tvmf-product__prose {
	color: #3d3c3a;
	font-size: 14px;
	line-height: 1.6;
}

.tvmf-product__prose p {
	margin: 0 0 14px;
	max-width: 64ch;
}

.tvmf-product__bullets {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tvmf-product__bullets li {
	position: relative;
	margin: 0;
	padding-left: 18px;
	color: #3d3c3a;
	font-size: 14px;
	list-style: none;
}

.tvmf-product__bullets li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 10px;
	width: 8px;
	height: 1.5px;
	background: var(--tvmf-accent);
}

.tvmf-product__specs {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}

.tvmf-product__specs th,
.tvmf-product__specs td {
	padding: 10px 0;
	border-bottom: 1px solid #eeece8;
	text-align: left;
	vertical-align: top;
}

.tvmf-product__specs th {
	width: 44%;
	padding-right: 16px;
	color: var(--tvmf-muted);
	font-weight: 500;
}

.tvmf-product__specs td {
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.tvmf-product__docs {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.tvmf-product__doc {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	border: 1px solid var(--tvmf-line);
	color: var(--tvmf-ink);
	font-size: 13px;
	text-decoration: none;
}

.tvmf-product__doc:hover,
.tvmf-product__doc:focus {
	border-color: var(--tvmf-ink);
}

.tvmf-product__doc-ext {
	flex: 0 0 auto;
	padding: 3px 6px;
	background: var(--tvmf-ink);
	color: #ffffff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.06em;
}

.tvmf-product__doc-title {
	flex: 1 1 auto;
	min-width: 0;
}

.tvmf-product__doc-size {
	flex: 0 0 auto;
	color: var(--tvmf-muted);
	font-size: 12px;
}

/* Devis */

.tvmf-product__quote {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) auto;
	gap: 24px;
	align-items: center;
	margin-top: 52px;
	padding: 40px;
	background: var(--tvmf-ink);
	color: #ffffff;
}

.tvmf-product__quote h2 {
	margin: 0 0 8px;
	padding: 0;
	color: #ffffff;
	font-size: 22px;
	font-weight: 600;
}

.tvmf-product__quote p {
	margin: 0;
	max-width: 58ch;
	color: #c9c7c2;
	font-size: 14px;
}

.tvmf-product__quote-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.tvmf-product__quote-cta {
	padding: 13px 18px;
	border: 1px solid #ffffff;
	background: #ffffff;
	color: var(--tvmf-ink);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}

.tvmf-product__quote-cta--ghost {
	background: transparent;
	color: #ffffff;
	font-weight: 600;
}

.tvmf-product__quote-cta:hover,
.tvmf-product__quote-cta:focus {
	background: var(--tvmf-accent);
	border-color: var(--tvmf-accent);
	color: #ffffff;
}

/* ------------------------------------------------------------------ */
/* Barre fixe de petit ecran                                           */
/* ------------------------------------------------------------------ */

.tvmf-product__bar {
	display: none;
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 20;
	align-items: center;
	gap: 12px;
	padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid var(--tvmf-line);
	background: #ffffff;
}

.tvmf-product__bar-price {
	min-width: 0;
	font-size: 17px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}

.tvmf-product__bar-price small {
	color: var(--tvmf-muted);
	font-size: 11px;
	font-weight: 500;
}

.tvmf-product__bar-name {
	display: block;
	overflow: hidden;
	color: var(--tvmf-muted);
	font-size: 11px;
	font-weight: 400;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.tvmf-product__bar-cta {
	flex: 0 0 auto;
	margin-left: auto;
	padding: 12px 18px;
	border: 1px solid var(--tvmf-ink);
	background: var(--tvmf-ink);
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
}

/* ------------------------------------------------------------------ */
/* Onglets "Details de la gamme" et "Nos realisations"                 */
/* ------------------------------------------------------------------ */

/* Ces panneaux n'ont qu'un bloc : il occupe toute la largeur. */
.tvmf-product__pane-body--full {
	grid-template-columns: minmax(0, 1fr);
}

.tvmf-product__prose img {
	max-width: 100%;
	height: auto;
}

.tvmf-product__prose ul,
.tvmf-product__prose ol {
	margin: 0 0 14px;
	padding-left: 1.2em;
}

.tvmf-product__photos {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tvmf-product__photos li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tvmf-product__photo {
	display: block;
	overflow: hidden;
	background: var(--tvmf-surface);
	cursor: zoom-in;
}

.tvmf-product__photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform 0.3s ease;
}

.tvmf-product__photo:hover img,
.tvmf-product__photo:focus-visible img {
	transform: scale(1.04);
}

.tvmf-product__photo:focus-visible {
	outline: 2px solid var(--tvmf-ink);
	outline-offset: 2px;
}

/* Visionneuse : meme habillage que la popup video. */
.tvmf-product__lightbox {
	max-width: calc(100vw - 32px);
	max-height: none;
	padding: 0;
	border: 0;
	background: transparent;
	overflow: visible;
}

.tvmf-product__lightbox::backdrop {
	background: rgba(17, 17, 17, 0.9);
}

.tvmf-product__lightbox-image {
	display: block;
	max-width: min(1200px, calc(100vw - 32px));
	max-height: calc(100vh - 120px);
	width: auto;
	height: auto;
	margin: 0 auto;
}

.tvmf-product__lightbox-close,
.tvmf-product__lightbox-nav {
	position: fixed;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	background: transparent;
	color: #ffffff;
	font-size: 28px;
	line-height: 1;
	cursor: pointer;
}

.tvmf-product__lightbox-close {
	top: 12px;
	right: 12px;
	font-size: 34px;
}

.tvmf-product__lightbox-nav {
	top: 50%;
	transform: translateY(-50%);
	background: rgba(0, 0, 0, 0.35);
}

.tvmf-product__lightbox-nav--prev {
	left: 12px;
}

.tvmf-product__lightbox-nav--next {
	right: 12px;
}

.tvmf-product__lightbox-nav[hidden] {
	display: none;
}

.tvmf-product__lightbox-close:focus-visible,
.tvmf-product__lightbox-nav:focus-visible {
	outline: 2px solid #ffffff;
}

.tvmf-product__lightbox-count {
	margin: 10px 0 0;
	color: #ffffff;
	font-size: 13px;
	text-align: center;
}

@media (prefers-reduced-motion: reduce) {
	.tvmf-product__photo img {
		transition: none;
	}
}

/* ------------------------------------------------------------------ */
/* Adaptations                                                         */
/* ------------------------------------------------------------------ */

@media (max-width: 1100px) {
	.tvmf-product__main {
		gap: 32px;
	}
}

@media (max-width: 980px) {
	.tvmf-product__main {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	.tvmf-product__gallery {
		position: static;
	}

	.tvmf-product__pane-body {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}
}

@media (max-width: 760px) {
	.tvmf-product {
		padding: 16px 16px 88px;
	}

	.tvmf-product__title {
		font-size: 24px;
	}

	.tvmf-product__quote {
		grid-template-columns: minmax(0, 1fr);
		padding: 28px 22px;
	}

	/* La barre fixe n'apparait que si le script l'a activee. */
	.tvmf-product__bar:not([hidden]) {
		display: flex;
	}
}

@media (max-width: 560px) {
	.tvmf-product__gallery {
		grid-template-columns: minmax(0, 1fr);
	}

	.tvmf-product__thumbs {
		order: 2;
		flex-direction: row;
		flex-wrap: wrap;
	}

	.tvmf-product__reassurance,
	.tvmf-product__certifications {
		grid-template-columns: minmax(0, 1fr);
	}

	.tvmf-product__cart form.cart,
	.tvmf-product__cart .woocommerce-variation-add-to-cart {
		flex-direction: column;
		align-items: stretch;
	}

	.tvmf-product__cart .quantity {
		align-self: flex-start;
	}

	/* En colonne, la base de 200px deviendrait une hauteur : le bouton reprend la sienne. */
	.tvmf-product__cart button.single_add_to_cart_button,
	.tvmf-product__cart .single_add_to_cart_button {
		flex: 0 0 auto;
	}
}

/* ------------------------------------------------------------------ */
/* Surcharges de Divi                                                  */
/* ------------------------------------------------------------------ */

/**
 * Meme filet vertical que sur le catalogue : Divi le trace pour sa sidebar,
 * qui n'existe pas ici. Voir shop-new-shop.css pour le detail.
 */
.tvmf-single-product.et_right_sidebar #main-content .container:before,
.tvmf-single-product.et_left_sidebar #main-content .container:before {
	display: none !important;
}

/* Divi arrondit et colore les boutons WooCommerce : la fiche garde ses angles droits. */
.tvmf-single-product .tvmf-product__cart .button {
	border-radius: 0;
}

/**
 * Divi elargit le padding au survol pour faire glisser sa fleche ::after.
 * Le bouton de demande de devis garde le meme padding dans les deux etats.
 */
.tvmf-single-product a.add-request-quote-button.button,
.tvmf-single-product a.add-request-quote-button.button:hover {
	padding: 0.3em 1em !important;
}

.tvmf-single-product a.add-request-quote-button.button:after {
	display: none !important;
}

.tvmf-single-product.woocommerce button.button.alt:hover:after,
.tvmf-single-product.woocommerce-page button.button.alt:hover:after {
	font-size: 26px;
}
