/* Shared features: intentionally independent of the single-product gallery. */
/* v1.7: product archive/category hover image swap. */
.woocommerce ul.products li.product .vp-product-archive-hover,
.vp-product-archive-hover {
	position: relative;
	display: block;
	width: 100%;
	max-width: 100%;
	margin: 0 auto 1em;
	overflow: hidden;
	line-height: 0;
}

.vp-product-archive-hover__primary,
.vp-product-archive-hover__secondary {
	display: block;
	width: 100%;
	max-width: 100%;
	line-height: 0;
}

.vp-product-archive-hover__secondary {
	position: absolute;
	inset: 0;
	z-index: 2;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.22s ease-in-out;
}

.woocommerce ul.products li.product .vp-product-archive-hover img,
.vp-product-archive-hover img {
	display: block;
	width: 100% !important;
	height: auto !important;
	max-width: 100%;
	margin: 0 !important;
	object-fit: cover;
	object-position: center;
	backface-visibility: hidden;
}

@media (hover: hover) and (pointer: fine) {
	.vp-product-archive-hover:hover .vp-product-archive-hover__secondary,
	.woocommerce ul.products li.product a:hover .vp-product-archive-hover .vp-product-archive-hover__secondary,
	.elementor-products-grid a:hover .vp-product-archive-hover .vp-product-archive-hover__secondary {
		opacity: 1;
	}
}

@media (hover: none), (pointer: coarse) {
	.vp-product-archive-hover__secondary {
		display: none;
	}
}

/* Optional personal note field on products marked as note-enabled. */
.vp-product-personal-note {
	clear: both;
	margin: 0 0 18px;
	padding: 14px;
	border: 1px solid rgba(0, 0, 0, 0.12);
	border-radius: 6px;
	background: rgba(0, 0, 0, 0.025);
}

.vp-product-personal-note__label {
	display: block;
	margin: 0 0 8px;
	font-weight: 600;
	line-height: 1.3;
}

.vp-product-personal-note__field {
	display: block;
	width: 100%;
	max-width: 100%;
	min-height: 96px;
	padding: 10px 12px;
	border: 1px solid rgba(0, 0, 0, 0.18);
	border-radius: 4px;
	background: #fff;
	line-height: 1.45;
	resize: vertical;
}

.vp-product-personal-note__field:focus {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

.vp-product-personal-note__hint {
	margin: 7px 0 0;
	font-size: 13px;
	line-height: 1.4;
	opacity: 0.72;
}

/* v1.9: keep the personal note field above quantity and add-to-cart button. */
.woocommerce div.product form.cart.vp-product-personal-note-form,
.elementor-add-to-cart form.cart.vp-product-personal-note-form,
.elementor-widget-woocommerce-product-add-to-cart form.cart.vp-product-personal-note-form {
	flex-wrap: wrap !important;
	align-items: stretch;
}

.woocommerce div.product form.cart .vp-product-personal-note,
.elementor-add-to-cart form.cart .vp-product-personal-note,
.elementor-widget-woocommerce-product-add-to-cart form.cart .vp-product-personal-note {
	box-sizing: border-box;
	flex: 0 0 100% !important;
	order: -100;
	grid-column: 1 / -1;
	width: 100% !important;
	max-width: 100% !important;
	margin: 0 0 16px !important;
	align-self: stretch;
}

.woocommerce div.product form.cart .vp-product-personal-note__field,
.elementor-add-to-cart form.cart .vp-product-personal-note__field,
.elementor-widget-woocommerce-product-add-to-cart form.cart .vp-product-personal-note__field {
	width: 100% !important;
	max-width: 100% !important;
}
