/*
 * ECN — Componentes propios del sistema visual (docs/01-sistema-visual.md)
 * ==========================================================================
 * C2 .ecn-dato-inline · C3 .ecn-cifra-dia · C5 .ecn-en-vivo
 * Consume solo tokens de ecn-brand-tokens.css. Cero valores literales de color.
 * Independiente del tema: ningún selector de Jannah aquí.
 */

/* ---- C2 — Dato inline en sumario ----
 * Cifra azul dentro de párrafo gris. .ecn-dato es la clase que emite el
 * shortcode [ecn_dato]; .ecn-dato-inline es el alias del sistema visual. */
.ecn-dato,
.ecn-dato-inline {
	color: var(--ecn-azul-dato);
	font-weight: 700;
	white-space: nowrap;
	/* Cifras tabulares: ancho fijo, requisito de docs/04-tipografia.md */
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
}

/* ---- C3 — La cifra del día ----
 * Vitrina del Observatorio en portada. La emite [ecn_cifra_dia].
 * Todo el bloque es un enlace al indicador (donde vive fuente y metodología). */
.ecn-cifra-dia {
	display: block;
	border: var(--ecn-borde-cifra-dia) solid var(--ecn-rojo);
	background: var(--ecn-blanco);
	padding: var(--ecn-sp-5) var(--ecn-sp-4);
	text-align: center;
	text-decoration: none;
}

.ecn-cifra-dia:hover,
.ecn-cifra-dia:focus {
	text-decoration: none;
	outline-offset: 2px;
}

.ecn-cifra-dia__antetitulo {
	display: block;
	font-family: var(--ecn-font-titular);
	font-size: var(--ecn-fs-md);
	font-variation-settings: 'wght' 700, 'wdth' 85;
	color: var(--ecn-negro);
	margin: 0 0 var(--ecn-sp-3);
}

/* __valor es el nombre de la especificación; __cifra el del markup del
 * shortcode. Se estilan ambos para que espec y código no se desalineen. */
.ecn-cifra-dia__cifra,
.ecn-cifra-dia__valor {
	display: block;
	font-family: var(--ecn-font-titular);
	/* Fluida: nunca desborda la tarjeta en pantallas angostas */
	font-size: clamp(var(--ecn-fs-xl), 6vw + 1rem, var(--ecn-fs-3xl));
	font-variation-settings: 'wght' var(--ecn-cifra-wght), 'wdth' var(--ecn-cifra-wdth);
	line-height: 1.05;
	color: var(--ecn-azul-dato);
	margin: 0 0 var(--ecn-sp-3);
	/* Cifras tabulares: ancho fijo, requisito de docs/04-tipografia.md */
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
}

.ecn-cifra-dia__contexto {
	display: block;
	font-family: var(--ecn-font-cuerpo);
	font-size: var(--ecn-fs-sm);
	color: var(--ecn-gris);
	margin: 0;
}

/* ---- Espacios publicitarios ----
 * Inventario del paquete cruzado con La Veterana + AdSense.
 * Mientras no haya código de anuncio, el espacio queda reservado con la
 * etiqueta "PUBLICIDAD" (mejor tener el hueco previsto que romper el
 * ritmo visual después — docs/01-sistema-visual.md §4).
 * Uso: <div class="ecn-espacio-publicitario">...código del anuncio...</div>
 * Variante sidebar (300x250): agregar clase ecn-espacio-publicitario--caja */
.ecn-espacio-publicitario,
.ecn-franja-publicitaria {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 90px;
	margin: var(--ecn-sp-5) 0;
	background: var(--ecn-gris-superficie);
	border: 1px dashed var(--ecn-gris-borde);
	position: relative;
	overflow: hidden;
}

.ecn-espacio-publicitario::before,
.ecn-franja-publicitaria::before {
	content: 'PUBLICIDAD';
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ecn-font-cuerpo);
	font-size: var(--ecn-fs-xs);
	letter-spacing: 0.2em;
	color: var(--ecn-gris);
	z-index: 0;
}

/* El contenido real del anuncio tapa la etiqueta */
.ecn-espacio-publicitario > *,
.ecn-franja-publicitaria > * {
	position: relative;
	z-index: 1;
}

.ecn-espacio-publicitario--caja {
	min-height: 250px;
	max-width: 300px;
	margin-inline: auto;
}

/* Los anuncios que se inserten nunca desbordan su espacio */
.ecn-espacio-publicitario img,
.ecn-espacio-publicitario iframe,
.ecn-franja-publicitaria img,
.ecn-franja-publicitaria iframe {
	max-width: 100%;
	height: auto;
}

/* ---- Responsive: móvil ---- */
@media (max-width: 640px) {
	.ecn-espacio-publicitario,
	.ecn-franja-publicitaria {
		min-height: 60px;
		margin: var(--ecn-sp-4) 0;
	}

	.ecn-cifra-dia {
		padding: var(--ecn-sp-4) var(--ecn-sp-3);
	}
}

/* ---- C5 — Indicador EN VIVO ----
 * Punto rojo pulsante junto a "Radio". Uso:
 *   <span class="ecn-en-vivo">EN VIVO</span>            → al aire (pulsa)
 *   <span class="ecn-en-vivo ecn-en-vivo--apagado">…</span> → sin transmisión (se oculta)
 * Un "EN VIVO" permanente sin transmisión desgasta la credibilidad. */
.ecn-en-vivo {
	display: inline-flex;
	align-items: center;
	gap: var(--ecn-sp-1);
	color: var(--ecn-rojo);
	font-family: var(--ecn-font-titular);
	font-size: var(--ecn-fs-xs);
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.ecn-en-vivo::before {
	content: '';
	width: 0.5em;
	height: 0.5em;
	border-radius: 50%;
	background: var(--ecn-rojo);
	animation: ecn-pulso 1.6s ease-in-out infinite;
}

.ecn-en-vivo--apagado {
	display: none;
}

@keyframes ecn-pulso {
	0%   { opacity: 1; transform: scale(1); }
	50%  { opacity: 0.35; transform: scale(0.8); }
	100% { opacity: 1; transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
	.ecn-en-vivo::before {
		animation: none;
	}
}
