.skv-tv-shell {
	background: var(--skv-bg-canvas, #000);
	color: var(--skv-text-primary, #fff);
	display: grid;
	font-family: var(--skv-font, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
	min-height: 100dvh;
	overflow: hidden;
	place-items: center;
	width: 100vw;
}

.skv-tv-shell *,
.skv-tv-shell *::before,
.skv-tv-shell *::after {
	box-sizing: border-box;
}

.skv-tv-shell[v-cloak] {
	display: none;
}

.skv-tv-canvas {
	aspect-ratio: 16 / 9;
	container-type: size;
	overflow: hidden;
	position: relative;
	width: min(100vw, calc(100dvh * 16 / 9));
}

.skv-tv-bg {
	height: 100%;
	inset: 0;
	object-fit: cover;
	object-position: center;
	pointer-events: none;
	position: absolute;
	user-select: none;
	width: 100%;
	z-index: 1;
}

.skv-tv-stage,
.skv-tv-queue,
.skv-tv-qrcode {
	position: absolute;
	z-index: 2;
}

.skv-tv-qrcode {
	aspect-ratio: 1 / 1;
	bottom: 4.8%;
	display: block;
	left: 3.65%;
	width: 12.4%;
}

.skv-tv-qrcode__label {
	color: #fff7d6;
	font-size: clamp(0.75rem, 1.35cqw, 1.1rem);
	font-weight: 900;
	letter-spacing: 0;
	line-height: 1;
	position: absolute;
	top: -14.5%;
	width: 100%;
	text-align: center;
	text-shadow: 0 3px 12px rgba(0, 0, 0, 0.65);
}

.skv-tv-qrcode__image,
.skv-tv-qrcode__empty {
	aspect-ratio: 1 / 1;
	border: 1px solid rgba(255, 255, 255, 0.72);
	border-radius: 8px;
	box-shadow: 0 12px 34px rgba(0, 0, 0, 0.35);
	width: 100%;
}

.skv-tv-qrcode__image {
	background: #fff;
	display: block;
	object-fit: contain;
	padding: 4%;
}

.skv-tv-qrcode__empty {
	align-items: center;
	background: rgba(0, 0, 0, 0.32);
	color: rgba(255, 244, 214, 0.88);
	display: grid;
	font-size: clamp(0.62rem, 1.05cqw, 0.88rem);
	font-weight: 800;
	justify-items: center;
	padding: 8%;
	text-align: center;
	text-transform: uppercase;
}

/* =========================================================
   TV / Apresentacao - consolidacao final
   Fonte unica de verdade para fila, palco e mapa macro.
   ========================================================= */

/* Mapa macro dos containers principais.
   Usar somente left/top/width/height.
   Nao usar right para posicionar a fila. */
.skv-tv-shell {
	--skv-tv-stage-left: 21.5%;
	--skv-tv-stage-top: 34%;
	--skv-tv-stage-width: 32.5%;
	--skv-tv-stage-height: 59%;

	--skv-tv-queue-left: 56%;
	--skv-tv-queue-top: 34%;
	--skv-tv-queue-width: 42%;
	--skv-tv-queue-height: 59%;
}

.skv-tv-shell .skv-tv-stage {
	container-type: size;
	position: absolute;
	left: var(--skv-tv-stage-left);
	top: var(--skv-tv-stage-top);
	width: var(--skv-tv-stage-width);
	height: var(--skv-tv-stage-height);
	z-index: 2;
}

.skv-tv-shell .skv-tv-queue {
	background: #050505;
	border: 1px solid rgba(var(--skv-brand-accent-rgb), 0.75);
	border-radius: 10px;
	container-type: size;
	overflow: visible;
	position: absolute;
	left: var(--skv-tv-queue-left);
	right: auto;
	top: var(--skv-tv-queue-top);
	width: var(--skv-tv-queue-width);
	height: var(--skv-tv-queue-height);
	z-index: 2;
}

/* Palco: o container manda na proporcao; a imagem se adapta. */
.skv-tv-shell .skv-tv-stage__inner {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
	border: 1px solid rgba(var(--skv-brand-accent-rgb), 0.58);
	border-radius: 10px;
	background: rgba(0, 0, 0, 0.16);
}

.skv-tv-shell .skv-tv-stage__bg {
	position: absolute;
	inset: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	pointer-events: none;
	user-select: none;
}

.skv-tv-shell .skv-tv-stage__overlay {	
	inset: 0;
	position: absolute;
	z-index: 2;
}

.skv-tv-shell .skv-tv-queue__header {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 1%;
	height: 8.5%;
	min-height: 8.5%;
	padding: 0 4%;
	border-bottom: 1px solid rgba(var(--skv-brand-accent-rgb), 0.58);
}

.skv-tv-shell .skv-tv-queue__header::before,
.skv-tv-shell .skv-tv-queue__header::after,
.skv-tv-shell .skv-tv-queue__title::before,
.skv-tv-shell .skv-tv-queue__title::after {
	content: none !important;
	display: none !important;
}

.skv-tv-shell .skv-tv-queue__title {
	color: var(--skv-action-primary);
	font-size: 4.5cqw;
	font-weight: 800;
	letter-spacing: 0.12em;
	line-height: 1;
	margin: 0;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-queue__total {
	color: var(--skv-action-primary);
	font-size: 5.0cqw;
	font-weight: 800;
	justify-self: end;
	letter-spacing: 0.12em;
	line-height: 1;
	margin: 0;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-queue__list {
	display: grid;
	grid-template-rows: repeat(5, minmax(0, 1fr));
	height: 91.5%;
	min-height: 0;
	overflow: visible;
}

.skv-tv-shell .skv-tv-queue__item {
	display: grid;
	grid-template-columns: 12% minmax(0, 1fr) 8%;
	align-items: center;
	gap: 1.0%;
	min-height: 0;
	padding: 1.15cqh 3%;
	border-bottom: 1px solid rgba(var(--skv-brand-accent-rgb), 0.42);
	background: rgba(0, 0, 0, 0.16);
	position: relative;
	z-index: 1;
}

.skv-tv-shell .skv-tv-queue__item:last-child {
	border-bottom: 1px solid rgba(var(--skv-brand-accent-rgb), 0.42);
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item {
	animation-name: skv-tv-queue-wave;
	animation-duration: 1.85s;
	animation-timing-function: linear;
	animation-iteration-count: 1;
	animation-fill-mode: both;
	transform: translate3d(0, 0, 0);
	transform-origin: center;
	will-change: transform, filter, box-shadow, background-color;
	z-index: 3;
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item:nth-child(5) {
	animation-delay: 0s;
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item:nth-child(4) {
	animation-delay: 0.14s;
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item:nth-child(3) {
	animation-delay: 0.28s;
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item:nth-child(2) {
	animation-delay: 0.42s;
}

.skv-tv-shell .skv-tv-queue.skv-tv-queue--wave .skv-tv-queue__item:nth-child(1) {
	animation-delay: 0.56s;
}

@keyframes skv-tv-queue-wave {
	0% {
		transform: translate3d(0, 0, 0) scale(1);
		filter: brightness(1) saturate(1);
		background-color: rgba(0, 0, 0, 0.16);
		box-shadow: none;
	}

	8% {
		transform: translate3d(0, -5%, 0) scale(1.008);
		filter: brightness(1.10) saturate(1.04);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.04);
		box-shadow:
			0 0 6px rgba(var(--skv-brand-accent-rgb), 0.10);
	}

	16% {
		transform: translate3d(0, -11%, 0) scale(1.018);
		filter: brightness(1.22) saturate(1.08);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.08);
		box-shadow:
			inset 0 0 0 1px rgba(var(--skv-brand-accent-rgb), 0.30),
			0 0 12px rgba(var(--skv-brand-accent-rgb), 0.18);
	}

	26% {
		transform: translate3d(0, -18%, 0) scale(1.035);
		filter: brightness(1.42) saturate(1.14);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.14);
		box-shadow:
			inset 0 0 0 1px rgba(var(--skv-brand-accent-rgb), 0.52),
			0 0 18px rgba(var(--skv-brand-accent-rgb), 0.30),
			0 0 30px rgba(var(--skv-brand-accent-rgb), 0.18);
	}

	36% {
		transform: translate3d(0, -23%, 0) scale(1.048);
		filter: brightness(1.62) saturate(1.20);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.19);
		box-shadow:
			inset 0 0 0 1px rgba(var(--skv-brand-accent-rgb), 0.68),
			0 0 22px rgba(var(--skv-brand-accent-rgb), 0.40),
			0 0 38px rgba(var(--skv-brand-accent-rgb), 0.24);
	}

	48% {
		transform: translate3d(0, -20%, 0) scale(1.040);
		filter: brightness(1.48) saturate(1.16);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.15);
		box-shadow:
			inset 0 0 0 1px rgba(var(--skv-brand-accent-rgb), 0.54),
			0 0 18px rgba(var(--skv-brand-accent-rgb), 0.30);
	}

	60% {
		transform: translate3d(0, -13%, 0) scale(1.025);
		filter: brightness(1.28) saturate(1.10);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.09);
		box-shadow:
			0 0 12px rgba(var(--skv-brand-accent-rgb), 0.18);
	}

	74% {
		transform: translate3d(0, -6%, 0) scale(1.010);
		filter: brightness(1.12) saturate(1.04);
		background-color: rgba(var(--skv-brand-accent-rgb), 0.04);
		box-shadow:
			0 0 6px rgba(var(--skv-brand-accent-rgb), 0.10);
	}

	88% {
		transform: translate3d(0, -2%, 0) scale(1.002);
		filter: brightness(1.04) saturate(1.02);
		background-color: rgba(0, 0, 0, 0.16);
		box-shadow: none;
	}

	100% {
		transform: translate3d(0, 0, 0) scale(1);
		filter: brightness(1) saturate(1);
		background-color: rgba(0, 0, 0, 0.16);
		box-shadow: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.skv-tv-shell .skv-tv-queue__item {
		animation: none;
		transform: none;
		filter: none;
		box-shadow: none;
	}
}

.skv-tv-shell .skv-tv-queue__position {
	display: grid;
	place-items: center;
	width: 84%;
	aspect-ratio: 1 / 1;
	border: 1px solid rgba(var(--skv-brand-accent-rgb), 0.82);
	border-radius: 0.7cqw;
	background: rgba(0, 0, 0, 0.22);
	color: var(--skv-action-primary);
	font-size: 6.2cqw;
	font-weight: 900;
	line-height: 1;
}

.skv-tv-shell .skv-tv-queue__content {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 0;
	min-height: 100%;
	overflow: hidden;
}

.skv-tv-shell .skv-tv-queue__name {
	color: #fff;
	font-size: 3.8cqw;
	font-weight: 850;
	letter-spacing: 0.055em;
	line-height: 1.08;
	margin: 0 0 0.65cqh;
	overflow: hidden;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-queue__song {
	color: var(--skv-action-primary);
	font-size: 2.8cqw;
	font-weight: 750;
	letter-spacing: 0.035em;
	line-height: 1.08;
	margin: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-queue__icon {
	align-self: center;
	justify-self: center;
	position: relative;
	width: 5.8cqw;
	aspect-ratio: 1 / 1;
	color: var(--skv-action-primary);
}

.skv-tv-shell .skv-tv-queue__icon::before {
	background: var(--skv-action-primary);
	border-radius: 50%;
	content: "";
	height: 34%;
	left: 50%;
	position: absolute;
	top: 4%;
	transform: translateX(-50%);
	width: 42%;
}

.skv-tv-shell .skv-tv-queue__icon::after {
	background: var(--skv-action-primary);
	border-radius: 0.8cqw 0.8cqw 0.3cqw 0.3cqw;
	bottom: 4%;
	content: "";
	height: 48%;
	left: 50%;
	position: absolute;
	transform: translateX(-50%);
	width: 76%;
}

.skv-tv-shell .skv-tv-queue__empty {
	align-items: center;
	background: rgba(0, 0, 0, 0.12);
	color: #d7d7d7;
	display: grid;
	font-size: 3.6cqw;
	font-weight: 800;
	height: 91.5%;
	justify-items: center;
	line-height: 1.15;
	padding: 4%;
	text-align: center;
	text-transform: uppercase;
}

.skv-tv-shell .skv-tv-stage__content {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: 1.2cqh;
	height: 100%;
	justify-content: center;
	min-height: 0;
	padding: 0% 8% 8%;
	position: relative;
	text-align: center;
	z-index: 3;
}

.skv-tv-shell .skv-tv-stage__avatar {
	aspect-ratio: 1 / 1;
	display: block;
	filter: drop-shadow(0 1.8cqw 3.8cqw rgba(0, 0, 0, 0.48));
	flex: 0 0 auto;
	margin: 0 0 2cqh;
	max-height: 28%;
	object-fit: contain;
	width: 18cqw;
}

.skv-tv-shell .skv-tv-stage__name {
	color: #fff;
	display: -webkit-box;
	font-size: 8.6cqw;
	font-weight: 900;
	letter-spacing: 0;
	line-height: 1.05;
	margin: 0;
	max-width: 96%;
	overflow: hidden;
	overflow-wrap: anywhere;
	text-shadow: 0 0.8cqw 2.8cqw rgba(0, 0, 0, 0.6);
	text-transform: uppercase;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.skv-tv-shell .skv-tv-stage__separator {
	align-items: center;
	background: none;
	color: var(--skv-action-primary);
	display: flex;
	flex: 0 0 auto;
	gap: 1.2cqw;
	justify-content: center;
	margin: 2.0cqh 0 1.8cqh;
	width: 62%;
}

.skv-tv-shell .skv-tv-stage__separator::before,
.skv-tv-shell .skv-tv-stage__separator::after {
	background: rgba(var(--skv-brand-accent-rgb), 0.72);
	content: "";
	display: block;
	flex: 1 1 auto;
	height: 0.12cqh;
}

.skv-tv-shell .skv-tv-stage__separator::before {
	margin-right: 0.6cqw;
}

.skv-tv-shell .skv-tv-stage__separator::after {
	margin-left: 0.6cqw;
}

.skv-tv-shell .skv-tv-stage__song {
	color: var(--skv-action-primary);
	font-size: 4.5cqw;
	font-weight: 850;
	letter-spacing: 0;
	line-height: 1.08;
	margin: 0;
	max-width: 94%;
	overflow: hidden;
	overflow-wrap: anywhere;
	text-shadow: 0 0.6cqw 2.2cqw rgba(0, 0, 0, 0.62);
	text-transform: uppercase;
}

.skv-tv-shell .skv-tv-stage__song-text {
	display: -webkit-box;
	overflow: hidden;
	text-overflow: ellipsis;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.skv-tv-shell .skv-tv-stage__artist {
	color: #fff;
	display: -webkit-box;
	font-size: 3.5cqw;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.15;
	margin-top: 1.8cqh;
	max-width: 94%;
	overflow: hidden;
	overflow-wrap: anywhere;
	text-shadow: 0 0.6cqw 2.2cqw rgba(0, 0, 0, 0.62);
	text-transform: uppercase;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.skv-tv-shell .skv-tv-stage__empty {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: 4cqh;
	height: 100%;
	justify-content: center;
	min-height: 0;
	padding: 9% 10% 8%;
	position: relative;
	text-align: center;
	z-index: 3;
}

.skv-tv-shell .skv-tv-stage__empty p {
	color: #fff4ca;
	font-size: 4.2cqw;
	font-weight: 850;
	letter-spacing: 0;
	line-height: 1.12;
	margin: 0;
	max-width: 88%;
	overflow-wrap: anywhere;
	text-shadow: 0 0.6cqw 2.2cqw rgba(0, 0, 0, 0.58);
	text-transform: uppercase;
}

.skv-tv-shell .skv-tv-stage-transition {
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: 8;
}

.skv-tv-shell .skv-tv-stage-transition::before {
	animation: skv-tv-stage-transition-overlay 5.2s ease-in-out forwards;
	background:
		radial-gradient(circle at 50% 45%, rgba(var(--skv-brand-accent-rgb), 0.12), transparent 34%),
		rgba(0, 0, 0, 0.90);
	content: "";
	inset: 0;
	position: absolute;
	z-index: 1;
}

.skv-tv-shell .skv-tv-stage-transition__card {
	align-items: center;
	animation: skv-tv-stage-jump 5.2s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
	background: rgba(0, 0, 0, 0.66);
	border: 1px solid rgba(var(--skv-brand-accent-rgb), 0.82);
	border-radius: 1.2cqw;
	box-shadow:
		0 0 2.4cqw rgba(var(--skv-brand-accent-rgb), 0.44),
		0 0 5.4cqw rgba(var(--skv-brand-accent-rgb), 0.22),
		0 2.2cqw 5.4cqw rgba(0, 0, 0, 0.58);
	color: #fff;
	display: flex;
	flex-direction: column;
	left: 50%;
	min-width: 28%;
	padding: 2.2cqh 2.4cqw;
	position: absolute;
	text-align: center;
	top: 50%;
	transform: translate3d(-50%, -50%, 0) scale(0.72);
	will-change: transform, opacity, filter;
	z-index: 2;
}

.skv-tv-shell .skv-tv-stage-transition__avatar {
	aspect-ratio: 1 / 1;
	margin-bottom: 1.4cqh;
	object-fit: contain;
	width: 8cqw;
}

.skv-tv-shell .skv-tv-stage-transition__name {
	color: #fff;
	font-size: 3.6cqw;
	font-weight: 900;
	line-height: 1.05;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-stage-transition__song {
	color: var(--skv-action-primary);
	font-size: 2.2cqw;
	font-weight: 850;
	line-height: 1.1;
	margin-top: 1.1cqh;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

.skv-tv-shell .skv-tv-stage-transition__artist {
	color: #fff;
	font-size: 1.5cqw;
	font-weight: 750;
	line-height: 1.1;
	margin-top: 0.6cqh;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

@keyframes skv-tv-stage-jump {
	0% {
		opacity: 0;
		transform: translate3d(28vw, 10vh, 0) scale(0.42);
		filter: brightness(1);
	}

	10% {
		opacity: 1;
		transform: translate3d(-50%, -58%, 0) scale(1.18);
		filter: brightness(1.35);
	}

	18% {
		opacity: 1;
		transform: translate3d(-50%, -50%, 0) scale(1.05);
		filter: brightness(1.18);
	}

	72% {
		opacity: 1;
		transform: translate3d(-50%, -50%, 0) scale(1.05);
		filter: brightness(1.18);
	}

	88% {
		opacity: 1;
		transform: translate3d(-62%, -18%, 0) scale(0.82);
		filter: brightness(1.05);
	}

	100% {
		opacity: 0;
		transform: translate3d(-72%, 4%, 0) scale(0.60);
		filter: brightness(1);
	}
}

@keyframes skv-tv-stage-transition-overlay {
	0% {
		opacity: 0;
		backdrop-filter: blur(0);
	}

	10% {
		opacity: 1;
		backdrop-filter: blur(1.5px);
	}

	76% {
		opacity: 1;
		backdrop-filter: blur(1.5px);
	}

	100% {
		opacity: 0;
		backdrop-filter: blur(0);
	}
}
