/**
 * Preluence News — Video Engine.
 *
 * Presentation only. Player controls stay native unless an administrator
 * chooses a custom presentation, and every effect sits around the media, never
 * inside the playback pipeline.
 */

:root {
	--pn-video-radius: var(--pn-radius, 6px);
	--pn-video-gap: 1rem;
	--pn-video-float-w: 320px;
}

/* -------------------------------------------------------------------------
   Player shell, effects
   ---------------------------------------------------------------------- */

.pn-video {
	position: relative;
	display: block;
	min-width: 0;
}

.pn-vplayer {
	position: relative;
	border-radius: var(--pn-video-radius);
	overflow: hidden;
	background: #05070d;
	aspect-ratio: var(--pn-video-ratio, 16 / 9);
}

.pn-vplayer__video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: #000;
}

.pn-vplayer__facade {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	color: #fff;
}

.pn-vplayer__poster {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pn-vplayer__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgb(0 0 0 / 5%), rgb(0 0 0 / 45%));
	transition: opacity 0.3s var(--pn-ease, ease);
}

.pn-vplayer__play {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	transform: translate(-50%, -50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 4rem;
	height: 4rem;
	border-radius: 50%;
	background: rgb(255 255 255 / 92%);
	color: #0b0d10;
	box-shadow: 0 12px 30px -10px rgb(0 0 0 / 60%);
	transition: transform 0.25s var(--pn-ease, ease);
}

.pn-vplayer__play svg {
	width: 22px;
	height: 22px;
}

.pn-vplayer__facade:hover .pn-vplayer__play,
.pn-vplayer__facade:focus-visible .pn-vplayer__play {
	transform: translate(-50%, -50%) scale(1.08);
}

.pn-vplayer__facade:hover .pn-vplayer__scrim {
	opacity: 0.75;
}

.pn-vplayer__time,
.pn-vplayer__source {
	position: absolute;
	inset-block-end: 0.6rem;
	padding: 0.15rem 0.45rem;
	border-radius: 3px;
	background: rgb(0 0 0 / 72%);
	font-family: var(--pn-font-ui, sans-serif);
	font-size: 0.74rem;
	font-weight: 600;
	letter-spacing: 0.04em;
}

.pn-vplayer__time {
	inset-inline-end: 0.6rem;
}

.pn-vplayer__source {
	inset-inline-start: 0.6rem;
	text-transform: uppercase;
	opacity: 0.85;
}

.pn-vplayer__caption {
	margin: 0.5rem 0 0;
	font-size: 0.86rem;
	opacity: 0.8;
}

.pn-vplayer__fallback-link {
	position: absolute;
	inset-block-end: 0.6rem;
	inset-inline-start: 0.6rem;
	color: #fff;
}

.pn-vplayer__iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* Effects (outside the media pipeline) */
.pn-video--fx-depth .pn-vplayer {
	box-shadow: 0 30px 70px -34px rgb(11 16 32 / 65%);
}

.pn-video--fx-glow .pn-vplayer {
	box-shadow: 0 0 0 1px color-mix(in srgb, var(--pn-primary) 30%, transparent), 0 0 44px -12px var(--pn-primary);
}

.pn-video--fx-glass .pn-vplayer {
	outline: 1px solid rgb(255 255 255 / 18%);
	outline-offset: -1px;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}

.pn-video--fx-3d {
	perspective: 1400px;
}

.pn-video--fx-3d .pn-vplayer {
	transform: rotateX(2deg);
	transform-origin: bottom center;
	box-shadow: 0 40px 90px -40px rgb(11 16 32 / 75%);
}

.pn-video--fx-border .pn-vplayer::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
	box-shadow: 0 0 0 2px color-mix(in srgb, var(--pn-accent) 70%, transparent) inset;
	animation: pn-video-border 3.2s linear infinite;
}

@keyframes pn-video-border {

	50% {
		box-shadow: 0 0 0 2px color-mix(in srgb, var(--pn-primary) 80%, transparent) inset;
	}
}

