/*
 * CVHM — favoritos (inc/favoritos.php): coração dos cards, aviso flutuante e a página /favoritos/.
 * Carregado em todas as páginas (o coração está em todos os cards). Usa os tokens de base.css.
 */

/* ---------- coração do card ---------- */
.cv-fav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .92);
	color: var(--cv-preto);
	cursor: pointer;
	transition: transform .2s var(--cv-ease), color .2s;
}
.cv-fav svg { width: 20px; height: 20px; transition: fill .2s; }
.cv-fav:hover { color: var(--cv-vermelho); }
.cv-fav:active { transform: scale(.9); }
.cv-fav[aria-pressed="true"] { color: var(--cv-vermelho); }
.cv-fav[aria-pressed="true"] svg { fill: currentColor; }
.cv-fav[aria-busy="true"] { pointer-events: none; }
@media (prefers-reduced-motion: no-preference) {
	.cv-fav[aria-pressed="true"] svg { animation: cv-fav-pop .35s var(--cv-ease); }
}
@keyframes cv-fav-pop {
	40% { transform: scale(1.25); }
}

/* ---------- aviso flutuante ("foi para os favoritos") ---------- */
.cv-fav-toast {
	position: fixed;
	left: 50%;
	bottom: calc(var(--cv-bottombar-h) + env(safe-area-inset-bottom) + 12px);
	z-index: 90;
	width: max-content;
	max-width: calc(100% - 2 * var(--cv-gutter));
	opacity: 0;
	pointer-events: none;
	transform: translate(-50%, 12px);
	transition: opacity .2s, transform .25s var(--cv-ease);
}
.cv-fav-toast.is-on { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }
.cv-fav-toast p {
	margin: 0;
	padding: 12px 16px;
	background: var(--cv-preto);
	color: #fff;
	font-size: 14px;
	line-height: 1.4;
	box-shadow: var(--cv-sombra);
}
.cv .cv-fav-toast a { color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.cv .cv-fav-toast a:hover { color: #fff; text-decoration-thickness: 2px; }
@media (min-width: 1024px) { .cv-fav-toast { bottom: 24px; } }

/* ---------- página de favoritos ---------- */
.cv-favs__head { padding: 20px 0 8px; }
.cv-favs .cv-bc { display: flex; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.cv-favs .cv-bc__sep { margin: 0 8px; color: var(--cv-cinza-3); }
.cv .cv-favs__title { margin: 0; font-size: clamp(44px, 13vw, 128px); line-height: .9; outline: none; overflow-wrap: anywhere; }
.cv-favs__body { padding-bottom: 64px; }
.cv-favs__total { margin: 0 0 20px; color: var(--cv-cinza-7); font-size: 14px; font-weight: 600; }
.cv-favs .soo-wishlist > .woocommerce-message, .cv-favs .soo-wishlist > .woocommerce-error, .cv-favs .soo-wishlist > .woocommerce-info { margin-top: 8px; }

.cv-favs__item { display: flex; flex-direction: column; }
.cv-favs__item .cv-card { height: auto; }
.cv-favs__acoes { display: grid; gap: 8px; margin-top: 12px; }
.cv-favs__compra { display: grid; gap: 8px; margin: 0; }
.cv-favs__label { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--cv-cinza-7); }
.cv .cv-favs__compra select { width: 100%; min-height: 44px; }
.cv .cv-favs__add { width: 100%; min-height: 44px; padding: 0 12px; font-size: 12px; }
.cv-favs__add svg { flex: none; width: 18px; height: 18px; }
.cv-favs__add[aria-busy="true"] { opacity: .6; }
@media (max-width: 479px) {
	.cv .cv-favs__add { padding: 0 8px; letter-spacing: .04em; }
	.cv-favs__add svg { display: none; }
}
.cv-favs__msg { margin: 0; color: var(--cv-vermelho); font-size: 13px; }
.cv-favs__msg:empty { display: none; }
.cv-favs__esgotado { margin: 0; padding: 12px; background: var(--cv-off); color: var(--cv-cinza-7); font-size: 13px; font-weight: 600; text-align: center; }
.cv-favs__remover {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 40px;
	color: var(--cv-cinza-7);
	font-size: 13px;
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.cv-favs__remover svg { width: 16px; height: 16px; }
.cv-favs__remover[aria-busy="true"] { opacity: .5; pointer-events: none; }

/* estado vazio */
.cv-favs__vazio {
	display: grid;
	justify-items: center;
	gap: 12px;
	max-width: 560px;
	margin: 8px auto 56px;
	padding: 44px 20px;
	border: 1px solid var(--cv-linha);
	text-align: center;
}
.cv-favs__vazio-ico { width: 56px; height: 56px; color: var(--cv-vermelho); }
.cv .cv-favs__vazio h2 { margin: 0; font-size: clamp(30px, 6vw, 44px); }
.cv-favs__vazio p { max-width: 400px; margin: 0 0 8px; color: var(--cv-cinza-7); }
.cv .cv-favs__vazio .cv-btn { color: #fff; }
.cv .cv-favs__rail h2 { margin: 0 0 20px; font-size: clamp(30px, 5vw, 44px); }
.cv-favs__rail .cv-eyebrow { margin-bottom: 4px; }
