/**
 * BtB Video element.
 *
 * A custom thumbnail with a play button sits over the player until clicked.
 * On click the JS adds `.is-playing`, which fades the poster out and reveals
 * the real player (an injected YouTube/Vimeo iframe, or the <video> element).
 */

.pca-btb-video {
	--pca-btb-video-ratio: 16 / 9;
	position: relative;
	width: 100%;
	margin: 0 auto;
}

.pca-btb-video__stage {
	position: relative;
	aspect-ratio: var(--pca-btb-video-ratio);
	width: 100%;
	overflow: hidden;
	border-radius: var(--btb-border-radius, 7.5px);
	background: var(--nectar-btb-navy, #05101e);
	box-shadow: 0 30px 80px rgba(0, 0, 0, .45);
}

/* The player fills the stage: injected iframe or the <video> element. */
.pca-btb-video__stage iframe,
.pca-btb-video__media {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	display: block;
	border: 0;
	background: #000;
	object-fit: cover;
}

/* ---- Poster / play overlay ------------------------------------------------ */

.pca-btb-video__poster {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	cursor: pointer;
	background: var(--nectar-btb-navy-lighter, #112032);
	appearance: none;
	overflow: hidden;
	transition: opacity .5s ease, visibility .5s ease;
}

.pca-btb-video__poster-image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	transition: transform .6s cubic-bezier(.22, 1, .36, 1);
}

/* Subtle dark wash so the play button always has contrast on light images. */
.pca-btb-video__poster::after {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(closest-side at 50% 50%, rgba(5, 16, 30, .35), rgba(5, 16, 30, .15));
	opacity: 1;
	transition: opacity .4s ease;
}

.pca-btb-video__play {
	position: relative;
	z-index: 1;
	display: block;
	width: clamp(62px, 9vw, 92px);
	height: clamp(62px, 9vw, 92px);
	transition: transform .3s cubic-bezier(.22, 1, .36, 1);
	filter: drop-shadow(0 8px 24px rgba(5, 16, 30, .45));
}

.pca-btb-video__play svg {
	width: 100%;
	height: 100%;
	display: block;
}

.pca-btb-video__play-bg {
	fill: var(--nectar-btb-willow, #e5e3da);
	transition: fill .3s ease;
}

.pca-btb-video__play-icon {
	fill: var(--nectar-btb-navy, #05101e);
}

/* Hover / focus affordance. */
.pca-btb-video__poster:hover .pca-btb-video__play,
.pca-btb-video__poster:focus-visible .pca-btb-video__play {
	transform: scale(1.08);
}

.pca-btb-video__poster:hover .pca-btb-video__poster-image {
	transform: scale(1.03);
}

.pca-btb-video__poster:hover .pca-btb-video__play-bg,
.pca-btb-video__poster:focus-visible .pca-btb-video__play-bg {
	fill: var(--nectar-white, #fff);
}

.pca-btb-video__poster:focus-visible {
	outline: 3px solid var(--nectar-btb-willow, #e5e3da);
	outline-offset: 3px;
}

/* ---- Playing state -------------------------------------------------------- */

.pca-btb-video.is-playing .pca-btb-video__poster {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

/* Fully remove the poster from the layout once the fade has finished so it can
   never intercept clicks on the live player controls. */
.pca-btb-video.is-poster-hidden .pca-btb-video__poster {
	display: none;
}

/* Editor-only misconfiguration notice. */
.pca-btb-video-editor-notice {
	padding: 18px 22px;
	border: 1px dashed var(--nectar-btb-willow, #e5e3da);
	border-radius: var(--btb-border-radius, 7.5px);
	color: var(--nectar-btb-navy, #05101e);
	background: var(--nectar-btb-ball, #f4f3ed);
	font-family: 'owners-narrow', sans-serif;
	text-align: center;
}

@media (prefers-reduced-motion: reduce) {
	.pca-btb-video__poster,
	.pca-btb-video__poster-image,
	.pca-btb-video__play {
		transition: none;
	}
}
