/* ==========================================================
   directo.css — Página de DIRECTO (live blog) · rediseño LV.
   Diseña SOLO el directo (<main>). Extiende el sistema (tokens.css +
   base.css) y REUTILIZA las primitivas del detalle de noticia
   (article.css): .article__body, .article__media-block, .media,
   .article__pullquote, .article__embed, .article__poll, .article__related.

   Acento del directo = NEGRO/ROJO de "En directo" (var(--live)), no navy.
   Un único DOM responsive: 1024px (tablet) / 640px (móvil).

   Unidades del proyecto: font-size en REM (--fs-*), letter-spacing en EM,
   gaps/paddings de layout en PX, bordes/sombras en PX.
   ========================================================== */

/* ── Tokens propios del directo (mínimos; el resto vienen de tokens.css) ── */
:root {
	/* El proyecto usa mono = sans (tokens.css). Mantenemos esa decisión para las
     etiquetas de hora del directo (en vez de la JetBrains Mono del handoff). */
	--f-mono: var(--f-sans);
	--shadow-md: 0 1px 2px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 30, 80, 0.08);
	--lv-band-dark: #101216; /* banda oscura alternativa (apertura) */
	--lv-brand: var(--lv-blue); /* navy de marca (banda de apertura), fijo */
	--accent-quote: oklch(45% 0.1 25); /* terracota apagado (avatares) */
	--r-card: 0px; /* superficies de tarjeta — cuadradas (sistema LV) */
	--directo-rail: 360px; /* raíl derecho (navegador de claves) */
	--live-bg: color-mix(in oklab, var(--live) 9%, var(--paper));
}

/* ══════════════════════════════════════════════════════════
   ESTRUCTURA
══════════════════════════════════════════════════════════ */
.directo {
	--gutter: 80px;
	display: block;
}
.directo__head {
	padding: 0 var(--gutter);
}

.directo__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) var(--directo-rail);
	gap: var(--gutter);
	align-items: start;
	margin-top: 32px;
}
.directo__col {
	min-width: 0;
	padding-left: var(--gutter);
}

.directo__rail {
	position: sticky;
	top: 20px;
	align-self: start;
	display: grid;
	gap: 28px;
}

/* ══════════════════════════════════════════════════════════
   APERTURA — antetítulo · "En directo" · banda navy (título + vídeo)
══════════════════════════════════════════════════════════ */
.directo__eyebrows {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 16px;
}
.directo__kicker {
	font-family: var(--f-sans);
	font-size: var(--fs-12);
	font-weight: 600;
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--lv-blue);
}
.directo__live {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	white-space: nowrap;
	border: 1.5px solid var(--live);
	border-radius: var(--r-chip);
	padding: 3px 10px;
	font-family: var(--f-sans);
	font-size: var(--fs-11);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--live);
}
.directo__live-dot {
	position: relative;
	width: 8px;
	height: 8px;
	flex: 0 0 auto;
}
.directo__live-dot::before,
.directo__live-dot::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: var(--live);
}
.directo__live-dot::after {
	animation: lv-pulse 1.8s ease-out infinite;
}
@media (prefers-reduced-motion: reduce) {
	.directo__live-dot::after {
		animation: none;
	}
}

/* Banda de apertura (sangra a los bordes del contenido vía gutter negativo) */
.directo__opener {
	margin: 4px calc(var(--gutter) * -1) 0;
	background: var(--lv-brand, var(--lv-blue));
	padding: 30px var(--gutter);
}
.directo__opener-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
	align-items: start;
}
.directo__title {
	font-family: var(--f-headline);
	font-weight: 600;
	font-size: var(--fs-38);
	line-height: 1.1;
	letter-spacing: -0.01em;
	color: #fff;
	margin: 0;
	text-wrap: balance;
}
.directo__deck {
	margin: 16px 0 0;
	font-family: var(--f-text);
	font-size: var(--fs-19);
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.85);
	text-wrap: pretty;
}
.directo__opener-media {
	margin: 0;
}
.directo__opener-media .media {
	border: none;
}

