/**
 * Overige WooCommerce-beelden (winkelwagen, quick view, …): contain waar nodig.
 *
 * Productkaarten: beeldvak **vierkant (1:1)** + witte achtergrond + rechte hoeken.
 * Foto’s op kaarten: **contain** (volledige foto, niets afgesneden); shop/archief: **object-position: left center**, ook op mobiel.
 * Beide img’s absoluut = geen sprong bij hover; geen scale(1.05) bij hover (zou bij contain knippen).
 * Producttitels op kaarten: geen line-clamp (volledige titel, woorden afbreken waar nodig).
 */

/* Vierkant productkaart-beeldvak (shop, archief, homepage/Elementor). */
html body .card-product .card-product-wrapper,
.card-product .card-product-wrapper {
	aspect-ratio: 1 / 1 !important;
	width: 100% !important;
	max-width: 100% !important;
	min-height: 0 !important;
	border-radius: 0 !important;
	background-color: #ffffff !important;
}

/* Vlak voor foto’s vult het vierkant; beide plaatjes identiek gepositioneerd (ivm hover). */
html body .card-product .card-product-wrapper > a.product-img,
html body .card-product .card-product-wrapper .product-img {
	display: block !important;
	position: relative !important;
	width: 100% !important;
	height: 100% !important;
	min-height: 0 !important;
	max-height: 100% !important;
	overflow: hidden !important;
	box-sizing: border-box !important;
}

html body .card-product .card-product-wrapper .product-img img.img-product,
html body .card-product .card-product-wrapper .product-img img.img-hover {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	max-height: 100% !important;
	margin: 0 !important;
	object-fit: contain !important;
	object-position: center !important;
	border-radius: 0 !important;
	display: block !important;
}

html body .card-product .card-product-wrapper .product-img img.img-product {
	z-index: 0;
}

html body .card-product .card-product-wrapper .product-img img.img-hover {
	z-index: 1;
}

html body .card-product .card-product-wrapper:hover .product-img .img-product,
html body .card-product .card-product-wrapper:hover .product-img .img-hover {
	-webkit-transform: none !important;
	transform: none !important;
}

/* Alleen buiten productkaart-grids: volledige illustratie zichtbaar (contain). */
.tf-product-media-thumbs .swiper-slide .item img,
.flat-wrap-media-product .tf-product-media-main .item img,
.flat-single-grid .item img,
.tf-sticky-btn-atc .tf-sticky-atc-img img,
.tf-compare-item .tf-compare-image img,
#live-sales-container .live-notification .live-notification-featured img,
.modal-quick-view .tf-product-media-wrap .item img,
.tf-bundle-product-item .bundle-image img,
.table-page-cart .tf-cart-item_product .img-box img,
.woocommerce-view-order .order-box .order-item .img-product img,
.tf-page-cart-sidebar .order-box .order-item .img-product img,
.offcanvas-search.type-search-product .list-articals .item .img-box img {
	width: 100% !important;
	height: auto !important;
	object-fit: contain !important;
	object-position: center !important;
}

/*
 * Grotere productbeelden + minder wit tussen kaarten:
 * smallere grid-gaps; op desktop tf-col-3 = drie kolommen; tf-col-4 blijft drie kolommen (i.p.v. vier) voor iets grotere kaarten.
 */
html body #gridLayout.tf-grid-layout,
html body .wrapper-shop.tf-grid-layout,
html body .content-woocommerce .products-content .tf-grid-layout,
html body .elementor-vineta-widget-wrapper .tf-grid-layout,
html body .elementor-vineta-widget-wrapper .wrapper-shop.tf-grid-layout {
	column-gap: 4px !important;
	row-gap: 6px !important;
}

/* Geen rij-hoogte uitrekken: voorkomt grote witte band onder prijs vóór het volgende product. */
html body #gridLayout.tf-grid-layout > .card-product,
html body .wrapper-shop.tf-grid-layout > .card-product,
html body .content-woocommerce .products-content .tf-grid-layout > .card-product,
html body .elementor-vineta-widget-wrapper .tf-grid-layout > .card-product,
html body .elementor-vineta-widget-wrapper .wrapper-shop.tf-grid-layout > .card-product {
	align-self: start !important;
	height: auto !important;
}

html body #gridLayout.tf-grid-layout > .card-product .card-product-info,
html body .wrapper-shop.tf-grid-layout > .card-product .card-product-info,
html body .content-woocommerce .products-content .tf-grid-layout > .card-product .card-product-info,
html body .elementor-vineta-widget-wrapper .tf-grid-layout > .card-product .card-product-info,
html body .elementor-vineta-widget-wrapper .wrapper-shop.tf-grid-layout > .card-product .card-product-info {
	flex: 0 1 auto !important;
	height: auto !important;
	min-height: 0 !important;
	padding-top: 10px !important;
	padding-bottom: 8px !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}