.pn-video--fx-zoom .pn-vplayer__poster,
.pn-video--fx-zoom .pn-vplayer__video {
	transition: transform 0.6s var(--pn-ease, ease);
}

.pn-video--fx-zoom:hover .pn-vplayer__poster {
	transform: scale(1.04);
}

.pn-video--fx-elevation {
	transition: transform 0.3s var(--pn-ease, ease), box-shadow 0.3s var(--pn-ease, ease);
}

.pn-video--fx-elevation:hover,
.pn-video--fx-elevation:focus-within {
	transform: translateY(-4px);
	box-shadow: 0 30px 60px -30px rgb(11 16 32 / 55%);
}

.pn-video--fx-reflection .pn-vplayer::after {
	content: "";
	position: absolute;
	inset-block-start: 0;
	inset-inline-start: -60%;
	width: 40%;
	height: 100%;
	background: linear-gradient(100deg, transparent, rgb(255 255 255 / 22%), transparent);
	transform: skewX(-12deg);
	transition: inset-inline-start 0.7s var(--pn-ease, ease);
}

.pn-video--fx-reflection:hover .pn-vplayer::after {
	inset-inline-start: 120%;
}

.pn-video--fx-gradient .pn-vplayer::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(200deg, color-mix(in srgb, var(--pn-primary) 26%, transparent), transparent 55%);
}

.pn-video--fx-cinematic {
	animation: pn-video-cinematic 0.7s var(--pn-ease, ease) both;
}

@keyframes pn-video-cinematic {

	from {
		opacity: 0;
		transform: translateY(14px) scale(0.99);
	}
}

.pn-video--fx-parallax .pn-vplayer {
	transform: translateZ(0);
	will-change: transform;
}

/* Styles */
.pn-video--style-cinematic .pn-vplayer,
.pn-video--style-immersive .pn-vplayer {
	border-radius: 0;
}

.pn-video--style-floating .pn-vplayer {
	border-radius: 14px;
	box-shadow: 0 24px 60px -26px rgb(11 16 32 / 55%);
}

.pn-video--style-minimal .pn-vplayer__play {
	background: rgb(0 0 0 / 55%);
	color: #fff;
	width: 3.2rem;
	height: 3.2rem;
}

.pn-video--style-holo .pn-vplayer {
	outline: 1px solid color-mix(in srgb, #22d3ee 45%, transparent);
	outline-offset: -1px;
}

/* -------------------------------------------------------------------------
   Cards
   ---------------------------------------------------------------------- */

.pn-vcard {
	position: relative;
	min-width: 0;
}

.pn-vcard__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.pn-vcard__media {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--pn-video-radius);
	aspect-ratio: 16 / 9;
	background: var(--pn-surface);
}

.pn-vcard__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.45s var(--pn-ease, ease);
}

.pn-vcard:hover .pn-vcard__media img {
	transform: scale(1.04);
}

.pn-vcard__noimg {
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, color-mix(in srgb, var(--pn-primary) 22%, var(--pn-surface)), var(--pn-surface));
}

.pn-vcard__play {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	transform: translate(-50%, -50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.6rem;
	height: 2.6rem;
	border-radius: 50%;
	background: rgb(0 0 0 / 55%);
	color: #fff;
}

.pn-vcard__play svg {
	width: 16px;
	height: 16px;
}

.pn-vcard__duration {
	position: absolute;
	inset-block-end: 0.4rem;
	inset-inline-end: 0.4rem;
	padding: 0.1rem 0.35rem;
	border-radius: 3px;
	background: rgb(0 0 0 / 75%);
	color: #fff;
	font-family: var(--pn-font-ui, sans-serif);
	font-size: 0.7rem;
	font-weight: 600;
}

.pn-vcard__body {
	display: block;
	padding-block-start: 0.5rem;
}

.pn-vcard__cat {
	display: block;
	font-family: var(--pn-font-ui, sans-serif);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--pn-accent);
}

.pn-vcard__title {
	display: block;
	font-weight: 600;
	line-height: 1.3;
	overflow-wrap: anywhere;
}

.pn-vcard__meta {
	display: block;
	margin-block-start: 0.2rem;
	font-size: 0.74rem;
	opacity: 0.65;
}

