/* PF Visual e Integração para Elementor — PF Produtos (vitrine/carrossel).
   Visual preservado da PFVisual 4.2.0, escopo isolado. */

/* ===================== Título da seção ===================== */
.pfvae-section-heading { margin: 0 0 28px; }
.pfvae-section-heading small { display: block; margin-bottom: 6px; font-size: 11px; font-weight: 800; letter-spacing: .14em; }
.pfvae-section-heading h2 { margin: 0; font-family: var(--pfvae-title-font, inherit); }
.pfvae-section-heading p { margin: 8px 0 0; color: #6f6b73; }

/* ===================== Variáveis padrão ===================== */
.pfvae-products-widget {
	--pfvae-gap: 22px;
	--pfvae-card-bg: #ffffff;
	--pfvae-card-border: #f4e8ee;
	--pfvae-card-border-width: 1px;
	--pfvae-card-radius: 22px;
	--pfvae-card-shadow: 0 6px 20px rgba(40,45,65,.045);
	--pfvae-card-text: #8193b2;
	--pfvae-card-text-hover: #e65f91;
	--pfvae-card-title-align: center;
	--pfvae-card-title-lh: 1.4;
	--pfvae-card-title-lines: 2;
	--pfvae-card-title-spacing: 6px;
	--pfvae-card-price: #ff739d;
	--pfvae-card-price-old: #b9aeb6;
	--pfvae-card-price-align: center;
	--pfvae-card-price-spacing: 8px;
	--pfvae-card-button: #ff7fb1;
	--pfvae-card-button-bg: #ffffff;
	--pfvae-card-button-hover-bg: #ff7fb1;
	--pfvae-card-button-text-hover: #ffffff;
	--pfvae-card-button-width: auto;
	--pfvae-card-button-align: center;
	--pfvae-card-button-min-height: 40px;
	--pfvae-card-button-padding: 8px 18px;
	--pfvae-card-button-shadow: none;
	--pfvae-card-button-border-width: 1px;
	--pfvae-card-button-border: #ff7fb1;
	--pfvae-img-ratio: 1/1;
	--pfvae-img-width: 100%;
	--pfvae-img-fit: cover;
	--pfvae-img-border-width: 0px;
	--pfvae-img-border-color: #f0e6eb;
	--pfvae-img-spacing: 14px;
	--pfvae-img-zoom: 1;
	--pfvae-rating-full: #f2a900;
	--pfvae-rating-empty: #ffffff;
	--pfvae-rating-outline: #e7d9c0;
	--pfvae-rating-size: 16px;
	--pfvae-rating-spacing: 8px;
	--pfvae-rating-align: center;
	--pfvae-rating-count-color: #9a8f97;
	--pfvae-commercial-gap: 6px;
	--pfvae-commercial-align: center;
	--pfvae-grid-columns: 4;
	--pfvae-badge-bg: #e65f91;
	--pfvae-badge-color: #ffffff;
	--pfvae-badge-size: 12px;
	--pfvae-badge-padding: 4px 9px;
	--pfvae-badge-radius: 999px;
	--pfvae-badge-gap: 6px;
	--pfvae-badge-shadow: 0 4px 12px rgba(40,45,65,.10);
	--pfvae-fav-size: 34px;
	--pfvae-fav-bg: #ffffff;
	--pfvae-fav-border-color: #ff7fb1;
	--pfvae-fav-radius: 999px;
	--pfvae-fav-shadow: 0 5px 14px rgba(40,45,65,.08);
	--pfvae-fav-heart: #ff7fb1;
	--pfvae-fav-heart-active: #e65f91;
	--pfvae-fav-offset-x: 11px;
	--pfvae-fav-offset-y: 11px;
	--pfvae-title-font: inherit;
	--pfvae-text-font: inherit;
	font-family: var(--pfvae-text-font, inherit);
}

/* ===================== Lista base ===================== */
.pfvae-products-widget ul.products { list-style: none; margin: 0; padding: 0; }
.pfvae-products-widget ul.products::before,
.pfvae-products-widget ul.products::after { display: none !important; }

/* ===================== Carrossel compartilhado ===================== */
.pfvae-carousel { position: relative; min-width: 0; }
.pfvae-carousel-viewport {
	width: 100%;
	overflow: hidden;
	touch-action: pan-y;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.pfvae-carousel-viewport::-webkit-scrollbar { display: none; }
.pfvae-carousel-track {
	display: flex !important;
	flex-wrap: nowrap !important;
	gap: var(--pfvae-gap) !important;
	width: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	transition: transform .48s cubic-bezier(.22,.7,.25,1);
	will-change: transform;
}
.pfvae-carousel-track.no-transition { transition: none !important; }
.pfvae-carousel-track > * {
	flex: 0 0 calc((100% - (var(--pfvae-items-visible, 4) - 1) * var(--pfvae-gap)) / var(--pfvae-items-visible, 4));
	min-width: 0;
}

/* ===================== Card ===================== */
.pfvae-products-widget ul.products li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 17px;
	background: var(--pfvae-card-bg);
	border: var(--pfvae-card-border-width) solid var(--pfvae-card-border);
	border-radius: var(--pfvae-card-radius);
	box-shadow: var(--pfvae-card-shadow);
	text-align: var(--pfvae-card-title-align);
}
.pfvae-products-widget ul.products li.product > a.pfvae-product-card-link {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	width: 100%;
	color: inherit;
	text-decoration: none;
}
.pfvae-products-widget ul.products li.product a img {
	width: var(--pfvae-img-width);
	max-width: 100%;
	aspect-ratio: var(--pfvae-img-ratio);
	object-fit: var(--pfvae-img-fit);
	margin: 0 auto var(--pfvae-img-spacing);
	border: var(--pfvae-img-border-width) solid var(--pfvae-img-border-color);
	transition: transform .35s ease;
}
.pfvae-products-widget ul.products li.product:hover a img { transform: scale(calc(1 + .025 * var(--pfvae-img-zoom))); }

.pfvae-products-widget .pfvae-product-image-swap {
	position: relative;
	display: block;
	width: var(--pfvae-img-width);
	max-width: 100%;
	aspect-ratio: var(--pfvae-img-ratio);
	overflow: hidden;
	margin: 0 auto var(--pfvae-img-spacing);
	border: var(--pfvae-img-border-width) solid var(--pfvae-img-border-color);
}
.pfvae-products-widget ul.products li.product a .pfvae-product-image-swap > img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	max-width: none;
	height: 100%;
	aspect-ratio: auto;
	object-fit: var(--pfvae-img-fit);
	margin: 0;
	border: 0;
	transition: opacity .32s ease, transform .35s ease;
}
.pfvae-products-widget .pfvae-product-image-swap > img:first-child { z-index: 1; opacity: 1; }
.pfvae-products-widget .pfvae-product-image-swap > .pfvae-product-hover-image { z-index: 2; opacity: 0; }
@media (hover: hover) and (pointer: fine) {
	.pfvae-products-widget .pfvae-product-image-swap:hover > img:first-child { opacity: 0; }
	.pfvae-products-widget .pfvae-product-image-swap:hover > .pfvae-product-hover-image { opacity: 1; }
}