/* ══════════════════════════════════════════════════════════
   AUTORES — avatares solapados + firma + acciones
══════════════════════════════════════════════════════════ */
.directo__authors {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 0;
	flex-wrap: wrap;
	border-top: 1px solid var(--hair);
	border-bottom: 1px solid var(--hair);
}
.directo__authors-avatars {
	display: flex;
}
.directo__authors-avatars .directo__avatar + .directo__avatar {
	margin-left: -12px;
}
.directo__avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	flex-shrink: 0;
	display: grid;
	place-items: center;
	border: 2px solid var(--paper);
	background: linear-gradient(135deg, var(--lv-blue), var(--accent-quote, #6b4a52));
	color: #fff;
	font-family: var(--f-sans);
	font-weight: 700;
	font-size: var(--fs-13);
}
.directo__authors-id {
	flex: 1;
	min-width: 180px;
}
.directo__authors-by {
	font-family: var(--f-sans);
	font-size: var(--fs-13);
	color: var(--ink);
}
.directo__authors-by strong {
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: var(--letter-spacing-kicker);
}
.directo__authors-roles {
	margin-top: 3px;
	font-family: var(--f-sans);
	font-size: var(--fs-12_5);
	color: var(--meta);
}
.directo__authors-actions {
	display: flex;
	gap: 6px;
	flex-shrink: 0;
}
.directo__authors-actions .iconbtn[aria-pressed="true"] {
	background: var(--ink);
	border-color: var(--ink);
	color: var(--paper);
}

/* ══════════════════════════════════════════════════════════
   CLAVES DEL DIRECTO — timeline horizontal (navegación)
══════════════════════════════════════════════════════════ */
.directo__keys {
	margin-top: 24px;
	padding: 20px 0;
	border-top: 1px solid var(--hair);
	border-bottom: 1px solid var(--hair);
}
.directo__keys-head {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 16px;
}
.directo__label {
	font-family: var(--f-sans);
	font-size: var(--fs-11_5);
	font-weight: 700;
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--ink);
}
.directo__label--live {
	color: var(--live);
}
.directo__keys-arrows {
	margin-left: auto;
	display: flex;
	gap: 8px;
}
.directo__keys-track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(200px, 1fr);
	overflow-x: auto;
	scrollbar-width: none;
	border-top: 2px solid var(--live);
}
.directo__keys-track::-webkit-scrollbar {
	display: none;
}
.directo__key {
	text-align: left;
	cursor: pointer;
	background: transparent;
	border: none;
	padding: 16px 20px 0 0;
	position: relative;
}
.directo__key::before {
	content: "";
	position: absolute;
	top: -7px;
	left: 0;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--paper);
	border: 2px solid var(--live);
}
.directo__key--first::before {
	background: var(--live);
}
.directo__key-rel {
	font-family: var(--f-mono);
	font-size: var(--fs-11);
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--meta);
	margin-bottom: 6px;
}
.directo__key--first .directo__key-rel {
	color: var(--live);
}
.directo__key-title {
	font-family: var(--f-headline);
	font-weight: 600;
	font-size: var(--fs-15);
	line-height: 1.25;
	color: var(--ink);
	padding-right: 14px;
	text-wrap: balance;
}

/* Botón circular (flechas) */
.directo__round {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	flex-shrink: 0;
	border: 1px solid var(--hair);
	background: var(--paper);
	color: var(--ink);
	display: grid;
	place-items: center;
	cursor: pointer;
	transition:
		background 0.15s,
		border-color 0.15s,
		color 0.15s;
}
.directo__round:hover:not(:disabled) {
	border-color: var(--live);
	color: var(--live);
}
.directo__round:disabled {
	opacity: 0.35;
	cursor: default;
}

