.woocommerce div.product .rvld-wrap {
	box-sizing: border-box;
	width: 100%;
	max-width: 360px;
	margin: 10px auto 18px;
	padding: 0;
	color: #f1f1f1;
	text-align: center;
}

.woocommerce div.product .rvld-wrap *,
.woocommerce div.product .rvld-wrap *::before,
.woocommerce div.product .rvld-wrap *::after {
	box-sizing: border-box;
}

.woocommerce div.product .rvld-actions {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	width: 100%;
	margin: 0 auto 9px;
	overflow: visible;
}

.woocommerce div.product .rvld-wrap .rvld-btn,
.woocommerce div.product .rvld-wrap .rvld-btn:visited,
.woocommerce div.product .rvld-wrap .rvld-btn:hover,
.woocommerce div.product .rvld-wrap .rvld-btn:focus,
.woocommerce div.product .rvld-wrap .rvld-btn:active {
	position: relative !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 7px !important;
	min-width: 76px !important;
	height: 42px !important;
	margin: 0 !important;
	padding: 8px 13px !important;
	border: 1px solid #484848 !important;
	border-radius: 999px !important;
	background: #2b2b2b !important;
	box-shadow: none !important;
	color: #f1f1f1 !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	text-decoration: none !important;
	text-transform: none !important;
	outline: none !important;
	cursor: pointer !important;
	-webkit-tap-highlight-color: transparent;
	appearance: none;
	overflow: visible !important;
	transition:
		border-color 160ms ease,
		box-shadow 160ms ease,
		opacity 160ms ease,
		transform 120ms ease;
}

.woocommerce div.product .rvld-wrap .rvld-btn:hover,
.woocommerce div.product .rvld-wrap .rvld-btn:active {
	background: #2b2b2b !important;
	color: #f1f1f1 !important;
}

.woocommerce div.product .rvld-wrap .rvld-btn:focus-visible {
	border-color: #777 !important;
	box-shadow: 0 0 0 2px rgba(241, 241, 241, 0.18) !important;
}

.woocommerce div.product .rvld-wrap .rvld-btn.rvld-is-active {
	border-color: #747474 !important;
	background: #2b2b2b !important;
}

.woocommerce div.product .rvld-wrap .rvld-btn.rvld-is-busy {
	opacity: 0.78 !important;
	cursor: pointer !important;
}

/*
 * Custom tooltip.
 */
.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]::before,
.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]::after {
	position: absolute;
	left: 50%;
	z-index: 999998;
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity 140ms ease,
		visibility 140ms ease,
		transform 140ms ease;
}

.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]::before {
	bottom: calc(100% + 7px);
	width: 8px;
	height: 8px;
	background: #111111;
	content: "";
	transform: translateX(-50%) translateY(4px) rotate(45deg);
}

.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]::after {
	bottom: calc(100% + 11px);
	width: max-content;
	max-width: 190px;
	padding: 7px 9px;
	border: 1px solid #303030;
	border-radius: 8px;
	background: #111111;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
	color: #ffffff;
	content: attr(data-rvld-tooltip);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
	transform: translateX(-50%) translateY(4px);
}

.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]:hover::before,
.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]:hover::after,
.woocommerce
	div.product
	.rvld-wrap
	.rvld-btn[data-rvld-tooltip]:focus-visible::before,
.woocommerce
	div.product
	.rvld-wrap
	.rvld-btn[data-rvld-tooltip]:focus-visible::after {
	opacity: 1;
	visibility: visible;
}

.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]:hover::before,
.woocommerce
	div.product
	.rvld-wrap
	.rvld-btn[data-rvld-tooltip]:focus-visible::before {
	transform: translateX(-50%) translateY(0) rotate(45deg);
}

.woocommerce div.product .rvld-wrap .rvld-btn[data-rvld-tooltip]:hover::after,
.woocommerce
	div.product
	.rvld-wrap
	.rvld-btn[data-rvld-tooltip]:focus-visible::after {
	transform: translateX(-50%) translateY(0);
}

/*
 * Bigger icon area without changing the button size.
 */
.woocommerce div.product .rvld-wrap .rvld-icon {
	position: relative;
	display: inline-flex;
	width: 30px;
	height: 30px;
	align-items: center;
	justify-content: center;
	flex: 0 0 30px;
}

