body:not(.is-loaded) {
	overflow: hidden;
}

.page-loader {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: grid;
	place-items: center;
	gap: 18px;
	background: radial-gradient(circle at center, rgba(0, 212, 255, 0.1), transparent 28%), #08080d;
	transition: opacity 420ms ease, visibility 420ms ease;
}

body.is-loaded .page-loader {
	opacity: 0;
	visibility: hidden;
}

body.is-loaded.is-navigating .page-loader {
	opacity: 1;
	visibility: visible;
}

.page-loader__board {
	position: relative;
	width: 160px;
	height: 160px;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 24px;
}

.page-loader__board span {
	position: absolute;
	background: linear-gradient(90deg, transparent, var(--accent), transparent);
}

.page-loader__board span:nth-child(1),
.page-loader__board span:nth-child(3) {
	left: 14px;
	right: 14px;
	height: 2px;
}

.page-loader__board span:nth-child(2),
.page-loader__board span:nth-child(4) {
	top: 14px;
	bottom: 14px;
	width: 2px;
}

.page-loader__board span:nth-child(1) {
	top: 34px;
	animation: loaderX 1.6s ease-in-out infinite;
}

.page-loader__board span:nth-child(2) {
	right: 42px;
	animation: loaderY 1.6s ease-in-out infinite 0.15s;
}

.page-loader__board span:nth-child(3) {
	bottom: 34px;
	animation: loaderX 1.6s ease-in-out infinite 0.3s;
}

.page-loader__board span:nth-child(4) {
	left: 42px;
	animation: loaderY 1.6s ease-in-out infinite 0.45s;
}

.page-loader p {
	margin: 0;
	color: var(--text-soft);
}

.cursor {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 160;
	pointer-events: none;
	opacity: 0;
	transform: translate(-50%, -50%);
	transition: opacity 180ms ease;
}

.cursor-dot {
	width: 8px;
	height: 8px;
	margin-left: -4px;
	margin-top: -4px;
	border-radius: 50%;
	background: var(--accent);
	box-shadow: 0 0 18px rgba(0, 212, 255, 0.65);
}

.cursor-ring {
	width: 34px;
	height: 34px;
	margin-left: -17px;
	margin-top: -17px;
	border: 1px solid rgba(255, 255, 255, 0.6);
	border-radius: 50%;
	transition: transform 180ms ease, width 180ms ease, height 180ms ease, margin 180ms ease, border-color 180ms ease, background 180ms ease;
}

body.cursor-active .cursor {
	opacity: 1;
}

.cursor-ring.is-interactive {
	width: 54px;
	height: 54px;
	margin-left: -27px;
	margin-top: -27px;
	border-color: rgba(0, 212, 255, 0.75);
	background: rgba(0, 212, 255, 0.08);
}

.cursor-dot.is-interactive {
	opacity: 0;
}

.button:hover,
.social-links a:hover,
.primary-menu a:hover,
.footer-menu a:hover,
.menu-fallback a:hover,
.pricing-tab:hover {
	transform: translateY(-2px);
}

.button--primary:hover,
.button--light:hover {
	box-shadow: 0 16px 34px rgba(0, 212, 255, 0.26);
}

.button--shimmer::before {
	animation: shimmerSweep 4.6s ease-in-out infinite;
}

.button--ghost:hover,
.service-card:hover,
.value-card:hover,
.plan-card:hover,
.blog-card:hover,
.social-links a:hover,
.partner-chip:hover,
.pricing-tab:hover {
	border-color: rgba(0, 212, 255, 0.3);
	box-shadow: 0 0 26px rgba(0, 212, 255, 0.14);
}

.scroll-indicator span {
	animation: bounceDot 1.8s infinite;
}

.process-card__index {
	animation: pulseHalo 2.4s ease-in-out infinite;
}

.reveal,
.stagger-grid > * {
	opacity: 0;
	transform: translateY(22px);
}

.faq-item.is-open .faq-trigger i {
	transform: rotate(45deg);
}

@keyframes loaderX {
	0%,
	100% {
		transform: scaleX(0.1);
		opacity: 0.35;
	}
	50% {
		transform: scaleX(1);
		opacity: 1;
	}
}

@keyframes loaderY {
	0%,
	100% {
		transform: scaleY(0.1);
		opacity: 0.35;
	}
	50% {
		transform: scaleY(1);
		opacity: 1;
	}
}

@keyframes bounceDot {
	0%,
	100% {
		transform: translateY(-8px);
	}
	50% {
		transform: translateY(10px);
	}
}

@keyframes shimmerSweep {
	0%,
	62%,
	100% {
		transform: translateX(-180%) rotate(22deg);
	}
	72% {
		transform: translateX(320%) rotate(22deg);
	}
}

@keyframes pulseHalo {
	0%,
	100% {
		box-shadow: 0 0 0 rgba(0, 212, 255, 0.16);
		transform: scale(1);
	}
	50% {
		box-shadow: 0 0 0 12px rgba(0, 212, 255, 0);
		transform: scale(1.05);
	}
}
