.ff-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: 96px;
	height: 96px;
	margin: -48px 0 0 -48px;
	pointer-events: none;
	z-index: 99999;
	opacity: 0;
	transition: opacity 0.3s ease;
	will-change: transform;
}
.ff-cursor.is-visible.is-ready {
	opacity: 1;
}
.ff-cursor-idle,
.ff-cursor-hover {
	position: absolute;
	inset: 0;
	transition: opacity 0.15s ease;
}
.ff-cursor-hover,
.ff-cursor.is-hovering .ff-cursor-idle {
	opacity: 0;
}
.ff-cursor.is-hovering .ff-cursor-hover {
	opacity: 1;
}
.ff-btn-contact,
.ff-btn-hero-primary,
.ff-btn-hero-outline {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}
.ff-btn-contact::before,
.ff-btn-hero-primary::before,
.ff-btn-hero-outline::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: radial-gradient(circle 70px at var(--ff-mx, 50%) var(--ff-my, 50%), rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 100%);
	-webkit-mask-image: linear-gradient(to right, #000 0%, #000 calc(100% - 54px), rgba(0, 0, 0, 0) calc(100% - 30px));
	mask-image: linear-gradient(to right, #000 0%, #000 calc(100% - 54px), rgba(0, 0, 0, 0) calc(100% - 30px));
	opacity: 0;
	transition: opacity 0.35s ease;
	pointer-events: none;
	z-index: -1;
}
.ff-btn-hero-outline::before {
	background: radial-gradient(circle 70px at var(--ff-mx, 50%) var(--ff-my, 50%), rgba(224, 244, 0, 0.28) 0%, rgba(224, 244, 0, 0) 100%);
}
.ff-btn-contact:hover::before,
.ff-btn-hero-primary:hover::before,
.ff-btn-hero-outline:hover::before {
	opacity: 1;
}