.woocommerce div.product .rvld-wrap .rvld-svg {
	display: block;
	width: 30px;
	height: 30px;
	overflow: visible;
}

/*
 * Default state:
 * - transparent fill
 * - visible outline
 *
 * Active state:
 * - same dark button
 * - icon itself fills solid white
 */
.woocommerce div.product .rvld-wrap .rvld-icon-mark {
	fill: transparent;
	stroke: #d8d8d8;
	stroke-width: 2.25;
	stroke-linecap: round;
	stroke-linejoin: round;
	vector-effect: non-scaling-stroke;
	transition:
		fill 180ms ease,
		stroke 180ms ease,
		stroke-width 180ms ease,
		transform 180ms ease;
}

.woocommerce div.product .rvld-wrap .rvld-btn:hover .rvld-icon-mark {
	stroke: #ffffff;
}

.woocommerce div.product .rvld-wrap .rvld-btn.rvld-is-active .rvld-icon-mark {
	fill: #ffffff;
	stroke: #ffffff;
	stroke-width: 1.7;
}

.woocommerce div.product .rvld-wrap .rvld-btn.rvld-is-active .rvld-svg {
	animation: rvldIconPop 180ms ease-out;
}

.woocommerce div.product .rvld-wrap .rvld-count {
	display: inline-block;
	min-width: 10px;
	color: #f1f1f1;
	font-variant-numeric: tabular-nums;
}

.woocommerce div.product .rvld-ratio {
	position: relative;
	width: 100%;
	height: 5px;
	margin: 0 auto;
	overflow: hidden;
	border-radius: 0;
	background: #5a2633;
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.035);
}

.woocommerce div.product .rvld-ratio.rvld-ratio-zero {
	background: #343434;
}

.woocommerce div.product .rvld-ratio-fill {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 0%;
	height: 100%;
	border-radius: 0;
	background: #37d6c2;
	transition: width 180ms ease;
}

/*
 * Non-blocking popup.
 * JS positions this above the clicked icon/button.
 */
.woocommerce div.product .rvld-popup {
	position: fixed;
	top: 0;
	left: 0;
	right: auto;
	bottom: auto;
	z-index: 999999;
	display: none;
	width: min(310px, calc(100vw - 16px));
	padding: 16px;
	border: 1px solid #3d3d3d;
	border-radius: 14px;
	background: #171717;
	box-shadow: 0 14px 38px rgba(0, 0, 0, 0.55);
	color: #f1f1f1;
	text-align: left;
}

.woocommerce div.product .rvld-popup.rvld-popup-show {
	display: block;
	animation: rvldPopupIn 140ms ease-out;
}

.woocommerce div.product .rvld-popup-title {
	margin: 0 26px 6px 0;
	color: #f1f1f1;
	font-size: 17px;
	font-weight: 700;
	line-height: 1.25;
}

.woocommerce div.product .rvld-popup-title {
	margin: 0 0 6px;
	color: #f1f1f1;
	font-size: 17px;
	font-weight: 700;
	line-height: 1.25;
}

.woocommerce div.product .rvld-popup-login,
.woocommerce div.product .rvld-popup-login:visited,
.woocommerce div.product .rvld-popup-login:hover,
.woocommerce div.product .rvld-popup-login:focus,
.woocommerce div.product .rvld-popup-login:active {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 36px;
	padding: 8px 16px;
	border: 1px solid #f1f1f1;
	border-radius: 999px;
	background: #f1f1f1;
	color: #111111;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
}

/*
 * Small success toast.
 */
.woocommerce div.product .rvld-toast {
	position: fixed;
	left: 50%;
	bottom: 26px;
	z-index: 999999;
	padding: 9px 14px;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 999px;
	background: rgba(18, 18, 18, 0.94);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.42);
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
	transform: translateX(-50%) translateY(10px);
	transition:
		opacity 180ms ease,
		visibility 180ms ease,
		transform 180ms ease;
}

.woocommerce div.product .rvld-toast.rvld-toast-show {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
}

