/* ==========================================================================
   VLAM FACE · Infografías animadas del método
   Capas sobre las ilustraciones anatómicas: siete estructuras y, en el perfil,
   tres cadenas musculares con diez puentes de tensión.
   Funciona sin JavaScript. Respeta «prefers-reduced-motion».
   ========================================================================== */

.vf-inf {
	--vf-inf-ink: var(--vf-ink, #241b17);
	--vf-inf-accent: var(--vf-brand, #8b7f71);
	--vf-inf-line: var(--vf-line, rgba(36, 27, 23, 0.14));
	--vf-inf-surface: var(--vf-surface, #f7f3ed);
	--vf-inf-cycle: 24s;
	display: grid;
	gap: clamp(22px, 3vw, 44px);
	grid-template-columns: minmax(0, 1fr);
	align-items: start;
}

@media (min-width: 900px) {
	.vf-inf {
		grid-template-columns: minmax(0, 0.92fr) minmax(0, 1fr);
	}
	.vf-inf--cadenas {
		grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr);
	}
}

/* --------------------------------------------------------------- Lámina --- */
.vf-inf__plate {
	position: relative;
	border-radius: 3px;
	overflow: hidden;
	background: #f2ece3;
	aspect-ratio: 1414 / 2000;
	isolation: isolate;
}

.vf-inf__plate--perfil {
	aspect-ratio: 1414 / 2000;
}

.vf-inf__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: 50% 50%;
	filter: saturate(0.9) contrast(1.02);
}

.vf-inf__veil {
	position: absolute;
	inset: 0;
	pointer-events: none;
	background:
		radial-gradient(120% 90% at 50% 40%, rgba(255, 255, 255, 0) 38%, rgba(247, 243, 237, 0.72) 100%),
		linear-gradient(180deg, rgba(247, 243, 237, 0.5) 0%, rgba(247, 243, 237, 0) 22%, rgba(247, 243, 237, 0) 74%, rgba(247, 243, 237, 0.62) 100%);
	mix-blend-mode: screen;
	z-index: 2;
}

/* Barrido: la luz que recorre el rostro mientras se lee */
.vf-inf__scan {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 22%;
	pointer-events: none;
	z-index: 3;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 250, 240, 0.42) 48%, rgba(255, 255, 255, 0) 100%);
	mix-blend-mode: overlay;
	animation: vf-inf-scan 11s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

@keyframes vf-inf-scan {
	0% { transform: translateY(-24%); opacity: 0; }
	12% { opacity: 1; }
	84% { opacity: 1; }
	100% { transform: translateY(360%); opacity: 0; }
}

/* ---------------------------------------------------------------- Puntos --- */
.vf-inf__pin {
	position: absolute;
	left: var(--x);
	top: var(--y);
	z-index: 4;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	margin: -15px 0 0 -15px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.85);
	border-radius: 999px;
	background: rgba(36, 27, 23, 0.74);
	backdrop-filter: blur(2px);
	color: #fff;
	font-size: 11px;
	letter-spacing: 0.04em;
	cursor: pointer;
	transition: background 0.3s ease, transform 0.3s ease;
	animation: vf-inf-focus var(--vf-inf-cycle) linear infinite;
	animation-delay: calc(var(--i) * (var(--vf-inf-cycle) / var(--n)) * -1);
}

.vf-inf__pin-index {
	display: block;
	line-height: 1;
}

.vf-inf__pin::after {
	content: "";
	position: absolute;
	inset: -6px;
	border-radius: 999px;
	border: 1px solid rgba(139, 127, 113, 0.5);
	opacity: 0;
	animation: vf-inf-halo var(--vf-inf-cycle) linear infinite;
	animation-delay: calc(var(--i) * (var(--vf-inf-cycle) / var(--n)) * -1);
}

.vf-inf__pin:hover,
.vf-inf__pin:focus-visible {
	background: var(--vf-inf-accent);
	outline: none;
}