.pfvae-products-widget .pfvae-product-card-title {
	display: -webkit-box;
	-webkit-line-clamp: var(--pfvae-card-title-lines);
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0 0 var(--pfvae-card-title-spacing);
	color: var(--pfvae-card-text);
	font-family: var(--pfvae-title-font, inherit);
	line-height: var(--pfvae-card-title-lh);
	text-align: var(--pfvae-card-title-align);
	transition: color .2s ease;
}
.pfvae-products-widget ul.products li.product:hover .pfvae-product-card-title { color: var(--pfvae-card-text-hover); }

/* ===================== Avaliação ===================== */
.pfvae-product-rating {
	position: relative;
	display: inline-block;
	align-self: var(--pfvae-rating-align);
	margin: 0 0 var(--pfvae-rating-spacing);
	font-size: var(--pfvae-rating-size);
	line-height: 1;
	letter-spacing: .08em;
	white-space: nowrap;
}
.pfvae-rating-stars { display: block; }
.pfvae-rating-stars-empty { color: var(--pfvae-rating-empty); -webkit-text-stroke: 1px var(--pfvae-rating-outline); }
.pfvae-rating-stars-fill {
	position: absolute;
	inset: 0 auto auto 0;
	width: var(--pfvae-rating-percent, 0%);
	overflow: hidden;
	color: var(--pfvae-rating-full);
	white-space: nowrap;
}
.pfvae-rating-count { font-size: .8em; color: var(--pfvae-rating-count-color); margin-left: 4px; }

/* ===================== Preço + grupo comercial ===================== */
.pfvae-products-widget .pfvae-product-card-price {
	display: block;
	margin: 0 0 var(--pfvae-card-price-spacing);
	color: var(--pfvae-card-price);
	text-align: var(--pfvae-commercial-align);
	font-family: var(--pfvae-text-font, inherit);
}
.pfvae-products-widget .pfvae-product-card-price del { color: var(--pfvae-card-price-old); opacity: .85; }
.pfvae-products-widget .pfvae-product-card-price > * + * { margin-top: var(--pfvae-commercial-gap); }