/*
 * Geen horizontale infopadding op standaardkaarten; stijlen met bewuste zij-marge (center, border, …) uitsluiten.
 */
html body .card-product:not(.style-center):not(.style-4):not(.style-5):not(.style-border):not(.style-border-2):not(.style-space):not(.style-space-2) .card-product-info {
	padding-left: 0 !important;
	padding-right: 0 !important;
}

@media (min-width: 992px) {
	html body #gridLayout.tf-grid-layout.tf-col-3,
	html body .wrapper-shop.tf-grid-layout.tf-col-3,
	html body .elementor-vineta-widget-wrapper .tf-grid-layout.tf-col-3,
	html body .elementor-vineta-widget-wrapper .wrapper-shop.tf-grid-layout.tf-col-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	}

	html body #gridLayout.tf-grid-layout.tf-col-4,
	html body .wrapper-shop.tf-grid-layout.tf-col-4,
	html body .elementor-vineta-widget-wrapper .tf-grid-layout.tf-col-4,
	html body .elementor-vineta-widget-wrapper .wrapper-shop.tf-grid-layout.tf-col-4 {
		grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	}
}

/* Voorkom dat één portretfoto de gridrij uitrekt (min-height:auto = intrinsieke beeldmin). */
html body .content-woocommerce ul.products > li,
html body .content-woocommerce .products-content .card-product,
html body #gridLayout .card-product,
html body .wrapper-shop.tf-grid-layout .card-product,
html body .vince-product-grid .card-product,
html body .elementor-vineta-widget-wrapper .card-product,
.card-product {
	min-width: 0 !important;
	min-height: 0 !important;
}

/* Lijn CTA's uit: zet koopknoppen op dezelfde hoogte in elke productkaart. */
.card-product {
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: stretch !important;
}

html body .card-product > .card-product-wrapper,
html body .card-product > .card-product-info {
	width: 100% !important;
	max-width: 100% !important;
	align-self: stretch !important;
	box-sizing: border-box !important;
}

.card-product .card-product-info {
	flex: 1 1 auto;
	display: grid !important;
	justify-items: start !important;
	width: 100% !important;
	max-width: 100% !important;
	height: 100%;
	min-height: 0 !important;
	box-sizing: border-box !important;
	overflow: visible !important;
}

html body .card-product .card-product-info .name-product,
html body .card-product .card-product-info .price-wrap,
html body .card-product .card-product-info > p.price-wrap {
	width: 100% !important;
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	box-sizing: border-box !important;
	text-align: left !important;
}

html body .card-product .card-product-info .price-wrap {
	justify-content: flex-start !important;
}

/*
 * Thema (shop.css / app.css): .name-product met line-clamp:2 + -webkit-box → ellipsis en afgekapte regels.
 * Volledige producttitel tonen op alle kaarten (shop, homepage, Elementor).
 */
html body .card-product .name-product,
html body .card-product .card-product-info .name-product {
	display: block !important;
	-webkit-box-orient: unset !important;
	-webkit-line-clamp: unset !important;
	line-clamp: unset !important;
	overflow: visible !important;
	text-overflow: clip !important;
	white-space: normal !important;
	overflow-wrap: anywhere !important;
	word-break: break-word !important;
	max-height: none !important;
}

/*
 * WooCommerce productoverzicht: titel/prijs gelijk met fotoblok (alle schermen).
 * Ook #gridLayout + .woocommerce (WOOF / categorie zonder .content-woocommerce); contain-foto links
 * zodat titel niet “links van” het zichtbare product staat.
 */