.vf-inf__pin.is-off {
	animation: none;
	opacity: 0.55;
}

@keyframes vf-inf-focus {
	0%, 12% {
		background: var(--vf-inf-accent);
		transform: scale(1.16);
		color: #fff;
	}
	18%, 100% {
		background: rgba(36, 27, 23, 0.72);
		transform: scale(1);
		color: rgba(255, 255, 255, 0.92);
	}
}

@keyframes vf-inf-halo {
	0%, 12% {
		opacity: 0.9;
		transform: scale(1);
	}
	26%, 100% {
		opacity: 0;
		transform: scale(1.5);
	}
}

/* --------------------------------------------------------------- Cadenas --- */
.vf-inf__svg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 3;
	overflow: visible;
}

.vf-inf__chain {
	fill: none;
	stroke-width: 0.55;
	stroke-linecap: round;
	stroke-dasharray: 240;
	stroke-dashoffset: 240;
	opacity: 0.9;
	animation: vf-inf-draw 6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
	animation-delay: calc(var(--i) * 0.8s + 0.3s);
}

.vf-inf__chain--mirada { stroke: #b3894f; }
.vf-inf__chain--expresion { stroke: #a4544a; }
.vf-inf__chain--contorno { stroke: #5f7d6a; }

@keyframes vf-inf-draw {
	to { stroke-dashoffset: 0; }
}

/* --------------------------------------------------------------- Fichas --- */
.vf-inf__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 2px;
	counter-reset: none;
}

.vf-inf__item {
	display: grid;
	grid-template-columns: 38px minmax(0, 1fr);
	gap: 14px;
	align-items: start;
	padding: 14px 16px 14px 12px;
	border-radius: 3px;
	border-left: 2px solid transparent;
	animation: vf-inf-row var(--vf-inf-cycle) linear infinite;
	animation-delay: calc(var(--i) * (var(--vf-inf-cycle) / var(--n)) * -1);
}

.vf-inf__item h3 {
	margin: 0 0 4px;
	font-size: 1rem;
	letter-spacing: 0.005em;
}

.vf-inf__item p {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.55;
	color: var(--vf-muted, #6e5c52);
}

.vf-inf__num {
	font-family: var(--vf-font-ui, "Jost", sans-serif);
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	color: var(--vf-inf-accent);
	padding-top: 3px;
}

@keyframes vf-inf-row {
	0%, 12% {
		background: rgba(139, 127, 113, 0.09);
		border-left-color: var(--vf-inf-accent);
	}
	18%, 100% {
		background: transparent;
		border-left-color: transparent;
	}
}

/* Estado detenido: al pasar el ratón por la pieza, la animación espera */
.vf-inf:hover .vf-inf__pin,
.vf-inf:hover .vf-inf__item,
.vf-inf:hover .vf-inf__pin::after {
	animation-play-state: paused;
}

.vf-inf__item.is-active,
.vf-inf__pin.is-active {
	animation: none;
}

.vf-inf__item.is-active {
	background: rgba(139, 127, 113, 0.11);
	border-left-color: var(--vf-inf-accent);
}

.vf-inf__pin.is-active {
	background: var(--vf-inf-accent);
	transform: scale(1.18);
}

.vf-inf__item--sm {
	padding: 10px 14px 10px 10px;
	grid-template-columns: 30px minmax(0, 1fr);
	gap: 12px;
}

.vf-inf__item--sm h3 {
	font-size: 0.94rem;
}

.vf-inf__item--sm p {
	font-size: 0.84rem;
}

/* ------------------------------------------------------- Bloque cadenas --- */
.vf-inf__side {
	display: grid;
	gap: clamp(18px, 2.4vw, 30px);
}

.vf-inf__chains {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 14px;
}

.vf-inf__chain-item {
	display: grid;
	grid-template-columns: 12px minmax(0, 1fr);
	gap: 12px;
	align-items: start;
}

.vf-inf__chain-item h3 {
	margin: 0 0 3px;
	font-size: 0.98rem;
}

.vf-inf__chain-item p {
	margin: 0;
	font-size: 0.88rem;
	line-height: 1.5;
	color: var(--vf-muted, #6e5c52);
}

.vf-inf__dot {
	width: 8px;
	height: 8px;
	margin-top: 7px;
	border-radius: 999px;
	display: block;
}

.vf-inf__chain-item--mirada .vf-inf__dot { background: #b3894f; }
.vf-inf__chain-item--expresion .vf-inf__dot { background: #a4544a; }
.vf-inf__chain-item--contorno .vf-inf__dot { background: #5f7d6a; }

.vf-inf__legend-rail {
	position: absolute;
	left: 14px;
	bottom: 16px;
	z-index: 5;
	font-family: var(--vf-font-ui, "Jost", sans-serif);
	font-size: 0.62rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(36, 27, 23, 0.52);
	writing-mode: vertical-rl;
	transform: rotate(180deg);
}

/* --------------------------------------------------------- Móvil / motion --- */
@media (max-width: 640px) {
	.vf-inf__pin {
		width: 26px;
		height: 26px;
		margin: -13px 0 0 -13px;
		font-size: 10px;
	}
	.vf-inf__item {
		padding: 12px 10px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.vf-inf__scan { display: none; }
	.vf-inf__pin,
	.vf-inf__pin::after,
	.vf-inf__item,
	.vf-inf__chain {
		animation: none !important;
	}
	.vf-inf__chain { stroke-dashoffset: 0; }
	.vf-inf__item { border-left-color: rgba(139, 127, 113, 0.3); }
}

/* Identidad VANGUARDIA: la anatomía se lee sobre negro */
[data-identity="vanguardia"] .vf-inf__plate {
	background: #10151c;
}

[data-identity="vanguardia"] .vf-inf__img {
	filter: saturate(0.72) contrast(1.08) brightness(0.94);
}

[data-identity="vanguardia"] .vf-inf__veil {
	background:
		radial-gradient(120% 90% at 50% 40%, rgba(11, 14, 18, 0) 34%, rgba(11, 14, 18, 0.78) 100%),
		linear-gradient(180deg, rgba(11, 14, 18, 0.55) 0%, rgba(11, 14, 18, 0) 26%, rgba(11, 14, 18, 0) 72%, rgba(11, 14, 18, 0.6) 100%);
	mix-blend-mode: normal;
}

[data-identity="vanguardia"] .vf-inf__pin {
	background: rgba(127, 227, 196, 0.16);
	border-color: rgba(127, 227, 196, 0.55);
	color: #d9fff4;
}

[data-identity="vanguardia"] .vf-inf__pin::after {
	border-color: rgba(127, 227, 196, 0.5);
}

[data-identity="vanguardia"] .vf-inf__pin.is-active,
[data-identity="vanguardia"] .vf-inf__pin:hover {
	background: #7fe3c4;
	color: #0b0e12;
}

[data-identity="vanguardia"] .vf-inf__item h3 { color: #f2f7f6; }
[data-identity="vanguardia"] .vf-inf__item p,
[data-identity="vanguardia"] .vf-inf__chain-item p { color: rgba(242, 247, 246, 0.66); }
[data-identity="vanguardia"] .vf-inf__chain-item h3 { color: #f2f7f6; }
[data-identity="vanguardia"] .vf-inf__num { color: #7fe3c4; }
[data-identity="vanguardia"] .vf-inf__item.is-active { background: rgba(127, 227, 196, 0.1); border-left-color: #7fe3c4; }
[data-identity="vanguardia"] .vf-inf__legend-rail { color: rgba(242, 247, 246, 0.5); }
[data-identity="vanguardia"] .vf-inf__chain--mirada { stroke: #ffc93c; }
[data-identity="vanguardia"] .vf-inf__chain--expresion { stroke: #ff5a5f; }
[data-identity="vanguardia"] .vf-inf__chain--contorno { stroke: #7fe3c4; }
