/**
 * Hub de vídeos — filtros da raiz, blocos curados, navegação de jornadas e
 * o sub-hub por tipo no desenho A «jogo como cabeçalho».
 *
 * Carrega só nas categorias do ramo Vídeos, depois do news-hub.css (a casca
 * do hub) e do homepage-videos.css (cartão e faixa). Mobile-first com
 * min-width; filas de chips rolam dentro do contentor (docs/RESPONSIVO.md).
 */

/* ==========================================================================
   Chip (filtros e jornadas) — alvo de 44px em todos os tamanhos
   ========================================================================== */
.sp-vhub-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	min-height: 44px;
	min-width: 44px;
	padding: 0 0.875rem;
	border-radius: var(--sp-radius-sm);
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;
	background: var(--sp-surface);
	border: 1px solid var(--sp-border);
	color: var(--sp-ink);
	transition: background 0.2s, color 0.2s, border-color 0.2s;
}

.sp-vhub-chip:hover {
	background: var(--sp-porto-light);
	border-color: var(--sp-porto-light);
	color: var(--sp-porto);
}

.sp-vhub-chip.is-active {
	background: var(--sp-porto);
	border-color: var(--sp-porto);
	color: var(--sp-surface);
}

.sp-vhub-chip.is-active:hover {
	background: var(--sp-porto-hover);
	color: var(--sp-surface);
}

.sp-vhub-chip:focus-visible {
	outline: 2px solid var(--sp-porto);
	outline-offset: 2px;
}

/* ==========================================================================
   Filtros da raiz
   ========================================================================== */
.sp-vhub-filtros {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
	padding: 0.75rem 0.875rem;
	background: var(--sp-surface);
	border: 1px solid var(--sp-border);
	border-radius: var(--sp-radius);
}

.sp-vhub-filtros__fila {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
}

.sp-vhub-filtros__rotulo {
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: var(--sp-tracking-kicker);
	color: var(--sp-ink-soft);
}