html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info,
	html body.tax-product_cat #gridLayout .card-product .card-product-info,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info,
	html body.tax-product_tag #gridLayout .card-product .card-product-info,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info {
		padding-left: 0 !important;
		padding-right: 0 !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		justify-items: start !important;
	}

	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info .tf-rating,
	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info > a,
	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info .name-product,
	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info .price-wrap,
	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-info .stock,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info .tf-rating,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info > a,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info .name-product,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info .price-wrap,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-info .stock,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info .tf-rating,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info > a,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info .name-product,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info .price-wrap,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-info .stock,
	html body.tax-product_cat #gridLayout .card-product .card-product-info .tf-rating,
	html body.tax-product_cat #gridLayout .card-product .card-product-info > a,
	html body.tax-product_cat #gridLayout .card-product .card-product-info .name-product,
	html body.tax-product_cat #gridLayout .card-product .card-product-info .price-wrap,
	html body.tax-product_cat #gridLayout .card-product .card-product-info .stock,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info .tf-rating,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info > a,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info .name-product,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info .price-wrap,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-info .stock,
	html body.tax-product_tag #gridLayout .card-product .card-product-info .tf-rating,
	html body.tax-product_tag #gridLayout .card-product .card-product-info > a,
	html body.tax-product_tag #gridLayout .card-product .card-product-info .name-product,
	html body.tax-product_tag #gridLayout .card-product .card-product-info .price-wrap,
	html body.tax-product_tag #gridLayout .card-product .card-product-info .stock,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info .tf-rating,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info > a,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info .name-product,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info .price-wrap,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-info .stock,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info .tf-rating,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info > a,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info .name-product,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info .price-wrap,
	html body.post-type-archive-product #gridLayout .card-product .card-product-info .stock {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
		text-align: left !important;
	}

	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .name-product,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .name-product,
	html body.tax-product_cat .content-woocommerce .card-product .name-product,
	html body.tax-product_cat #gridLayout .card-product .name-product,
	html body.tax-product_tag .content-woocommerce .card-product .name-product,
	html body.tax-product_tag #gridLayout .card-product .name-product,
	html body.post-type-archive-product .content-woocommerce .card-product .name-product,
	html body.post-type-archive-product #gridLayout .card-product .name-product {
		-webkit-box-pack: start !important;
	}

	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-wrapper .product-img img.img-product,
	html body.woocommerce-page:not(.single-product) .content-woocommerce .card-product .card-product-wrapper .product-img img.img-hover,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-wrapper .product-img img.img-product,
	html body.woocommerce-page:not(.single-product) #gridLayout .card-product .card-product-wrapper .product-img img.img-hover,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-wrapper .product-img img.img-product,
	html body.tax-product_cat .content-woocommerce .card-product .card-product-wrapper .product-img img.img-hover,
	html body.tax-product_cat #gridLayout .card-product .card-product-wrapper .product-img img.img-product,
	html body.tax-product_cat #gridLayout .card-product .card-product-wrapper .product-img img.img-hover,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-wrapper .product-img img.img-product,
	html body.tax-product_tag .content-woocommerce .card-product .card-product-wrapper .product-img img.img-hover,
	html body.tax-product_tag #gridLayout .card-product .card-product-wrapper .product-img img.img-product,
	html body.tax-product_tag #gridLayout .card-product .card-product-wrapper .product-img img.img-hover,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-wrapper .product-img img.img-product,
	html body.post-type-archive-product .content-woocommerce .card-product .card-product-wrapper .product-img img.img-hover,
	html body.post-type-archive-product #gridLayout .card-product .card-product-wrapper .product-img img.img-product,
	html body.post-type-archive-product #gridLayout .card-product .card-product-wrapper .product-img img.img-hover {
		object-position: left center !important;
	}

/* Voor alle card-stijlen: CTA's altijd onderaan uitlijnen. */
.card-product .card-product-info .product-btn-main,
.card-product .card-product-info .btn-addcart,
.card-product .card-product-info .tf-btn,
.card-product .card-product-info a.add_to_cart_button,
.card-product .card-product-info a.ajax_add_to_cart,
.card-product .card-product-info .list-product-btn {
	margin-top: auto !important;
}

/* Zelfde uitlijning expliciet op single product pagina (related + upsells). */
.single-product .related.products .card-product,
.single-product .up-sells.upsells.products .card-product,
.single-product .upsells.products .card-product {
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: stretch !important;
}

.single-product .related.products .card-product .card-product-info,
.single-product .up-sells.upsells.products .card-product .card-product-info,
.single-product .upsells.products .card-product .card-product-info {
	flex: 1 1 auto;
	height: 100%;
	display: grid !important;
	justify-items: start !important;
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
}