.pn-vcard--horizontal .pn-vcard__link,
.pn-vcard--thumbnail .pn-vcard__link {
	display: flex;
	gap: 0.6rem;
	align-items: center;
}

.pn-vcard--horizontal .pn-vcard__media,
.pn-vcard--thumbnail .pn-vcard__media {
	flex: 0 0 42%;
	aspect-ratio: 4 / 3;
}

.pn-vcard--portrait .pn-vcard__media {
	aspect-ratio: 9 / 16;
}

.pn-vcard--glass .pn-vcard__body {
	padding: 0.6rem;
	background: color-mix(in srgb, var(--pn-bg) 72%, transparent);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	border-radius: 0 0 var(--pn-video-radius) var(--pn-video-radius);
}

.pn-vcard--3d {
	perspective: 1200px;
}

.pn-vcard--3d .pn-vcard__media {
	transform: rotateX(2deg);
	box-shadow: 0 24px 50px -28px rgb(11 16 32 / 60%);
	transition: transform 0.3s var(--pn-ease, ease);
}

.pn-vcard--3d:hover .pn-vcard__media {
	transform: rotateX(0) translateY(-3px);
}

.pn-vcard--editorial .pn-vcard__title {
	font-family: var(--pn-font-heading, serif);
	font-size: 1.06em;
}

.pn-vcard--compact .pn-vcard__body {
	padding-block-start: 0.35rem;
}

/* -------------------------------------------------------------------------
   Sections
   ---------------------------------------------------------------------- */

.pn-vsection {
	display: grid;
	gap: var(--pn-video-gap);
}

.pn-vsection--grid {
	grid-template-columns: repeat(var(--pn-vsection-cols, 3), minmax(0, 1fr));
}

.pn-vsection--spotlight {
	grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
	align-items: start;
}

.pn-vsection__rest {
	display: grid;
	gap: var(--pn-video-gap);
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.pn-vsection--split {
	grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
}

.pn-vsection--carousel {
	display: block;
}

.pn-vcarousel {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(240px, 1fr);
	gap: var(--pn-video-gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding-block-end: 0.5rem;
}

.pn-vcarousel .pn-vcard {
	scroll-snap-align: start;
}

.pn-vside {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 0.6rem;
}

.pn-vside__item a {
	display: flex;
	justify-content: space-between;
	gap: 0.6rem;
	padding-block-end: 0.5rem;
	border-block-end: 1px solid var(--pn-border);
	color: inherit;
	text-decoration: none;
}

.pn-vside__title {
	font-weight: 600;
	line-height: 1.3;
}

.pn-vside__meta {
	font-size: 0.74rem;
	opacity: 0.65;
	white-space: nowrap;
}

.pn-video-list {
	display: grid;
	grid-template-columns: repeat(var(--pn-video-cols, 2), minmax(0, 1fr));
	gap: var(--pn-video-gap);
}

/* Channels */
.pn-vchannels {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--pn-video-gap);
}

.pn-vchannel {
	border: 1px solid var(--pn-border);
	border-radius: var(--pn-video-radius);
	overflow: hidden;
	background: var(--pn-bg);
}

.pn-vchannel__cover {
	display: block;
	aspect-ratio: 16 / 7;
	overflow: hidden;
}

.pn-vchannel__cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pn-vchannel__head {
	display: flex;
	gap: 0.6rem;
	align-items: center;
	padding: 0.7rem;
}

.pn-vchannel__logo {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
}

.pn-vchannel__name {
	margin: 0;
	font-size: 1rem;
}

.pn-vchannel__name a {
	color: inherit;
	text-decoration: none;
}

.pn-vchannel__count {
	margin: 0;
	font-size: 0.76rem;
	opacity: 0.65;
}

.pn-vchannel__latest {
	padding: 0 0.7rem 0.7rem;
}

/* -------------------------------------------------------------------------
   Hero
   ---------------------------------------------------------------------- */

.pn-vhero {
	position: relative;
	overflow: hidden;
	color: #fff;
	background: #05070d;
}

.pn-vhero__media {
	position: absolute;
	inset: 0;
}

.pn-vhero__poster,
.pn-vhero__video,
.pn-vhero__embed {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pn-vhero__embed iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	pointer-events: none;
}

.pn-vhero__veil {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgb(5 7 13 / 35%), rgb(5 7 13 / 78%));
}