/* ===================== Botão ===================== */
.pfvae-products-widget ul.products li.product .button {
	align-self: var(--pfvae-card-button-align);
	width: var(--pfvae-card-button-width);
	min-height: var(--pfvae-card-button-min-height);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin: auto auto 0;
	padding: var(--pfvae-card-button-padding);
	border: var(--pfvae-card-button-border-width) solid var(--pfvae-card-button-border);
	background: var(--pfvae-card-button-bg);
	color: var(--pfvae-card-button);
	box-shadow: var(--pfvae-card-button-shadow);
	font-family: var(--pfvae-text-font, inherit);
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.pfvae-products-widget ul.products li.product .button:hover {
	background: var(--pfvae-card-button-hover-bg);
	color: var(--pfvae-card-button-text-hover);
	border-color: var(--pfvae-card-button-hover-bg);
}
.pfvae-no-button .pfvae-products-widget ul.products li.product .button,
.pfvae-products-widget.pfvae-no-button ul.products li.product .button { display: none; }

/* ===================== Favoritos ===================== */
.pfvae-fav {
	position: absolute;
	z-index: 8;
	width: var(--pfvae-fav-size);
	height: var(--pfvae-fav-size);
	display: grid;
	place-items: center;
	padding: 0;
	margin: 0;
	border: 1px solid var(--pfvae-fav-border-color);
	border-radius: var(--pfvae-fav-radius);
	background: var(--pfvae-fav-bg);
	color: var(--pfvae-fav-heart);
	box-shadow: var(--pfvae-fav-shadow);
	cursor: pointer;
	backdrop-filter: blur(5px);
	transition: transform .2s ease, background .2s ease, color .2s ease;
}
.pfvae-fav svg { width: 52%; height: 52%; fill: transparent; stroke: currentColor; stroke-width: 1.8; transition: fill .2s ease; }
.pfvae-fav:hover, .pfvae-fav:focus { transform: translateY(-2px) scale(1.04); color: var(--pfvae-fav-heart-active); outline: none; }
.pfvae-fav.is-active { background: #fff0f5; color: var(--pfvae-fav-heart-active); }
.pfvae-fav.is-active svg { fill: currentColor; }
.pfvae-fav.pos-top-left { top: var(--pfvae-fav-offset-y); left: var(--pfvae-fav-offset-x); }
.pfvae-fav.pos-top-center { top: var(--pfvae-fav-offset-y); left: 50%; transform: translateX(-50%); }
.pfvae-fav.pos-top-center:hover { transform: translateX(-50%) translateY(-2px) scale(1.04); }
.pfvae-fav.pos-top-right { top: var(--pfvae-fav-offset-y); right: var(--pfvae-fav-offset-x); }
.pfvae-fav.pos-bottom-left { bottom: var(--pfvae-fav-offset-y); left: var(--pfvae-fav-offset-x); }
.pfvae-fav.pos-bottom-center { bottom: var(--pfvae-fav-offset-y); left: 50%; transform: translateX(-50%); }
.pfvae-fav.pos-bottom-center:hover { transform: translateX(-50%) translateY(-2px) scale(1.04); }
.pfvae-fav.pos-bottom-right { bottom: var(--pfvae-fav-offset-y); right: var(--pfvae-fav-offset-x); }
.pfvae-fav.pos-below-left { top: calc(var(--pfvae-fav-offset-y) + 44%); left: var(--pfvae-fav-offset-x); }
.pfvae-fav.pos-below-center { top: calc(var(--pfvae-fav-offset-y) + 44%); left: 50%; transform: translateX(-50%); }
.pfvae-fav.pos-below-center:hover { transform: translateX(-50%) translateY(-2px) scale(1.04); }
.pfvae-fav.pos-below-right { top: calc(var(--pfvae-fav-offset-y) + 44%); right: var(--pfvae-fav-offset-x); }

/* ===================== Selos ===================== */
.pfvae-badges {
	position: absolute;
	z-index: 7;
	display: flex;
	flex-wrap: wrap;
	gap: var(--pfvae-badge-gap);
	max-width: calc(100% - 2 * var(--pfvae-fav-offset-x));
}
.pfvae-badge {
	display: inline-block;
	padding: var(--pfvae-badge-padding);
	background: var(--pfvae-badge-bg);
	color: var(--pfvae-badge-color);
	font-size: var(--pfvae-badge-size);
	font-weight: 800;
	line-height: 1.2;
	border-radius: var(--pfvae-badge-radius);
	box-shadow: var(--pfvae-badge-shadow);
	white-space: nowrap;
}
.pfvae-badges.fmt-tag .pfvae-badge { border-radius: 3px; }
.pfvae-badges.fmt-rectangle .pfvae-badge { border-radius: 0; }
.pfvae-badges.fmt-rounded .pfvae-badge { border-radius: 8px; }
.pfvae-badges.fmt-ribbon .pfvae-badge { border-radius: 0; clip-path: polygon(0 0, 100% 0, 92% 50%, 100% 100%, 0 100%, 8% 50%); }
.pfvae-badges.fmt-circle .pfvae-badge { border-radius: 50%; aspect-ratio: 1; display: grid; place-items: center; }
.pfvae-badges.pos-top-left { top: var(--pfvae-fav-offset-y); left: var(--pfvae-fav-offset-x); }
.pfvae-badges.pos-top-center { top: var(--pfvae-fav-offset-y); left: 50%; transform: translateX(-50%); }
.pfvae-badges.pos-top-right { top: var(--pfvae-fav-offset-y); right: var(--pfvae-fav-offset-x); align-items: flex-start; justify-content: flex-end; }
.pfvae-badges.pos-bottom-left { bottom: var(--pfvae-fav-offset-y); left: var(--pfvae-fav-offset-x); align-items: flex-end; }
.pfvae-badges.pos-bottom-center { bottom: var(--pfvae-fav-offset-y); left: 50%; transform: translateX(-50%); align-items: flex-end; }
.pfvae-badges.pos-bottom-right { bottom: var(--pfvae-fav-offset-y); right: var(--pfvae-fav-offset-x); align-items: flex-end; justify-content: flex-end; }
.pfvae-badges.pos-below-left { top: calc(var(--pfvae-fav-offset-y) + 44%); left: var(--pfvae-fav-offset-x); }
.pfvae-badges.pos-below-center { top: calc(var(--pfvae-fav-offset-y) + 44%); left: 50%; transform: translateX(-50%); align-items: flex-end; }
.pfvae-badges.pos-below-right { top: calc(var(--pfvae-fav-offset-y) + 44%); right: var(--pfvae-fav-offset-x); align-items: flex-end; justify-content: flex-end; }

/* ===================== Ordenação visível ===================== */
.pfvae-sort { display: flex; justify-content: flex-end; margin: 0 0 14px; }
.pfvae-sort select { min-height: 38px; padding: 6px 12px; border: 1px solid #ecdde4; border-radius: 999px; background: #fff; color: #53617a; }

/* ===================== Navegação do carrossel ===================== */
.pfvae-carousel-navigation { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 18px; }
.pfvae-carousel-navigation[hidden] { display: none; }
.pfvae-carousel-arrow {
	width: 37px; height: 37px; display: grid; place-items: center; padding: 0;
	border: 1px solid #efdbe4; border-radius: 50%; background: #fff; color: #ff7fae; cursor: pointer;
	transition: transform .2s ease, background .2s ease;
}
.pfvae-carousel-arrow:hover { transform: translateY(-2px); background: #fff3f7; }
.pfvae-carousel-arrow:disabled { opacity: .35; cursor: default; transform: none; }
.pfvae-carousel-arrow svg { width: 17px; }
.pfvae-carousel-dots { display: flex; align-items: center; justify-content: center; gap: 6px; }
.pfvae-carousel-dots button { width: 8px; height: 8px; padding: 0; border: 1px solid #cfbcc5; border-radius: 50%; background: transparent; cursor: pointer; }
.pfvae-carousel-dots button.is-active { background: #ff8ab4; border-color: #ff8ab4; }

/* ===================== Grade ===================== */
.pfvae-products-widget.is-grid ul.products {
	display: grid !important;
	grid-template-columns: repeat(var(--pfvae-grid-columns), minmax(0, 1fr));
	gap: var(--pfvae-gap);
	margin: 0 !important;
}
.pfvae-products-widget.is-grid ul.products li.product { width: auto !important; margin: 0 !important; }

/* ===================== Rodapé / vazio ===================== */
.pfvae-widget-footer { display: flex; justify-content: center; margin-top: 28px; }
.pfvae-widget-footer a { display: inline-flex; padding: 10px 22px; border: 1px solid #f1ccdb; border-radius: 999px; color: #e65f91; font-weight: 750; text-decoration: none; }
.pfvae-empty { padding: 18px; border: 1px dashed #e7cbd6; border-radius: 14px; background: #fff7fa; color: #6f6268; text-align: center; }

/* ===================== Acessibilidade / movimento ===================== */
.pfvae-carousel-arrow:focus-visible,
.pfvae-carousel-dots button:focus-visible,
.pfvae-fav:focus-visible,
.pfvae-widget-footer a:focus-visible { outline: 3px solid color-mix(in srgb, #ff7fb1 40%, transparent); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
	.pfvae-carousel-track { transition: none !important; }
	.pfvae-products-widget ul.products li.product a img { transition: none !important; }
}
