/**
 * LAM Thinking — SVG illustration layer.
 * Motion is CSS-driven, GPU-friendly (transform/opacity only) and fully
 * disabled under prefers-reduced-motion.
 */

.lam-svg {
	margin: 0;
	position: relative;
	isolation: isolate;
}

.lam-svg svg {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
	border-radius: var(--lam-radius-lg);
}

.lam-svg--bottleneck svg {
	box-shadow: var(--lam-shadow-lg);
	overflow: hidden;
}

/* ---------- Bottleneck ---------- */
.lam-svg__feed {
	animation: lam-feed var(--lam-dur-flow) var(--lam-ease-linear) infinite;
	animation-delay: var(--d, 0s);
	transform-box: fill-box;
	transform-origin: center;
	will-change: transform, opacity;
}

@keyframes lam-feed {
	0% {
		opacity: 0;
		transform: translate(0, 0) scale(0.7);
	}
	14% {
		opacity: 1;
		transform: translate(40px, calc(var(--ty, 0px) * 0.1)) scale(1);
	}
	52% {
		opacity: 1;
		transform: translate(300px, calc(var(--ty, 0px) * 0.82)) scale(0.94);
	}
	64% {
		opacity: 0.9;
		transform: translate(392px, var(--ty, 0px)) scale(0.62);
	}
	74%,
	100% {
		opacity: 0;
		transform: translate(430px, var(--ty, 0px)) scale(0.24);
	}
}

.lam-svg__burst {
	transform-box: fill-box;
	transform-origin: center;
	animation: lam-burst 2.6s var(--lam-ease-out) infinite;
}

.lam-svg__burst--b {
	animation-delay: 1.3s;
}

@keyframes lam-burst {
	0% {
		opacity: 0.85;
		transform: scale(0.35);
	}
	70% {
		opacity: 0;
		transform: scale(2.4);
	}
	100% {
		opacity: 0;
		transform: scale(2.4);
	}
}

.lam-svg__spark {
	transform-box: fill-box;
	transform-origin: center;
	animation: lam-spark 2.6s var(--lam-ease-out) infinite;
	animation-delay: var(--d, 0s);
}

@keyframes lam-spark {
	0%,
	20% {
		opacity: 0;
		transform: translate(0, 0) scale(0.4);
	}
	38% {
		opacity: 1;
		transform: translate(calc(var(--dx) * 0.5), calc(var(--dy) * 0.5)) scale(1);
	}
	100% {
		opacity: 0;
		transform: translate(var(--dx), var(--dy)) scale(0.2);
	}
}

.lam-svg__drop {
	transform-box: fill-box;
	transform-origin: center;
	animation: lam-drop 3.2s var(--lam-ease-in-out) infinite;
	animation-delay: var(--d, 0s);
}

@keyframes lam-drop {
	0% {
		opacity: 0;
		transform: translateY(-18px) scale(0.6);
	}
	25% {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
	100% {
		opacity: 0;
		transform: translateY(120px) scale(0.6);
	}
}

.lam-svg__label {
	animation: lam-label-in var(--lam-dur-slower) var(--lam-ease-out) both;
}

@keyframes lam-label-in {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

/* ---------- Process flow ---------- */
.lam-svg__track-live {
	animation: lam-dash 6s var(--lam-ease-linear) infinite;
}

@keyframes lam-dash {
	from {
		stroke-dashoffset: 234;
	}
	to {
		stroke-dashoffset: 0;
	}
}

.lam-svg__node {
	animation: lam-label-in var(--lam-dur-slow) var(--lam-ease-out) both;
	animation-delay: var(--d, 0s);
}

.lam-svg__pulse,
.lam-svg__tick {
	transform-box: fill-box;
	transform-origin: center;
	animation: lam-pulse 3s var(--lam-ease-out) infinite;
	animation-delay: var(--d, 0s);
}

@keyframes lam-pulse {
	0% {
		opacity: 0.7;
		transform: scale(1);
	}
	70% {
		opacity: 0;
		transform: scale(1.5);
	}
	100% {
		opacity: 0;
		transform: scale(1.5);
	}
}

/* ---------- Connections ---------- */
.lam-svg__edge {
	stroke-dasharray: 4 6;
	animation: lam-edge 4s var(--lam-ease-linear) infinite;
	animation-delay: var(--d, 0s);
}

@keyframes lam-edge {
	from {
		stroke-dashoffset: 40;
	}
	to {
		stroke-dashoffset: 0;
	}
}

.lam-svg__orb {
	animation: lam-breathe 4.2s var(--lam-ease-in-out) infinite;
	animation-delay: var(--d, 0s);
	transform-box: fill-box;
	transform-origin: center;
}

@keyframes lam-breathe {
	0%,
	100% {
		opacity: 0.72;
		transform: scale(0.94);
	}
	50% {
		opacity: 1;
		transform: scale(1.06);
	}
}

/* ---------- System diagram ---------- */
.lam-svg__layer {
	animation: lam-layer-in var(--lam-dur-slow) var(--lam-ease-spring) both;
	animation-delay: var(--d, 0s);
}

@keyframes lam-layer-in {
	from {
		opacity: 0;
		transform: translateX(-14px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

.lam-svg__spine {
	animation: lam-spine 5s var(--lam-ease-linear) infinite;
}

@keyframes lam-spine {
	from {
		stroke-dashoffset: 338;
	}
	to {
		stroke-dashoffset: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lam-svg *,
	.lam-svg *::before,
	.lam-svg *::after {
		animation: none !important;
	}

	.lam-svg__feed,
	.lam-svg__drop,
	.lam-svg__spark,
	.lam-svg__orb,
	.lam-svg__layer,
	.lam-svg__node,
	.lam-svg__label {
		opacity: 1;
	}
}