.pn-vhero__inner {
	position: relative;
	display: grid;
	gap: 1.25rem;
	padding-block: clamp(2rem, 6vw, 4.5rem);
}

.pn-vhero--background .pn-vhero__inner {
	grid-template-columns: minmax(0, 1fr);
	max-inline-size: 42rem;
}

.pn-vhero__kicker {
	margin: 0;
	font-family: var(--pn-font-ui, sans-serif);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: color-mix(in srgb, #fff 78%, transparent);
}

.pn-vhero__title {
	margin: 0;
	font-size: clamp(1.7rem, 4vw, 3rem);
	line-height: 1.1;
}

.pn-vhero__title a {
	color: inherit;
	text-decoration: none;
}

.pn-vhero__excerpt {
	margin: 0;
	max-inline-size: 46ch;
	opacity: 0.88;
}

.pn-vhero__support {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(200px, 1fr);
	gap: 0.8rem;
	overflow-x: auto;
}

.pn-vhero--text {
	color: var(--pn-text);
	background: none;
}

/* -------------------------------------------------------------------------
   Playlist, transcript, share
   ---------------------------------------------------------------------- */

.pn-vplaylist__title {
	margin: 0 0 0.4rem;
	font-family: var(--pn-font-ui, sans-serif);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	opacity: 0.62;
}

.pn-vplaylist__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 0.5rem;
	counter-reset: pn-vpl;
}

.pn-vplaylist__item a {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	color: inherit;
	text-decoration: none;
}

.pn-vplaylist__item.is-current a {
	color: var(--pn-link);
}

.pn-vplaylist__thumb {
	flex: 0 0 72px;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: 3px;
}

.pn-vplaylist__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pn-vplaylist__label {
	display: block;
	font-weight: 600;
	line-height: 1.3;
}

.pn-vplaylist__time {
	display: block;
	font-size: 0.72rem;
	opacity: 0.62;
}

.pn-vtranscript {
	margin-block-start: 1rem;
	border-block-start: 1px solid var(--pn-border);
	padding-block-start: 0.75rem;
	font-size: 0.94rem;
}

.pn-vtranscript__title {
	font-size: 0.78rem;
	font-family: var(--pn-font-ui, sans-serif);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.pn-vtranscript p {
	margin-block: 0.5rem;
}

.pn-vshare {
	display: flex;
	gap: 0.4rem;
	flex-wrap: wrap;
	margin-block-start: 0.6rem;
}

.pn-vshare__btn {
	padding: 0.25rem 0.6rem;
	border: 1px solid var(--pn-border);
	border-radius: 999px;
	background: none;
	color: inherit;
	font-size: 0.78rem;
	text-decoration: none;
	cursor: pointer;
}

/* -------------------------------------------------------------------------
   Lightbox, floating player
   ---------------------------------------------------------------------- */

.pn-vlightbox {
	position: fixed;
	inset: 0;
	z-index: 120;
	display: grid;
	place-items: center;
	padding: 1rem;
}

.pn-vlightbox__backdrop {
	position: absolute;
	inset: 0;
	background: rgb(4 6 10 / 88%);
}

.pn-vlightbox__panel {
	position: relative;
	width: min(1200px, 100%);
	background: #05070d;
	color: #fff;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 40px 100px -40px rgb(0 0 0 / 85%);
}

.pn-vlightbox[data-theater="1"] .pn-vlightbox__panel {
	width: 100%;
	border-radius: 0;
}

.pn-vlightbox__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 0.6rem 0.8rem;
}

.pn-vlightbox__title {
	margin: 0;
	font-size: 0.94rem;
	font-weight: 600;
}

.pn-vlightbox__tools {
	display: flex;
	gap: 0.35rem;
}

