/**
 * Modulare Slider-Captcha-Komponente
 * (c) Veit Götz 2025
 */

.vg-captcha-wrapper {
	margin-top: var(--space-5);
}

.vg-captcha-container {
	position: relative;
	width: 100%;
	min-width: 200px;
	height: 40px;
	background: var(--color-bg-elevated);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-full);
	overflow: hidden;
}

.vg-captcha-track {
	position: absolute;
	left: 0;
	top: 0;
	width: 0;
	height: 100%;
	background: var(--color-accent);
	border-radius: var(--radius-full);
	transition: width 0.1s ease-out;
}

.vg-captcha-handle {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	left: 0;
	width: 40px;
	height: 40px;
	background: var(--color-accent);
	border-radius: var(--radius-full);
	color: var(--color-bg);
	text-align: center;
	line-height: 40px;
	font-size: 1.125rem;
	cursor: grab;
	user-select: none;
	transition: left 0.05s ease-out;
}

.vg-captcha-handle:active {
	cursor: grabbing;
}

.vg-captcha-message {
	font-size: var(--text-xs);
	margin: var(--space-2) 0 0;
	min-height: 1.2em;
	color: var(--color-text-muted);
}

/* Ladeanimation während Verarbeitung */
.vg-captcha-loading .vg-captcha-track {
	background: linear-gradient(
		90deg,
		var(--color-accent) 0%,
		var(--color-accent-muted) 25%,
		var(--color-accent-hover) 50%,
		var(--color-accent-muted) 75%,
		var(--color-accent) 100%
	);
	background-size: 200% 100%;
	animation: vg-captcha-shimmer 1.5s ease-in-out infinite;
}

.vg-captcha-loading .vg-captcha-handle {
	animation: vg-captcha-pulse 1.2s ease-in-out infinite;
}

@keyframes vg-captcha-shimmer {
	0% { background-position: 100% 0; }
	100% { background-position: -100% 0; }
}

@keyframes vg-captcha-pulse {
	0%, 100% { opacity: 1; transform: translateY(-50%) scale(1); }
	50% { opacity: 0.9; transform: translateY(-50%) scale(1.03); }
}
