/* ==========================================================
   Site-wide interactive scrollbar
   ========================================================== */

.site-scrollbar {
	--scroll-progress: 0;
	--scroll-progress-percent: 0%;
	--scroll-progress-inverse: 100%;
	position: fixed;
	top: 60px;
	bottom: 60px;
	right: clamp(14px, 2vw, 30px);
	z-index: 2147483000;
	touch-action: none;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;

	transition:
		opacity var(--transition-standard),
		visibility 0s linear var(--duration-standard);
}

.site-scrollbar.is-visible {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition-delay: 0s;
}

.site-scrollbar[hidden] {
	display: none;
}

.site-scrollbar__track {
	position: relative;
	display: block;
	width: 26px;
	height: 100%;
	box-sizing: border-box;
	overflow: hidden;

	background: var(--field-background);
	border: var(--border-width-field) solid var(--field-border);
	border-radius: var(--radius-pill);
	box-shadow: var(--shadow-field);
	cursor: pointer;

	transition:
		background-color var(--transition-fast),
		box-shadow var(--transition-shadow),
		transform var(--transition-spring);
}

.site-scrollbar__track:hover {
	background: var(--field-background-hover);
	box-shadow: var(--shadow-field-hover);
	transform: translate(-1px, -1px);
}

.site-scrollbar__track:focus-visible {
	outline: 3px solid var(--color-focus);
	outline-offset: 5px;
	box-shadow: var(--shadow-field-focus);
}

.site-scrollbar__fill {
	position: absolute;
	inset: 0 0 auto;
	height: calc(var(--scroll-progress) * 100%);
	min-height: 0;
	background: var(--color-brand-strong);
	background: color-mix(
		in srgb,
		var(--color-brand-strong) var(--scroll-progress-inverse),
		var(--button-primary-background) var(--scroll-progress-percent)
	);
	border-radius: inherit;
	pointer-events: none;
}

@media (max-width: 1024px) {
	.site-scrollbar {
		right: calc((35px - 26px) / 2);
	}
}

@media (max-width: 640px) {
	.site-scrollbar {
		right: calc((25px - 12px) / 2);
	}

	.site-scrollbar__track {
		width: 12px;
	}

}

@media (hover: none) and (pointer: coarse) {
	.site-scrollbar {
		transition-duration: 150ms;
		pointer-events: none !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.site-scrollbar {
		transition: none;
	}

	.site-scrollbar__track {
		transition: none;
	}
}

@media print {
	.site-scrollbar {
		display: none !important;
	}
}
