/* TVS Product Video */
.tvs-pv {
	position: relative;
	display: block;
}

/* The image is hidden inline from the first paint. Shown only as a fallback: when the script
   decides no file can play, or (safety net) if the script never runs at all. */
.tvs-pv.tvs-pv--fallback img {
	opacity: 1 !important;
}
.tvs-pv:not(.tvs-pv--live):not(.tvs-pv--no-image) img {
	animation: tvs-pv-fallback 0s linear 4s forwards;
}
@keyframes tvs-pv-fallback {
	to { opacity: 1; }
}

/* Sized and placed over the image by the script. No z-index, so sale badges and title plates
   stay on top exactly as they do over the image. */
.tvs-pv__video {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	max-width: none !important;
	max-height: none !important;
	background: transparent;
	opacity: 0;
	pointer-events: none; /* clicks reach the product link, gallery and lightbox */
	transition: transform .5s ease;
}
.tvs-pv--playing > .tvs-pv__video {
	opacity: 1;
}

/* Homepage builder: mirror the image's hover zoom on the video, and hide the 250th carousel's
   enlarged still image for video products (the video itself zooms instead). */
.tvs-hb .products li.product:hover .tvs-pv__video {
	transform: scale(1.06);
}
.tvs-hb__250-solo .products li.product.is-active:hover .tvs-pv__video,
.tvs-hb__250-solo .products li.product.is-active:focus-within .tvs-pv__video {
	transform: scale(1.28);
}
.tvs-hb__250-products:has(li.product.is-active .tvs-pv) > .tvs-hb__250-zoom {
	display: none !important;
}

/* Product page: the video slide's thumbnail plays the video too. */
.tvs-pv-thumb .tvs-pv__spacer {
	width: 100%;
	height: auto;
	display: block;
}

/* Product page: "Select a size and design to see your shirt" next to the Clear link. */
.tvs-pv-hint {
	display: inline-block;
	margin-right: 12px;
	text-decoration: none;
}
.tvs-pv-hint[hidden] {
	display: none;
}
