.cursor-blob-wrap {
	position: fixed;
	top: 0;
	left: 0;
	width: 0;
	height: 0;
	z-index: 0;
	pointer-events: none;
}

.cursor-blob-inner {
	position: absolute;
	top: 0;
	left: 0;
	width: 640px;
	height: 640px;
	margin-left: -320px;
	margin-top: -320px;
	border-radius: 42% 58% 65% 35% / 45% 40% 60% 55%;
	background: radial-gradient(circle at 38% 35%, var(--violet-400), var(--violet-500) 42%, transparent 72%);
	filter: blur(90px);
	opacity: 0.5;
	transform: scale(1);
	transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
	animation: exoduss-blob-morph 16s ease-in-out infinite;
	will-change: transform, opacity;
}

.cursor-blob-inner.is-dim {
	opacity: 0.16;
	transform: scale(0.55);
}

.cursor-blob-inner.is-hidden {
	opacity: 0;
	transform: scale(0);
}

@keyframes exoduss-blob-morph {
	0%, 100% { border-radius: 42% 58% 65% 35% / 45% 40% 60% 55%; }
	33% { border-radius: 58% 42% 40% 60% / 55% 65% 35% 45%; }
	66% { border-radius: 50% 50% 55% 45% / 40% 55% 45% 60%; }
}

/* Sin cursor real (touch) o pantallas chicas: el blob no aporta nada, se oculta */
@media (max-width: 900px), (hover: none), (pointer: coarse) {
	.cursor-blob-wrap {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cursor-blob-inner {
		animation: none;
		transition: none;
	}
}
