/*
 * Narratias · capa interactiva de los gráficos de artículo (1.0.0-dev78).
 * Solo actúa sobre figuras que el script ha marcado con .nv-js: sin script,
 * el gráfico estático se ve igual que antes.
 */
.nseo-visual.nv-js .nv-item { cursor: default; transition: opacity 180ms ease; }
.nseo-visual.nv-js svg.nv-dim .nv-item { opacity: 0.35; }
.nseo-visual.nv-js svg.nv-dim .nv-item.nv-on { opacity: 1; }
.nseo-visual.nv-js .nv-ball,
.nseo-visual.nv-js .nv-bar,
.nseo-visual.nv-js .nv-node { transform-box: fill-box; transform-origin: center; }
.nseo-visual.nv-js .nv-bar { transform-origin: left center; }
.nseo-visual.nv-js .nv-col { transform-box: fill-box; transform-origin: center bottom; }
.nseo-visual.nv-js .nv-ball { transition: transform 180ms ease-out; }
.nseo-visual.nv-js .nv-node.nv-on .nv-ball { transform: scale(1.14); }
.nseo-visual.nv-js .nv-seg { transition: stroke-width 180ms ease; }
.nseo-visual--donut.nv-js .nv-item.nv-on .nv-seg { stroke-width: 36px; }
/* Las transiciones de entrada solo existen con .nv-anim (se añade al entrar
   en pantalla), para que el estado previo se aplique sin animarse. */
.nseo-visual.nv-js.nv-anim .nv-bar,
.nseo-visual.nv-js.nv-anim .nv-col { transition: transform 700ms cubic-bezier(.2,.8,.2,1); }
.nseo-visual.nv-js.nv-anim .nv-line { transition: stroke-dashoffset 1100ms cubic-bezier(.4,0,.2,1); }
.nseo-visual.nv-js.nv-anim .nv-node { transition: opacity 500ms ease, transform 600ms cubic-bezier(.2,.8,.2,1); }
.nseo-visual.nv-js.nv-anim .nv-seg { transition: stroke-dasharray 900ms cubic-bezier(.2,.8,.2,1), stroke-width 180ms ease; }
/* Estado previo a la entrada en pantalla. */
.nseo-visual.nv-js.nv-pre .nv-bar { transform: scaleX(0); }
.nseo-visual.nv-js.nv-pre .nv-col { transform: scaleY(0); }
.nseo-visual.nv-js.nv-pre .nv-node { opacity: 0; transform: translateY(8px) scale(0.92); }
/* Ficha flotante. */
.nv-tip {
	position: absolute; z-index: 5; pointer-events: none;
	max-width: 260px; padding: 9px 12px;
	background: #fff; border: 1px solid #ececf1; border-radius: 10px;
	box-shadow: 0 10px 24px -8px rgba(24,24,27,.18);
	font: 13px/1.45 Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
	color: #52525b; opacity: 0; transform: translateY(4px);
	transition: opacity 120ms ease, transform 120ms ease;
}
.nv-tip.nv-show { opacity: 1; transform: none; }
.nv-tip b { display: block; color: #18181b; font-weight: 600; margin-bottom: 2px; }
@media (prefers-reduced-motion: reduce) {
	.nseo-visual.nv-js .nv-bar, .nseo-visual.nv-js .nv-col, .nseo-visual.nv-js .nv-line, .nseo-visual.nv-js .nv-node, .nseo-visual.nv-js .nv-seg, .nseo-visual.nv-js .nv-ball { transition: none; }
}
