/* Nefinity global site loader */
html.nef-site-loading,
html.nef-site-loading body {
	overflow: hidden !important;
}

.nef-site-loader {
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	display: grid;
	place-items: center;
	background: var(--nef-loader-bg, #fff);
	opacity: 1;
	visibility: visible;
	transition: opacity .42s ease, visibility .42s ease;
}

.nef-site-loader.is-leaving {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.nef-site-loader__inner {
	display: grid;
	place-items: center;
	gap: 18px;
	min-width: var(--nef-loader-size, 88px);
	color: var(--nef-loader-color, #0869f5);
}

.nef-site-loader__text {
	font-family: "Space Grotesk", Inter, Arial, sans-serif;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: currentColor;
}

.nef-sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0,0,0,0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* Infinity - default */
.nef-loader-infinity {
	display: block;
	width: calc(var(--nef-loader-size, 88px) * 1.35);
	line-height: 0;
}

.nef-loader-infinity svg {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}

.nef-loader-infinity path {
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 7;
	vector-effect: non-scaling-stroke;
}

.nef-loader-infinity__track {
	stroke: currentColor;
	opacity: .14;
}

.nef-loader-infinity__line {
	stroke: currentColor;
	stroke-dasharray: 92 220;
	stroke-dashoffset: 310;
	animation: nefInfinityDraw 1.35s cubic-bezier(.55,.15,.35,.85) infinite;
	filter: drop-shadow(0 4px 10px color-mix(in srgb, currentColor 25%, transparent));
}

@keyframes nefInfinityDraw {
	to { stroke-dashoffset: 0; }
}

/* Ring */
.nef-loader-ring {
	width: var(--nef-loader-size, 88px);
	height: var(--nef-loader-size, 88px);
	border-radius: 50%;
	border: 5px solid color-mix(in srgb, currentColor 16%, transparent);
	border-top-color: currentColor;
	border-right-color: currentColor;
	animation: nefLoaderSpin .85s linear infinite;
}

@keyframes nefLoaderSpin {
	to { transform: rotate(360deg); }
}

/* Dots */
.nef-loader-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	height: var(--nef-loader-size, 88px);
}

.nef-loader-dots i {
	display: block;
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background: currentColor;
	animation: nefDotBounce .9s ease-in-out infinite alternate;
}

.nef-loader-dots i:nth-child(2) { animation-delay: .15s; }
.nef-loader-dots i:nth-child(3) { animation-delay: .30s; }

@keyframes nefDotBounce {
	from { transform: translateY(8px) scale(.72); opacity: .45; }
	to { transform: translateY(-8px) scale(1); opacity: 1; }
}

/* Orbit */
.nef-loader-orbit {
	position: relative;
	display: block;
	width: var(--nef-loader-size, 88px);
	height: var(--nef-loader-size, 88px);
	border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
	border-radius: 50%;
	animation: nefLoaderSpin 1.25s linear infinite;
}

.nef-loader-orbit::before,
.nef-loader-orbit i {
	content: "";
	position: absolute;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: currentColor;
	box-shadow: 0 5px 16px color-mix(in srgb, currentColor 25%, transparent);
}

.nef-loader-orbit::before { left: 50%; top: -6px; transform: translateX(-50%); }
.nef-loader-orbit i:first-child { right: -6px; top: 50%; transform: translateY(-50%); opacity: .7; }
.nef-loader-orbit i:nth-child(2) { left: 50%; bottom: -6px; transform: translateX(-50%); opacity: .45; }
.nef-loader-orbit b {
	position: absolute;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	left: 50%;
	top: 50%;
	transform: translate(-50%,-50%);
	background: currentColor;
	opacity: .16;
}

/* Pulse */
.nef-loader-pulse {
	position: relative;
	display: block;
	width: var(--nef-loader-size, 88px);
	height: var(--nef-loader-size, 88px);
}

.nef-loader-pulse i {
	position: absolute;
	inset: 16%;
	border: 3px solid currentColor;
	border-radius: 50%;
	animation: nefPulse 1.25s ease-out infinite;
}

.nef-loader-pulse i:nth-child(2) { animation-delay: .48s; }

@keyframes nefPulse {
	0% { transform: scale(.25); opacity: 1; }
	100% { transform: scale(1.2); opacity: 0; }
}

/* Custom image / GIF / SVG */
.nef-loader-custom-image {
	display: block;
	width: min(var(--nef-loader-image-width, 120px), 70vw);
	line-height: 0;
}

.nef-loader-custom-image img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 45vh;
	object-fit: contain;
}

@media (prefers-reduced-motion: reduce) {
	.nef-loader-infinity__line,
	.nef-loader-ring,
	.nef-loader-dots i,
	.nef-loader-orbit,
	.nef-loader-pulse i {
		animation-duration: 2.4s;
	}
}
