/* ============================================================
 * LIVEAUDIO — Catalog thumbnail aspect ratio fix
 *
 * Force product catalog/grid thumbnails into a 1:1 square
 * container with image fitted inside (object-fit: contain).
 * Preserves natural aspect ratio of source image — no
 * distortion, no awkward stretching for tall/wide images.
 *
 * NOTE: Aplica DOAR pe paginile de listare (shop, categorii).
 * Pagina single produs ramane neatinsa (comportament Blocksy default).
 * ============================================================ */

.woocommerce ul.products li.product .ct-woocommerce-product-image,
.woocommerce ul.products li.product .ct-image-container,
.woocommerce ul.products li.product .ct-media-container,
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link,
.woocommerce ul.products li.product img.wp-post-image,
.woocommerce ul.products li.product .attachment-woocommerce_thumbnail {
	aspect-ratio: 1 / 1 !important;
	background: #ffffff !important;
}

.woocommerce ul.products li.product img,
.woocommerce ul.products li.product .attachment-woocommerce_thumbnail,
.woocommerce ul.products li.product img.wp-post-image {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	background: #ffffff !important;
}


/* ============================================================
 * Contor rezultate pe arhiva CPT „proiect" — aplica stilurile
 * native pe care le foloseste WooCommerce (variabilele CSS exista
 * deja, dar regulile care le aplica nu se incarca pe non-WC archive).
 * ============================================================ */
.post-type-archive-proiect .proiect-result-count {
	font-weight:     500 !important;
	text-transform:  uppercase !important;
	font-size:       11px !important;
	letter-spacing:  0.05em !important;
	margin:          0 0 24px 0 !important;
	padding:         0 !important;
}


/* ============================================================
 * Single product — forteaza 5 coloane pentru Related & Upsells
 * & Cross-sells (Blocksy hardcoded la 3, customizer ignora setarea
 * peste 3 in unele cazuri).
 * ============================================================ */
.single-product .related [data-products],
.single-product .upsells [data-products],
.single-product .cross-sells [data-products],
.single-product .up-sells [data-products] {
	--shop-columns: repeat(5, minmax(0, 1fr)) !important;
	/* In modul slider latimea cardului vine din --grid-columns-width, nu din
	   --shop-columns. Tema o genereaza pe desktop ca 100%/4 indiferent de Customizer,
	   deci fara linia asta slider-ul arata 4 carduri (gasit 2026-09-16). */
	--grid-columns-width: calc(100% / 5) !important;
}

/* Pe ecrane mai mici, ajustam responsive */
@media (max-width: 1024px) {
	.single-product .related [data-products],
	.single-product .upsells [data-products],
	.single-product .cross-sells [data-products],
	.single-product .up-sells [data-products] {
		--shop-columns: repeat(3, minmax(0, 1fr)) !important;
		--grid-columns-width: calc(100% / 3) !important;
	}
}
@media (max-width: 600px) {
	.single-product .related [data-products],
	.single-product .upsells [data-products],
	.single-product .cross-sells [data-products],
	.single-product .up-sells [data-products] {
		--shop-columns: repeat(2, minmax(0, 1fr)) !important;
		--grid-columns-width: calc(100% / 2) !important;
	}
}



/* Pretul la aceeasi inaltime in toate cardurile de pe rand (cerut 2026-09-17).
   Blocksy impinge doar butonul jos (.ct-woo-card-actions[data-alignment=equal] margin-top:auto),
   asa ca pretul urca/coboara dupa lungimea titlului si a descrierii scurte. Mutam „impinsul”
   pe pret; butonul vine imediat sub el. Regula a doua se aplica doar cand exista pret
   (combinatorul ~), deci la produsele fara pret butonul ramane aliniat jos ca inainte. */
[data-products] .product > .price {
	margin-top: auto;
}
[data-products] .product > .price ~ .ct-woo-card-actions[data-alignment="equal"] {
	margin-top: 0;
}