.pn-vlightbox__btn,
.pn-vlightbox__nav {
	padding: 0.25rem 0.6rem;
	border: 1px solid rgb(255 255 255 / 25%);
	border-radius: 999px;
	background: none;
	color: inherit;
	font-size: 0.78rem;
	cursor: pointer;
}

.pn-vlightbox__stage {
	position: relative;
	aspect-ratio: 16 / 9;
	background: #000;
}

.pn-vlightbox__stage iframe,
.pn-vlightbox__stage video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.pn-vlightbox__foot {
	display: flex;
	justify-content: space-between;
	padding: 0.5rem 0.8rem 0.7rem;
}

.pn-vfloat {
	position: fixed;
	z-index: 110;
	width: var(--pn-video-float-w, 320px);
	max-width: 42vw;
	background: #05070d;
	color: #fff;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 30px 70px -30px rgb(0 0 0 / 75%);
}

.pn-vfloat--bottom-right {
	inset-block-end: 1rem;
	inset-inline-end: 1rem;
}

.pn-vfloat--bottom-left {
	inset-block-end: 1rem;
	inset-inline-start: 1rem;
}

.pn-vfloat--top-right {
	inset-block-start: 1rem;
	inset-inline-end: 1rem;
}

.pn-vfloat--top-left {
	inset-block-start: 1rem;
	inset-inline-start: 1rem;
}

.pn-vfloat__stage {
	position: relative;
	aspect-ratio: 16 / 9;
	background: #000;
}

.pn-vfloat__stage iframe,
.pn-vfloat__stage video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.pn-vfloat__close {
	display: block;
	width: 100%;
	padding: 0.35rem;
	border: 0;
	background: rgb(255 255 255 / 8%);
	color: #fff;
	font-size: 0.76rem;
	cursor: pointer;
}

.pn-vfloat--anim-slide {
	animation: pn-vfloat-in 0.28s var(--pn-ease, ease) both;
}

.pn-vfloat--anim-fade {
	animation: pn-video-fade 0.3s ease both;
}

@keyframes pn-vfloat-in {

	from {
		transform: translateY(14px);
		opacity: 0;
	}
}

@keyframes pn-video-fade {

	from {
		opacity: 0;
	}
}

body.pn-vfloat-hidden-mobile .pn-vfloat {
	display: none;
}

/* -------------------------------------------------------------------------
   Video archive
   ---------------------------------------------------------------------- */

.pn-video-archive-grid {
	display: grid;
	grid-template-columns: repeat(var(--pn-video-cols, 3), minmax(0, 1fr));
	gap: var(--pn-video-gap);
}

/* -------------------------------------------------------------------------
   Responsive + reduced motion
   ---------------------------------------------------------------------- */

@media (max-width: 1023px) {

	.pn-vsection--grid,
	.pn-video-archive-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.pn-vsection--spotlight,
	.pn-vsection--split {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 599px) {

	.pn-vsection--grid,
	.pn-video-archive-grid,
	.pn-vsection__rest {
		grid-template-columns: minmax(0, 1fr);
	}

	.pn-video-list {
		grid-template-columns: minmax(0, 1fr);
	}

	.pn-vfloat {
		max-width: 78vw;
	}
}

@media (prefers-reduced-motion: reduce) {

	.pn-video--fx-cinematic,
	.pn-video--fx-border .pn-vplayer::after,
	.pn-vfloat--anim-slide,
	.pn-vfloat--anim-fade {
		animation: none !important;
	}

	.pn-vcard__media img,
	.pn-vplayer__poster,
	.pn-video--fx-elevation,
	.pn-video--fx-reflection .pn-vplayer::after {
		transition: none !important;
	}

	.pn-video--fx-3d .pn-vplayer {
		transform: none;
	}
}

/* ---------- Empty shells must stay hidden ----------
   The lightbox and floating-player shells are printed in the footer of every
   page with the `hidden` attribute. A `display` declaration beats the browser's
   rule for [hidden], so without this the empty shell painted its backdrop over
   the whole site with only its navigation visible. */

.pn-vlightbox[hidden],
.pn-vfloat[hidden] {
	display: none;
}