.single-product .related.products .card-product .card-product-info .product-btn-main,
.single-product .related.products .card-product .card-product-info .btn-addcart,
.single-product .related.products .card-product .card-product-info .tf-btn,
.single-product .related.products .card-product .card-product-info a.add_to_cart_button,
.single-product .related.products .card-product .card-product-info a.ajax_add_to_cart,
.single-product .related.products .card-product .card-product-info .list-product-btn,
.single-product .up-sells.upsells.products .card-product .card-product-info .product-btn-main,
.single-product .up-sells.upsells.products .card-product .card-product-info .btn-addcart,
.single-product .up-sells.upsells.products .card-product .card-product-info .tf-btn,
.single-product .up-sells.upsells.products .card-product .card-product-info a.add_to_cart_button,
.single-product .up-sells.upsells.products .card-product .card-product-info a.ajax_add_to_cart,
.single-product .up-sells.upsells.products .card-product .card-product-info .list-product-btn,
.single-product .upsells.products .card-product .card-product-info .product-btn-main,
.single-product .upsells.products .card-product .card-product-info .btn-addcart,
.single-product .upsells.products .card-product .card-product-info .tf-btn,
.single-product .upsells.products .card-product .card-product-info a.add_to_cart_button,
.single-product .upsells.products .card-product .card-product-info a.ajax_add_to_cart,
.single-product .upsells.products .card-product .card-product-info .list-product-btn {
	margin-top: auto !important;
}

/* Categoriekaarten (bv. Keuken): geen crop van categorie-afbeeldingen. */
.tfwc-section-category .swiper-slide .wg-cls.style-abs2 .image-wrap,
.tfwc-section-category .swiper-slide .wg-cls.style-abs2 .image,
.tfwc-section-category .swiper-slide .wg-cls.style-abs2 .image.img-style,
.tfwc-section-category .swiper-slide .wg-cls.style-circle-md .image-wrap,
.tfwc-section-category .swiper-slide .wg-cls.style-circle-md .image,
.tfwc-section-category .swiper-slide .wg-cls.style-circle-md .image.img-style {
	background-color: #ffffff !important;
}

.tfwc-section-category .swiper-slide .wg-cls.style-abs2 .image img,
.tfwc-section-category .swiper-slide .wg-cls.style-abs2 .img-style img,
.tfwc-section-category .swiper-slide .wg-cls.style-circle-md .image img,
.tfwc-section-category .swiper-slide .wg-cls.style-circle-md .img-style img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	object-position: center !important;
}