/* ══════════════════════════════════════════════════════════
   "LAS CLAVES, DE UN VISTAZO" — resumen plegable
══════════════════════════════════════════════════════════ */
.directo__claves {
	margin-top: 24px;
	border: 1px solid var(--hair);
	border-left: 3px solid var(--live);
	background: var(--paper);
	padding: 18px 22px;
}
.directo__claves > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	cursor: pointer;
	list-style: none;
}
.directo__claves > summary::-webkit-details-marker {
	display: none;
}
.directo__claves-toggle {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: var(--f-sans);
	font-size: var(--fs-12);
	color: var(--meta);
}
.directo__claves-toggle .chev {
	transition: transform 0.2s;
}
.directo__claves[open] .directo__claves-toggle .chev {
	transform: rotate(180deg);
}
.directo__claves-list {
	margin: 14px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 11px;
}
.directo__claves-list li {
	display: grid;
	grid-template-columns: 16px 1fr;
	gap: 12px;
	align-items: start;
	font-family: var(--f-text);
	font-size: var(--fs-16);
	line-height: 1.5;
	color: var(--ink);
	text-wrap: pretty;
}
.directo__claves-list .dot {
	margin-top: 7px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--live);
}

/* ══════════════════════════════════════════════════════════
   AVISO DE NUEVAS ACTUALIZACIONES (tiempo real)
══════════════════════════════════════════════════════════ */
.directo__newpill-wrap {
	position: sticky;
	top: 70px;
	z-index: 20;
	display: flex;
	justify-content: center;
	height: 0;
}
.directo__newpill {
	display: none;
	align-items: center;
	gap: 8px;
	height: 40px;
	padding: 0 18px;
	border-radius: var(--r-pill);
	border: none;
	cursor: pointer;
	background: var(--live);
	color: #fff;
	box-shadow: var(--shadow-lg);
	font-family: var(--f-sans);
	font-size: var(--fs-13);
	font-weight: 600;
}
.directo__newpill.is-on {
	display: inline-flex;
}

/* ══════════════════════════════════════════════════════════
   FEED DE POSTS — cada post reutiliza el renderizador de bloques
══════════════════════════════════════════════════════════ */
.directo__feed {
	margin-top: 28px;
}
.directo__post {
	background: var(--paper);
	border: 1px solid var(--hair);
	border-radius: var(--r-card);
	padding: 22px 26px;
	margin-bottom: 22px;
	box-shadow: var(--shadow-md);
	scroll-margin-top: 84px;
}
.directo__post--key {
	border-left: 3px solid var(--live);
}

.directo__post-meta {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 14px;
}
.directo__post-id {
	flex: 1;
	min-width: 0;
}
.directo__post-author {
	font-family: var(--f-sans);
	font-size: var(--fs-12_5);
	font-weight: 700;
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--ink);
}
.directo__post-sub {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 2px;
	flex-wrap: wrap;
}
.directo__post-role {
	font-family: var(--f-sans);
	font-size: var(--fs-12_5);
	color: var(--meta);
}
.directo__post-sub .sep {
	color: var(--meta-soft);
}
.directo__post-rel {
	font-family: var(--f-sans);
	font-weight: 700;
	font-size: var(--fs-12_5);
	color: var(--ink);
}
.directo__post-time {
	font-family: var(--f-mono);
	font-size: var(--fs-12);
	color: var(--meta);
}
.directo__post-badges {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
}
.directo__post-pinned {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: var(--f-sans);
	font-size: var(--fs-11);
	font-weight: 600;
	letter-spacing: var(--letter-spacing-kicker);
	color: var(--meta);
}
.directo__post-key {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-family: var(--f-sans);
	font-size: var(--fs-11);
	font-weight: 700;
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: #fff;
	background: var(--live);
	padding: 2px 8px;
	border-radius: var(--r-chip);
}
.directo__post-key::before {
	content: "●";
	font-size: 8px;
	line-height: 1;
}

.directo__post-title {
	font-family: var(--f-headline);
	font-weight: 600;
	font-size: var(--fs-23);
	line-height: 1.2;
	color: var(--ink);
	margin: 0 0 14px;
	text-wrap: balance;
}

