/**
 * Back to top — circular scroll progress control
 *
 * @package CARE-INF
 */

.care-inf-back-to-top {
	--ci-btt-size: 3.25rem;
	--ci-btt-ring: 3px;
	position: fixed;
	right: clamp(1rem, 2.5vw, 1.75rem);
	bottom: clamp(1rem, 2.5vw, 1.75rem);
	z-index: 9990;
	width: var(--ci-btt-size);
	height: var(--ci-btt-size);
	padding: 0;
	border: none;
	border-radius: 50%;
	background: #fff;
	color: var(--care-inf-primary, #1a3a5f);
	cursor: pointer;
	box-shadow:
		0 4px 6px rgba(16, 42, 74, 0.08),
		0 12px 28px rgba(16, 42, 74, 0.14);
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px) scale(0.92);
	transition:
		opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1),
		visibility 0.35s cubic-bezier(0.4, 0, 0.2, 1),
		transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
		box-shadow 0.25s ease,
		background 0.25s ease,
		color 0.25s ease;
}

.care-inf-back-to-top:not([hidden]) {
	opacity: 1;
	visibility: visible;
	transform: translateY(0) scale(1);
}

.care-inf-back-to-top:hover {
	background: var(--care-inf-primary, #1a3a5f);
	color: #fff;
	box-shadow:
		0 6px 12px rgba(16, 42, 74, 0.12),
		0 16px 36px rgba(16, 42, 74, 0.2);
}

.care-inf-back-to-top:focus {
	outline: none;
}

.care-inf-back-to-top:focus-visible {
	outline: 2px solid var(--care-inf-accent, #d4af37);
	outline-offset: 3px;
}

.care-inf-back-to-top__svg {
	display: block;
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
}

.care-inf-back-to-top__track {
	stroke: rgba(26, 58, 95, 0.12);
	stroke-width: var(--ci-btt-ring);
}

.care-inf-back-to-top__progress {
	stroke: var(--care-inf-accent, #d4af37);
	stroke-width: var(--ci-btt-ring);
	stroke-linecap: round;
	stroke-dasharray: 150.796;
	stroke-dashoffset: 150.796;
	transition: stroke-dashoffset 0.12s linear;
}

.care-inf-back-to-top:hover .care-inf-back-to-top__progress {
	stroke: #fff;
}

.care-inf-back-to-top__icon {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
}

.care-inf-back-to-top__icon svg {
	display: block;
}

body.admin-bar .care-inf-back-to-top {
	bottom: calc(clamp(1rem, 2.5vw, 1.75rem) + 32px);
}

@media screen and (max-width: 782px) {
	body.admin-bar .care-inf-back-to-top {
		bottom: calc(clamp(1rem, 2.5vw, 1.75rem) + 46px);
	}
}

@media (prefers-reduced-motion: reduce) {
	.care-inf-back-to-top {
		transition: opacity 0.2s ease, visibility 0.2s ease;
		transform: none;
	}

	.care-inf-back-to-top:not([hidden]) {
		transform: none;
	}

	.care-inf-back-to-top__progress {
		transition: none;
	}
}