/* Mobiel: voorkom dat productcards buiten beeld schuiven op shop/product-overzichten. */
@media (max-width: 767px) {
	html,
	body {
		overflow-x: hidden !important;
	}

	.content-woocommerce .products-content {
		overflow-x: hidden !important;
		overflow-y: visible !important;
		display: block !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}

	.content-woocommerce .products-content ul.products {
		list-style: none !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		display: grid !important;
		grid-template-columns: 1fr 1fr !important;
		justify-content: center !important;
		align-items: start !important;
		column-gap: 4px !important;
		row-gap: 4px !important;
	}

	.content-woocommerce .products-content ul.products,
	.content-woocommerce .products-content .tf-grid-layout,
	.content-woocommerce .products-content .card-product {
		min-width: 0 !important;
		max-width: 100% !important;
	}

	/* Stop mobiele "drift" door animatie/transform op productkaarten. */
	.content-woocommerce .products-content .wrapper-shop,
	.content-woocommerce .products-content .card-product.fadein,
	.content-woocommerce .products-content .card-product.isanimated,
	.content-woocommerce .products-content .card-product.fadein.isanimated {
		animation: none !important;
		transform: none !important;
	}

	.content-woocommerce .products-content .card-product,
	.content-woocommerce .products-content .card-product .card-product-wrapper,
	.content-woocommerce .products-content .card-product .product-img {
		left: 0 !important;
		right: auto !important;
		transform: none !important;
	}

	.content-woocommerce .products-content ul.products > li,
	.content-woocommerce .products-content .card-product {
		width: 100% !important;
		margin-left: auto !important;
		margin-right: auto !important;
		justify-self: center !important;
		align-self: start !important;
		height: auto !important;
	}

	.content-woocommerce .products-content .card-product .product-img {
		overflow: hidden !important;
	}

	.content-woocommerce .products-content .card-product .product-img .img-product,
	.content-woocommerce .products-content .card-product .product-img .img-hover {
		position: absolute !important;
		top: 0 !important;
		left: 0 !important;
		right: 0 !important;
		bottom: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: 100% !important;
		max-height: 100% !important;
		margin: 0 !important;
		object-fit: contain !important;
		object-position: left center !important;
	}

	/* Single product: related/upsell sliders mogen op iPhone niet naar rechts "driften". */
	body.single-product .wrap-pos-nav.sw-over-product .tfwc-slider.wrap-sw-over,
	body.single-product .fl-control-sw2.wrap-pos-nav .tfwc-slider.wrap-sw-over {
		margin-left: 0 !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
		overflow: hidden !important;
	}

	body.single-product .wrap-pos-nav.sw-over-product .tfwc-slider.wrap-sw-over .swiper-wrapper,
	body.single-product .fl-control-sw2.wrap-pos-nav .tfwc-slider.wrap-sw-over .swiper-wrapper {
		box-sizing: border-box;
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	body.single-product .wrap-pos-nav.sw-over-product .tfwc-slider.wrap-sw-over .swiper-slide,
	body.single-product .fl-control-sw2.wrap-pos-nav .tfwc-slider.wrap-sw-over .swiper-slide {
		box-sizing: border-box;
		max-width: 100%;
	}

	/* Product category/archive (bv. /tafel/): grid moet op telefoon altijd binnen viewport blijven. */
	body.tax-product_cat #themesflat-content,
	body.tax-product_cat .elementor,
	body.tax-product_cat .elementor .e-con,
	body.tax-product_cat .elementor .e-con-inner,
	body.post-type-archive-product #themesflat-content,
	body.post-type-archive-product .elementor,
	body.post-type-archive-product .elementor .e-con,
	body.post-type-archive-product .elementor .e-con-inner {
		max-width: 100% !important;
		min-width: 0 !important;
		overflow-x: hidden !important;
	}

	body.tax-product_cat .wrapper-control-shop,
	body.post-type-archive-product .wrapper-control-shop {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		overflow-x: hidden !important;
	}

	body.tax-product_cat #gridLayout.wrapper-shop.tf-grid-layout,
	body.tax-product_cat .wrapper-shop.tf-grid-layout,
	body.post-type-archive-product #gridLayout.wrapper-shop.tf-grid-layout,
	body.post-type-archive-product .wrapper-shop.tf-grid-layout,
	body.tax-product_tag #gridLayout.wrapper-shop.tf-grid-layout,
	body.tax-product_tag .wrapper-shop.tf-grid-layout,
	body.woocommerce-page #gridLayout.wrapper-shop.tf-grid-layout,
	body.woocommerce-page .wrapper-shop.tf-grid-layout,
	body.post-type-archive-product #gridLayout.wrapper-shop.tf-grid-layout,
	body.post-type-archive-product .wrapper-shop.tf-grid-layout {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		column-gap: 4px !important;
		row-gap: 4px !important;
		align-items: start !important;
		box-sizing: border-box;
	}

	body.tax-product_cat #gridLayout .card-product,
	body.tax-product_cat #gridLayout .card-product.grid,
	body.post-type-archive-product #gridLayout .card-product,
	body.post-type-archive-product #gridLayout .card-product.grid,
	body.tax-product_tag #gridLayout .card-product,
	body.tax-product_tag #gridLayout .card-product.grid,
	body.woocommerce-page #gridLayout .card-product,
	body.woocommerce-page #gridLayout .card-product.grid {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		margin: 0 !important;
		left: auto !important;
		right: auto !important;
		transform: none !important;
		height: auto !important;
		align-self: start !important;
	}

	/* Geen flex-groei in tekstblok: voorkomt witruimte onder prijs bij ongelijke kaarthoogtes. */
	.content-woocommerce .products-content .card-product .card-product-info,
	body.tax-product_cat #gridLayout .card-product .card-product-info,
	body.post-type-archive-product #gridLayout .card-product .card-product-info,
	body.tax-product_tag #gridLayout .card-product .card-product-info,
	body.woocommerce-page #gridLayout .card-product .card-product-info {
		flex: 0 1 auto !important;
		height: auto !important;
		min-height: 0 !important;
		padding-top: 8px !important;
		padding-bottom: 6px !important;
	}

	/* Harde stop op "naar rechts schuiven" tijdens scroll/in-view animaties. */
	body.tax-product_cat #gridLayout,
	body.tax-product_cat #gridLayout .card-product,
	body.tax-product_cat #gridLayout .card-product.fadein,
	body.tax-product_cat #gridLayout .card-product.isanimated,
	body.tax-product_cat #gridLayout .card-product.fadein.isanimated,
	body.post-type-archive-product #gridLayout,
	body.post-type-archive-product #gridLayout .card-product,
	body.post-type-archive-product #gridLayout .card-product.fadein,
	body.post-type-archive-product #gridLayout .card-product.isanimated,
	body.post-type-archive-product #gridLayout .card-product.fadein.isanimated,
	body.tax-product_tag #gridLayout,
	body.tax-product_tag #gridLayout .card-product,
	body.tax-product_tag #gridLayout .card-product.fadein,
	body.tax-product_tag #gridLayout .card-product.isanimated,
	body.tax-product_tag #gridLayout .card-product.fadein.isanimated,
	body.woocommerce-page #gridLayout,
	body.woocommerce-page #gridLayout .card-product,
	body.woocommerce-page #gridLayout .card-product.fadein,
	body.woocommerce-page #gridLayout .card-product.isanimated,
	body.woocommerce-page #gridLayout .card-product.fadein.isanimated {
		animation: none !important;
		transition: none !important;
		transform: translate3d(0, 0, 0) !important;
		left: 0 !important;
		right: auto !important;
	}

	/* Knoppen/overlay binnen de kaart houden, zodat niets de pagina breder maakt. */
	body.tax-product_cat #gridLayout .card-product .card-product-wrapper,
	body.post-type-archive-product #gridLayout .card-product .card-product-wrapper,
	body.tax-product_tag #gridLayout .card-product .card-product-wrapper,
	body.woocommerce-page #gridLayout .card-product .card-product-wrapper {
		overflow: hidden !important;
	}

	/* Mobiel: productfoto iets groter tonen + zelfde linkse uitlijning als desktop (titel vs. beeld). */
	body.tax-product_cat #gridLayout .card-product .product-img .img-product,
	body.tax-product_cat #gridLayout .card-product .product-img .img-hover,
	body.post-type-archive-product #gridLayout .card-product .product-img .img-product,
	body.post-type-archive-product #gridLayout .card-product .product-img .img-hover,
	body.tax-product_tag #gridLayout .card-product .product-img .img-product,
	body.tax-product_tag #gridLayout .card-product .product-img .img-hover,
	body.woocommerce-page #gridLayout .card-product .product-img .img-product,
	body.woocommerce-page #gridLayout .card-product .product-img .img-hover {
		max-width: 100% !important;
		max-height: 100% !important;
		object-position: left center !important;
	}

	/* Mobiel shop: vierkant beeldvak (zelfde als desktop). */
	.content-woocommerce .products-content .card-product .card-product-wrapper,
	body.tax-product_cat #gridLayout .card-product .card-product-wrapper,
	body.post-type-archive-product #gridLayout .card-product .card-product-wrapper,
	body.tax-product_tag #gridLayout .card-product .card-product-wrapper,
	body.woocommerce-page #gridLayout .card-product .card-product-wrapper {
		aspect-ratio: 1 / 1 !important;
	}

	/* Badges compacter: minder bedekking van de productfoto. */
	.content-woocommerce .products-content .card-product .on-sale-wrap,
	body.tax-product_cat #gridLayout .card-product .on-sale-wrap,
	body.post-type-archive-product #gridLayout .card-product .on-sale-wrap,
	body.tax-product_tag #gridLayout .card-product .on-sale-wrap,
	body.woocommerce-page #gridLayout .card-product .on-sale-wrap {
		top: 6px !important;
		left: 6px !important;
		width: auto !important;
		max-width: calc(100% - 12px) !important;
		gap: 4px !important;
		row-gap: 4px !important;
	}

	.content-woocommerce .products-content .card-product .on-sale-wrap .on-sale-item,
	body.tax-product_cat #gridLayout .card-product .on-sale-wrap .on-sale-item,
	body.post-type-archive-product #gridLayout .card-product .on-sale-wrap .on-sale-item,
	body.tax-product_tag #gridLayout .card-product .on-sale-wrap .on-sale-item,
	body.woocommerce-page #gridLayout .card-product .on-sale-wrap .on-sale-item {
		padding: 3px 7px !important;
		min-width: 0 !important;
		font-size: 10px !important;
		font-weight: 500 !important;
		line-height: 1.25 !important;
		border-radius: 14px !important;
	}

	/* Actie-icoontjes (segment / rond) iets kleiner zodat de onderkant minder ruimte vreet. */
	.content-woocommerce .products-content .card-product .list-product-btn .box-icon,
	body.tax-product_cat #gridLayout .card-product .list-product-btn .box-icon,
	body.post-type-archive-product #gridLayout .card-product .list-product-btn .box-icon,
	body.tax-product_tag #gridLayout .card-product .list-product-btn .box-icon,
	body.woocommerce-page #gridLayout .card-product .list-product-btn .box-icon {
		width: 30px !important;
		height: 30px !important;
		min-height: 30px !important;
	}

	.content-woocommerce .products-content .card-product .list-product-btn .box-icon .icon,
	body.tax-product_cat #gridLayout .card-product .list-product-btn .box-icon .icon,
	body.post-type-archive-product #gridLayout .card-product .list-product-btn .box-icon .icon,
	body.tax-product_tag #gridLayout .card-product .list-product-btn .box-icon .icon,
	body.woocommerce-page #gridLayout .card-product .list-product-btn .box-icon .icon {
		font-size: 12px !important;
	}

	.content-woocommerce .products-content .card-product .list-product-btn .box-icon svg,
	body.tax-product_cat #gridLayout .card-product .list-product-btn .box-icon svg,
	body.post-type-archive-product #gridLayout .card-product .list-product-btn .box-icon svg,
	body.tax-product_tag #gridLayout .card-product .list-product-btn .box-icon svg,
	body.woocommerce-page #gridLayout .card-product .list-product-btn .box-icon svg {
		width: 15px !important;
		height: auto !important;
	}

	/* Style-3: brede winkelknop iets compacter boven de icoontjes. */
	.content-woocommerce .products-content .card-product.style-3 .product-btn-main,
	body.tax-product_cat #gridLayout .card-product.style-3 .product-btn-main,
	body.post-type-archive-product #gridLayout .card-product.style-3 .product-btn-main,
	body.tax-product_tag #gridLayout .card-product.style-3 .product-btn-main,
	body.woocommerce-page #gridLayout .card-product.style-3 .product-btn-main {
		bottom: 52px !important;
		left: 6px !important;
		right: 6px !important;
	}

	.content-woocommerce .products-content .card-product.style-3 .product-btn-main .btn-main-product,
	body.tax-product_cat #gridLayout .card-product.style-3 .product-btn-main .btn-main-product,
	body.post-type-archive-product #gridLayout .card-product.style-3 .product-btn-main .btn-main-product,
	body.tax-product_tag #gridLayout .card-product.style-3 .product-btn-main .btn-main-product,
	body.woocommerce-page #gridLayout .card-product.style-3 .product-btn-main .btn-main-product {
		padding: 4px 8px !important;
		min-height: 32px !important;
	}

	.content-woocommerce .products-content .card-product.style-3 .product-btn-main .icon,
	body.tax-product_cat #gridLayout .card-product.style-3 .product-btn-main .icon,
	body.post-type-archive-product #gridLayout .card-product.style-3 .product-btn-main .icon,
	body.tax-product_tag #gridLayout .card-product.style-3 .product-btn-main .icon,
	body.woocommerce-page #gridLayout .card-product.style-3 .product-btn-main .icon {
		font-size: 14px !important;
	}
}