/* Cuerpo del post: hereda tipografía de lectura de article.css (.article__body) */
.directo__post-body {
	margin-top: 0;
}
.directo__post-body > :first-child {
	margin-top: 0 !important;
}
.directo__post-body > p:first-child {
	margin-top: 0;
}
.directo__post-body .article__media-block,
.directo__post-body .article__pullquote,
.directo__post-body .article__embed,
.directo__post-body .article__poll,
.directo__post-body .article__related {
	margin-top: 20px;
	margin-bottom: 20px;
}
.directo__post-body .article__pullquote {
	margin-left: 0;
}

/* Acciones del post */
.directo__post-actions {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--hair-soft);
}
.directo__post-share {
	font-family: var(--f-sans);
	font-size: var(--fs-12);
	color: var(--meta);
}
.directo__post-actions .spacer {
	flex: 1;
}
.directo__post-actions .iconbtn {
	width: 30px;
	height: 30px;
}
.directo__post-actions .iconbtn[aria-pressed="true"] {
	background: var(--ink);
	border-color: var(--ink);
	color: var(--paper);
}

/* ══════════════════════════════════════════════════════════
   RAÍL — "Saltar a una clave" (sticky) + anuncio
══════════════════════════════════════════════════════════ */
.directo__nav {
	border: 1px solid var(--hair);
	border-top: 3px solid var(--live);
	padding: 16px 18px;
}
.directo__nav-head {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 14px;
}
.directo__nav-list {
	position: relative;
	display: grid;
}
.directo__nav-list::before {
	content: "";
	position: absolute;
	left: 5px;
	top: 6px;
	bottom: 10px;
	width: 1px;
	background: var(--hair);
}
.directo__nav-item {
	text-align: left;
	cursor: pointer;
	background: transparent;
	border: none;
	width: 100%;
	padding: 0 0 16px 22px;
	position: relative;
}
.directo__nav-item:last-child {
	padding-bottom: 0;
}
.directo__nav-item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	width: 11px;
	height: 11px;
	border-radius: 50%;
	background: var(--paper);
	border: 2px solid var(--live);
}
.directo__nav-item--first::before {
	background: var(--live);
}
.directo__nav-rel {
	font-family: var(--f-mono);
	font-size: var(--fs-11);
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--meta);
	margin-bottom: 3px;
}
.directo__nav-item--first .directo__nav-rel {
	color: var(--live);
}
.directo__nav-title {
	font-family: var(--f-headline);
	font-weight: 600;
	font-size: var(--fs-14);
	line-height: 1.25;
	color: var(--ink);
	text-wrap: balance;
}
.directo__nav-item:hover .directo__nav-title {
	color: var(--live);
}

.directo__rail .ad-slot {
	margin: 0 auto;
}
.directo__ad-note {
	text-align: center;
	margin-top: 8px;
	font-family: var(--f-sans);
	font-size: var(--fs-11);
	letter-spacing: var(--letter-spacing-kicker);
	text-transform: uppercase;
	color: var(--meta-soft);
}

/* ══════════════════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
	.directo {
		--gutter: 0px;
	}
	.directo__head {
		max-width: 760px;
		margin-inline: auto;
	}
	.directo__grid {
		grid-template-columns: 1fr;
		gap: 40px;
		max-width: 760px;
		margin-inline: auto;
	}
	.directo__col {
		padding-left: 0;
	}
	.directo__rail {
		position: static;
	}
	.directo__opener {
		padding: 26px 28px;
		margin-left: -16px;
		margin-right: -16px;
	}
}

@media (max-width: 640px) {
	.container {
		padding-left: 16px;
		padding-right: 16px;
	}
	.directo__title {
		font-size: var(--fs-30);
		line-height: 1.08;
	}
	.directo__deck {
		font-size: var(--fs-17);
	}
	.directo__opener {
		padding: 22px 18px;
	}
	.directo__opener-grid {
		grid-template-columns: 1fr;
		gap: 18px;
	}
	.directo__keys-arrows {
		display: none;
	}
	.directo__post {
		padding: 18px 18px;
	}
	.directo__post-title {
		font-size: var(--fs-21);
	}
}