@keyframes rvldPopupIn {
	from {
		opacity: 0;
		transform: translateY(8px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes rvldIconPop {
	0% {
		transform: scale(0.82);
	}

	70% {
		transform: scale(1.08);
	}

	100% {
		transform: scale(1);
	}
}

@keyframes rvldSpin {
	from {
		transform: translate(-50%, -50%) rotate(0deg);
	}

	to {
		transform: translate(-50%, -50%) rotate(360deg);
	}
}

@media (max-width: 480px) {
	.woocommerce div.product .rvld-wrap {
		max-width: 300px;
		margin-top: 8px;
		margin-bottom: 16px;
	}

	.woocommerce div.product .rvld-actions {
		gap: 10px;
	}

	.woocommerce div.product .rvld-wrap .rvld-btn,
	.woocommerce div.product .rvld-wrap .rvld-btn:visited,
	.woocommerce div.product .rvld-wrap .rvld-btn:hover,
	.woocommerce div.product .rvld-wrap .rvld-btn:focus,
	.woocommerce div.product .rvld-wrap .rvld-btn:active {
		min-width: 70px !important;
		height: 40px !important;
		padding: 8px 12px !important;
		font-size: 14px !important;
	}

	.woocommerce div.product .rvld-wrap .rvld-icon,
	.woocommerce div.product .rvld-wrap .rvld-svg {
		width: 28px;
		height: 28px;
	}

	.woocommerce div.product .rvld-wrap .rvld-icon {
		flex-basis: 28px;
	}
}

@media (max-width: 220px) {
	.woocommerce div.product .rvld-wrap {
		max-width: 100%;
	}

	.woocommerce div.product .rvld-actions {
		gap: 6px;
	}

	.woocommerce div.product .rvld-wrap .rvld-btn,
	.woocommerce div.product .rvld-wrap .rvld-btn:visited,
	.woocommerce div.product .rvld-wrap .rvld-btn:hover,
	.woocommerce div.product .rvld-wrap .rvld-btn:focus,
	.woocommerce div.product .rvld-wrap .rvld-btn:active {
		min-width: 58px !important;
		height: 36px !important;
		padding: 6px 8px !important;
		font-size: 12px !important;
	}

	.woocommerce div.product .rvld-wrap .rvld-icon,
	.woocommerce div.product .rvld-wrap .rvld-svg {
		width: 22px;
		height: 22px;
	}

	.woocommerce div.product .rvld-wrap .rvld-icon {
		flex-basis: 22px;
	}
}

/*
 * WooCommerce archive/shop product-image like/dislike rating bar.
 * This is independent from the Continue Watching bottom progress bar.
 *
 * Design intent:
 * - The wrapper shrink-wraps the actual product image.
 * - The ratio bar is positioned only over the image, not the full product card.
 * - The fill always represents the like percentage.
 * - Tooltip is CSS/client-side only, so hover does not hit the server.
 */
.woocommerce ul.products li.product .rvld-loop-thumb-wrap,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap {
    position: relative;

    /*
     * display: flex + width: fit-content makes the wrapper shrink to
     * exactly the width of its image child, no more. This is the key
     * fix: on large viewports the parent <a> may be 300px+ wide, but
     * the image is rendered at a smaller size. The wrapper must match
     * the image, not the parent.
     */
    display: flex;
    flex-direction: column;
    width: fit-content;
    width: -moz-fit-content; /* Firefox fallback */

    /*
     * Centering: since the parent <a> may be wider, we center the
     * wrapper within it so the image stays centered as before.
     */
    margin: 0 auto 1em;
    line-height: 0;

    /*
     * Allow the tooltip pseudo-elements to overflow without clipping.
     */
    overflow: visible;

    /*
     * Ensure the wrapper never accidentally grows wider than its
     * column — safety net for very narrow grid cells.
     */
    max-width: 100%;
}


.woocommerce ul.products li.product .rvld-loop-thumb-wrap *,
.woocommerce ul.products li.product .rvld-loop-thumb-wrap *::before,
.woocommerce ul.products li.product .rvld-loop-thumb-wrap *::after,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap *,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap *::before,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap *::after {
	box-sizing: border-box;
}

.woocommerce ul.products li.product .rvld-loop-thumb-wrap > picture,
.woocommerce ul.products li.product .rvld-loop-thumb-wrap > img,
.woocommerce ul.products li.product .rvld-loop-thumb-wrap > .cw-thumb-wrap,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap > picture,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap > img,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap > .cw-thumb-wrap {
    display: block;
    max-width: 100%;
    margin: 0;
}

.woocommerce ul.products li.product .rvld-loop-thumb-wrap > picture > img,
.woocommerce-page ul.products li.product .rvld-loop-thumb-wrap > picture > img {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0;
}

.woocommerce ul.products li.product .rvld-loop-rating,
.woocommerce-page ul.products li.product .rvld-loop-rating {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 30;
    display: block;
    width: 100%;
    height: 5px;
    overflow: visible;
    border-radius: 0;
    background: #5a2633;
    box-shadow:
        0 1px 3px rgba(0, 0, 0, 0.35),
        inset 0 0 0 1px rgba(255, 255, 255, 0.035);
    pointer-events: auto;
    transition:
        height 140ms ease,
        background-color 140ms ease,
        box-shadow 140ms ease;
}

.woocommerce ul.products li.product
	.rvld-loop-rating[data-rvld-loop-has-reactions="0"],
.woocommerce-page ul.products li.product
	.rvld-loop-rating[data-rvld-loop-has-reactions="0"] {
	background: #343434;
}

.woocommerce ul.products li.product .rvld-loop-rating-fill,
.woocommerce-page ul.products li.product .rvld-loop-rating-fill {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 0%;
	height: 100%;
	border-radius: 0;
	background: #37d6c2;
	transition: width 180ms ease;
}

/*
 * If dislikes are winning, keep the bar semantic through the base track,
 * but do not recolor the fill. The fill is always the like percentage.
 */
.woocommerce ul.products li.product .rvld-loop-rating-dislike,
.woocommerce-page ul.products li.product .rvld-loop-rating-dislike {
	background: #5a2633;
}

.woocommerce ul.products li.product .rvld-loop-rating-can-hover:hover,
.woocommerce-page ul.products li.product .rvld-loop-rating-can-hover:hover {
	height: 8px;
	box-shadow:
		0 2px 8px rgba(0, 0, 0, 0.42),
		inset 0 0 0 1px rgba(255, 255, 255, 0.045);
}

/*
 * Tooltip pseudo-elements.
 * This is lightweight: the text is already in the data attribute.
 * Hover does not trigger PHP, MySQL, Redis, AJAX, or REST.
 */
.woocommerce ul.products li.product .rvld-loop-rating::before,
.woocommerce ul.products li.product .rvld-loop-rating::after,
.woocommerce-page ul.products li.product .rvld-loop-rating::before,
.woocommerce-page ul.products li.product .rvld-loop-rating::after {
	position: absolute;
	left: 50%;
	z-index: 60;
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity 120ms ease,
		visibility 120ms ease,
		transform 120ms ease;
}

.woocommerce ul.products li.product .rvld-loop-rating::before,
.woocommerce-page ul.products li.product .rvld-loop-rating::before {
	top: calc(100% + 4px);
	width: 7px;
	height: 7px;
	background: #111111;
	content: "";
	transform: translateX(-50%) translateY(-2px) rotate(45deg);
}

.woocommerce ul.products li.product .rvld-loop-rating::after,
.woocommerce-page ul.products li.product .rvld-loop-rating::after {
	top: calc(100% + 8px);
	width: max-content;
	max-width: min(210px, calc(100vw - 18px));
	padding: 6px 8px;
	border: 1px solid #2c2c2c;
	border-radius: 7px;
	background: #111111;
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.32);
	color: #f1f1f1;
	content: attr(data-rvld-loop-tooltip);
	font-size: 12px;
	font-weight: 650;
	line-height: 1.2;
	text-align: center;
	white-space: normal;
	transform: translateX(-50%) translateY(-2px);
}

.woocommerce ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::before,
.woocommerce ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::after,
.woocommerce-page ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::before,
.woocommerce-page ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::after {
	opacity: 1;
	visibility: visible;
}

.woocommerce ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::before,
.woocommerce-page ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::before {
	transform: translateX(-50%) translateY(0) rotate(45deg);
}

.woocommerce ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::after,
.woocommerce-page ul.products li.product
	.rvld-loop-rating-can-hover[data-rvld-loop-has-reactions="1"]:hover::after {
	transform: translateX(-50%) translateY(0);
}

@media (hover: none), (pointer: coarse) {
	.woocommerce ul.products li.product .rvld-loop-rating,
	.woocommerce-page ul.products li.product .rvld-loop-rating {
		pointer-events: none;
	}
}