/*
 * Single product: korte beschrijving + lange beschrijving (tabs/accordion) altijd volledig tonen.
 * Deze regels stonden alleen in @media (max-width: 991px), waardoor op desktop nog line-clamp / max-height actief bleef.
 */
html body.single-product .tf-product-info-wrap .tf-product-info-heading {
	overflow: visible !important;
	max-height: none !important;
}

html body.single-product .woocommerce-product-details__short-description {
	display: block !important;
	max-height: none !important;
	overflow: visible !important;
	-webkit-line-clamp: unset !important;
	line-clamp: unset !important;
	-webkit-box-orient: unset !important;
	text-overflow: clip !important;
	white-space: normal !important;
}

html body.single-product .woocommerce-product-details__short-description * {
	max-height: none !important;
	overflow: visible !important;
	-webkit-line-clamp: unset !important;
	line-clamp: unset !important;
	-webkit-box-orient: unset !important;
	text-overflow: clip !important;
	white-space: normal !important;
}

html body.single-product .tab-single-product .woocommerce-Tabs-panel,
html body.single-product .tab-single-product .woocommerce-Tabs-panel--description,
html body.single-product .tab-single-product .tab-pane.wd-product-descriptions,
html body.single-product .tab-single-product #tab-description {
	max-height: none !important;
	overflow: visible !important;
}

