/**
 * Custom Cursor & Interaction Effects.
 *
 * @package LandTechExtras
 * @since   3.17.0
 */

/* Custom cursor --------------------------------------------------------- */

html.ltxe-cursor-hide-native,
html.ltxe-cursor-hide-native * {
	cursor: none !important;
}

html.ltxe-cursor-hide-native input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]):not([type="reset"]):not([type="image"]),
html.ltxe-cursor-hide-native textarea,
html.ltxe-cursor-hide-native [contenteditable=""],
html.ltxe-cursor-hide-native [contenteditable="true"] {
	cursor: text !important;
}

html.ltxe-cursor-hide-native select {
	cursor: default !important;
}

.ltxe-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: 0;
	height: 0;
	z-index: 2147483000;
	pointer-events: none;
	transition: opacity 0.2s ease;
}

.ltxe-cursor.is-hidden {
	opacity: 0;
}

.ltxe-cursor > * {
	position: absolute;
	top: 0;
	left: 0;
	pointer-events: none;
	will-change: transform;
}

.ltxe-cursor__dot,
.ltxe-cursor__trail {
	width: var(--ltxe-cursor-size, 10px);
	height: var(--ltxe-cursor-size, 10px);
	border-radius: 50%;
	background: var(--ltxe-cursor-color, #111);
}

.ltxe-cursor__ring {
	width: var(--ltxe-cursor-ring, 36px);
	height: var(--ltxe-cursor-ring, 36px);
	border: 1.5px solid var(--ltxe-cursor-color, #111);
	border-radius: 50%;
	box-sizing: border-box;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}

.ltxe-cursor--ring.is-grow .ltxe-cursor__ring,
.ltxe-cursor--dot_ring.is-grow .ltxe-cursor__ring {
	background-color: color-mix(in srgb, var(--ltxe-cursor-color, #111) 12%, transparent);
}

.ltxe-cursor__image {
	width: var(--ltxe-cursor-size, 10px);
	height: auto;
	max-width: none;
}

.ltxe-cursor__label {
	padding: 0.55em 0.9em;
	border-radius: 999px;
	background: var(--ltxe-cursor-color, #111);
	color: var(--ltxe-cursor-label-text, #fff);
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0.02em;
	white-space: nowrap;
	opacity: 0;
	transition: opacity 0.18s ease;
}

.ltxe-cursor.is-text .ltxe-cursor__label {
	opacity: 1;
}

/* Spotlight ------------------------------------------------------------- */

.ltxe-fx-spotlight,
.ltxe-fx-glare,
.ltxe-fx-reveal {
	position: absolute;
	inset: 0;
	pointer-events: none;
	border-radius: inherit;
}

.ltxe-fx-spotlight {
	z-index: 1;
	opacity: 0;
	background: radial-gradient(circle var(--ltxe-spot-r, 250px) at var(--ltxe-spot-x, 50%) var(--ltxe-spot-y, 50%), var(--ltxe-spot-c, rgba(255, 255, 255, 0.35)), transparent);
	transition: opacity 0.3s ease;
}

.ltxe-fx-hover > .ltxe-fx-spotlight {
	opacity: var(--ltxe-spot-o, 1);
}

/* Tilt glare ------------------------------------------------------------ */

.ltxe-fx-glare {
	z-index: 3;
	overflow: hidden;
	opacity: 0;
	background: linear-gradient(var(--ltxe-glare-angle, 180deg), rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 70%);
	mix-blend-mode: soft-light;
}

/* Reveal on hover -------------------------------------------------------- */

.ltxe-fx-reveal {
	z-index: 2;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	transition: clip-path var(--ltxe-reveal-d, 600ms) cubic-bezier(0.65, 0, 0.35, 1), opacity var(--ltxe-reveal-d, 600ms) ease, transform var(--ltxe-reveal-d, 600ms) cubic-bezier(0.65, 0, 0.35, 1);
}

.ltxe-fx-reveal--circle {
	clip-path: circle(0 at var(--ltxe-reveal-x, 50%) var(--ltxe-reveal-y, 50%));
}

.ltxe-fx-reveal--circle.is-revealed {
	clip-path: circle(150% at var(--ltxe-reveal-x, 50%) var(--ltxe-reveal-y, 50%));
}

.ltxe-fx-reveal--rectangle {
	clip-path: inset(50% 50% 50% 50%);
}

.ltxe-fx-reveal--rectangle.is-revealed {
	clip-path: inset(0 0 0 0);
}

.ltxe-fx-reveal--custom {
	opacity: 0;
	transform: scale(0.92);
}

.ltxe-fx-reveal--custom.is-revealed {
	opacity: 1;
	transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
	.ltxe-fx-spotlight,
	.ltxe-fx-glare,
	.ltxe-fx-reveal,
	.ltxe-cursor {
		display: none !important;
	}
}