.sp-vhub-filtros__chips {
	display: flex;
	gap: 0.5rem;
	margin: 0;
	padding: 0 0 0.25rem;
	list-style: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.sp-vhub-filtros__chips::-webkit-scrollbar {
	display: none;
}

.sp-vhub-filtros__chips > li {
	flex: 0 0 auto;
}

.sp-vhub-filtros__limpar {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	min-height: 44px;
	font-size: 13px;
	font-weight: 700;
	color: var(--sp-porto);
}

/* Desktop: rótulo à esquerda, chips à direita, numa linha por filtro. */
@media (min-width: 1024px) {
	.sp-vhub-filtros__fila {
		flex-direction: row;
		align-items: center;
		gap: 1rem;
	}

	.sp-vhub-filtros__rotulo {
		flex: 0 0 4.5rem;
	}

	.sp-vhub-filtros__chips {
		flex: 1 1 auto;
		min-width: 0;
		padding-bottom: 0;
	}
}

/* ==========================================================================
   Blocos curados (topo da raiz, página 1 sem filtros)
   ========================================================================== */
.sp-vhub-curados {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.sp-vhub-curados:empty {
	display: none;
}

.sp-vhub-curados .sp-vstrip:last-child {
	margin-bottom: 0.5rem;
}

/* ==========================================================================
   Navegação de jornadas (sub-hub por tipo)
   ========================================================================== */
.sp-vjornadas {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	min-width: 0;
}

.sp-vjornadas__topo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: center;
	gap: 0.5rem;
}

.sp-vjornadas__actual {
	margin: 0;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	color: var(--sp-ink);
}

.sp-vjornadas__seta {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	justify-self: start;
	min-height: 44px;
	padding: 0 0.75rem;
	border-radius: var(--sp-radius-sm);
	font-size: 14px;
	font-weight: 700;
	color: var(--sp-porto);
	text-decoration: none;
}

.sp-vjornadas__seta--next {
	justify-self: end;
}

.sp-vjornadas__seta:hover {
	background: var(--sp-porto-light);
}

.sp-vjornadas__seta.is-vazia {
	visibility: hidden;
}

.sp-vjornadas__lista {
	display: flex;
	gap: 0.5rem;
	margin: 0;
	padding: 0 0 0.25rem;
	list-style: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.sp-vjornadas__lista::-webkit-scrollbar {
	display: none;
}

.sp-vjornadas__lista > li {
	flex: 0 0 auto;
}

@media (min-width: 768px) {
	.sp-vjornadas__actual {
		font-size: 26px;
	}
}

/* ==========================================================================
   Desenho A — jogo como cabeçalho
   ========================================================================== */
.sp-vjornada {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	min-width: 0;
}

.sp-vjogo {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	min-width: 0;
}

/* A faixa escura: estado + data, equipas e resultado, convite à ficha. */
.sp-vjogo__cab {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0.625rem;
	padding: 0.875rem 1rem;
	border-radius: var(--sp-radius);
	background: var(--sp-navy);
	color: var(--sp-surface);
	text-decoration: none;
	transition: background 0.2s;
}

a.sp-vjogo__cab:hover {
	background: var(--sp-navy-mid);
}

a.sp-vjogo__cab:focus-visible {
	outline: 2px solid var(--sp-accent);
	outline-offset: 2px;
}

.sp-vjogo__estado {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	min-width: 0;
	font-size: 12px;
	color: var(--sp-on-navy);
}

.sp-vjogo__chip {
	padding: 0.125rem 0.5rem;
	border-radius: var(--sp-radius-xs);
	background: color-mix(in srgb, var(--sp-surface) 12%, transparent);
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: var(--sp-tracking-kicker-sm);
	color: var(--sp-surface);
}

.sp-vjogo--ao-vivo .sp-vjogo__chip,
.sp-vjogo--intervalo .sp-vjogo__chip {
	background: var(--sp-live);
}

.sp-vjogo__jogo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: center;
	gap: 0.75rem;
	min-width: 0;
}

.sp-vjogo__equipa {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	min-width: 0;
	font-size: 15px;
	font-weight: 700;
}

.sp-vjogo__equipa--fora {
	justify-content: flex-end;
	text-align: right;
}

.sp-vjogo__nome {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.sp-vjogo__logo {
	flex-shrink: 0;
	width: 24px;
	height: 24px;
	object-fit: contain;
}

.sp-vjogo__placar {
	font-size: 24px;
	font-weight: 700;
	line-height: 1;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.sp-vjogo__vs {
	font-size: 14px;
	font-weight: 600;
	color: var(--sp-on-navy);
}

.sp-vjogo__cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	min-width: 0;
	font-size: 13px;
}

.sp-vjogo__sem {
	color: var(--sp-ink-muted);
}

.sp-vjogo__ver {
	margin-left: auto;
	font-weight: 700;
	color: var(--sp-accent);
}

/* Jogo sem vídeos do tipo: faixa clara, só o convite para a ficha. */
.sp-vjogo.is-muted .sp-vjogo__cab {
	background: var(--sp-surface-subtle);
	color: var(--sp-ink);
}

.sp-vjogo.is-muted a.sp-vjogo__cab:hover {
	background: var(--sp-border);
}

.sp-vjogo.is-muted .sp-vjogo__estado,
.sp-vjogo.is-muted .sp-vjogo__vs {
	color: var(--sp-ink-soft);
}

.sp-vjogo.is-muted .sp-vjogo__chip {
	background: var(--sp-border);
	color: var(--sp-ink-strong);
}

.sp-vjogo.is-muted .sp-vjogo__ver {
	color: var(--sp-porto);
}

/* Os vídeos do tipo: fila que rola no telemóvel, grelha a partir de md. */
.sp-vjogo__fila {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 15rem;
	gap: 1rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x proximity;
	-webkit-overflow-scrolling: touch;
}

.sp-vjogo__item {
	min-width: 0;
	scroll-snap-align: start;
}

@media (min-width: 768px) {
	.sp-vjogo__cab {
		grid-template-columns: auto minmax(0, 1fr) auto;
		align-items: center;
		gap: 1.25rem;
		padding: 1rem 1.25rem;
	}

	.sp-vjogo__estado {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.25rem;
	}

	.sp-vjogo__cta {
		flex-direction: column;
		align-items: flex-end;
		justify-content: center;
		gap: 0.125rem;
	}

	.sp-vjogo__placar {
		font-size: 28px;
	}

	.sp-vjogo__fila {
		grid-auto-flow: row;
		grid-auto-columns: auto;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		overflow-x: visible;
		padding-bottom: 0;
	}
}

@media (min-width: 1280px) {
	.sp-vjogo__fila {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