html body.single-product .widget-accordion.wd-product-descriptions .collapse.show,
html body.single-product .widget-accordion.wd-product-descriptions .collapse.show .accordion-body {
	max-height: none !important;
	overflow: visible !important;
}

/* Product detail: minder verticale witruimte op tablet/mobiel. */
@media (max-width: 991px) {
	body.single-product #themesflat-content {
		padding-top: 28px !important;
		padding-bottom: 32px !important;
	}

	body.single-product .flat-single-product {
		padding-top: 16px !important;
		padding-bottom: 40px !important;
	}

	/* Minder ruimte tussen beeld- en infokolom zodra ze onder elkaar staan. */
	body.single-product .tf-main-product .row {
		--bs-gutter-y: 0 !important;
		row-gap: 0 !important;
	}

	/*
	 * single-style.css: .flat-single-grid .item tot 826px hoog + Swiper die slides gelijk trekt.
	 * Ook slides zijn vaak .swiper-slide / .woocommerce-product-gallery__image (zonder .item).
	 */
	body.single-product .flat-wrap-media-product,
	body.single-product .flat-wrap-media-product .wrapper-gallery,
	body.single-product .flat-wrap-media-product .wrapper-gallery.swiper,
	body.single-product .woocommerce-product-gallery.tf-product-swiper-mobile {
		min-height: 0 !important;
		height: auto !important;
	}

	body.single-product .flat-wrap-media-product .flat-single-grid .swiper-wrapper,
	body.single-product .flat-wrap-media-product .wrapper-gallery .swiper-wrapper {
		min-height: 0 !important;
		height: auto !important;
		align-items: flex-start !important;
	}

	body.single-product .flat-wrap-media-product .wrapper-gallery.swiper {
		height: auto !important;
	}

	body.single-product .flat-wrap-media-product .flat-single-grid .item,
	body.single-product .flat-wrap-media-product .flat-single-grid:not(.flat-single-grid-2):not(.flat-single-stacked) .item,
	body.single-product .flat-wrap-media-product .swiper-slide,
	body.single-product .flat-wrap-media-product .woocommerce-product-gallery__image {
		width: min(100%, calc(100vw - 32px)) !important;
		max-width: 100% !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: min(72vh, 520px) !important;
		aspect-ratio: unset !important;
		flex-shrink: 0 !important;
		align-self: flex-start !important;
	}

	body.single-product .flat-wrap-media-product .flat-single-grid .item img,
	body.single-product .flat-wrap-media-product .flat-single-grid .item a img,
	body.single-product .flat-wrap-media-product .swiper-slide img,
	body.single-product .flat-wrap-media-product .woocommerce-product-gallery__image img {
		width: 100% !important;
		height: auto !important;
		max-height: min(72vh, 520px) !important;
		object-fit: contain !important;
	}

	body.single-product .flat-wrap-media-product .tf-product-media-main .item {
		max-height: none !important;
		height: auto !important;
		min-height: 0 !important;
	}

	body.single-product .tf-main-product .left-col {
		padding-bottom: 0 !important;
		margin-bottom: 0 !important;
		min-height: 0 !important;
	}

	/* Sticky gallery + zeer hoge max-height op thumbs kunnen een enorme “kolom” geven. */
	body.single-product .tf-main-product .left-col > .sticky-top {
		position: relative !important;
		top: auto !important;
	}

	body.single-product .tf-product-media-thumbs,
	body.single-product .tf-product-media-thumbs.swiper {
		max-height: none !important;
		height: auto !important;
		min-height: 0 !important;
	}

	body.single-product .tf-product-media-thumbs .swiper-wrapper {
		height: auto !important;
		min-height: 0 !important;
	}

	body.single-product .tf-product-media-wrap {
		padding-bottom: 0 !important;
		margin-bottom: 0 !important;
	}

	body.single-product .tf-product-info-wrap,
	body.single-product .tf-product-info-wrap .tf-product-info-list {
		min-height: 0 !important;
	}
}

@media (max-width: 767px) {
	body.single-product #themesflat-content {
		padding-top: 12px !important;
		padding-bottom: 20px !important;
	}

	body.single-product .flat-single-product {
		padding: 8px 0 24px !important;
	}

	body.single-product .tf-main-product .container {
		padding-left: 12px !important;
		padding-right: 12px !important;
	}

	/* Galerij → titel: Bootstrap row-gutter (gestapelde kolommen) wegnemen + geen extra marge. */
	body.single-product .tf-main-product .row {
		--bs-gutter-y: 0 !important;
		row-gap: 0 !important;
	}

	body.single-product .tf-main-product .left-col,
	body.single-product .tf-main-product .right-col {
		margin-top: 0 !important;
		margin-bottom: 0 !important;
	}

	body.single-product .tf-product-info-wrap {
		margin-top: 0 !important;
		padding-top: 0 !important;
	}

	body.single-product .tf-zoom-main:empty {
		display: none !important;
	}

	body.single-product .tf-product-info-wrap .tf-product-info-heading {
		padding-bottom: 14px !important;
		margin-bottom: 14px !important;
	}

	body.single-product .tf-product-info-wrap .tf-product-info-heading .group-badges {
		margin-bottom: 12px !important;
		gap: 10px !important;
	}

	body.single-product .tf-product-info-wrap .tf-product-info-heading .brands,
	body.single-product .tf-product-info-wrap .tf-product-info-heading .category {
		margin-bottom: 8px !important;
	}

	body.single-product .tf-product-info-wrap .tf-product-info-heading .product-info-name {
		margin-bottom: 8px !important;
	}

	body.single-product .tf-product-info-wrap .tf-product-info-heading .product-info-price {
		margin-bottom: 8px !important;
		gap: 8px !important;
	}
}
