.vifx-master-marker,
.vifx-anim-marker{
	position:absolute;
	width:1px;height:1px;
	overflow:hidden;
	clip:rect(1px,1px,1px,1px);
	white-space:nowrap;
}

.vifx-target{
	will-change: transform, opacity, filter;
}

.vifx-drift{
	will-change: transform;
}

/* Optional helper easing class (only affects sudden jumps, not the scrub itself) */
.vifx-target.vifx-ease{
	transition: transform 140ms ease-out, opacity 140ms ease-out, filter 140ms ease-out;
}

@media (prefers-reduced-motion: reduce){
	.vifx-target{
		transition: none !important;
		transform: none !important;
		opacity: 1 !important;
		filter: none !important;
	}
}

/* Editor-only widget chips (for easier locating in the Structure panel) */
.vifx-widget-chip{
	display:none;
	background:#2b2b2b;
	color:#ffffff;
	border-radius:8px;
	padding:10px 12px;
	font-size:12px;
	line-height:1;
	text-align:center;
	letter-spacing:0.2px;
	border:1px solid rgba(255,255,255,0.08);
}
.vifx-widget-chip .vifx-chip-sub{
	opacity:0.85;
	font-weight:600;
	margin-left:6px;
}
body.elementor-editor-active .vifx-widget-chip{ display:block; }


/* Dynamic Contrast (text only) */

/* Higher specificity to survive Elementor inline/color rules */
.vifx-contrast-isolate .vifx-contrast-blend{
	mix-blend-mode: difference !important;
	color: #ffffff !important;
}



/* Dynamic Contrast isolation helper */
.vifx-contrast-isolate{ isolation:isolate; position:relative; }
.vifx-contrast-blend{ position:relative; z-index:1; }

/* Dynamic Contrast on native Heading/Text widgets (Advanced tab toggle) */
.vifx-dc-on{ isolation:isolate; position:relative; }
.vifx-dc-on .elementor-heading-title,
.vifx-dc-on .elementor-text-editor,
.vifx-dc-on .elementor-text-editor *{
	mix-blend-mode: difference !important;
	color: #ffffff !important;
	position: relative;
	z-index: 1;
}


/* Dynamic Text */
.vifx-dt-size-on{
	position: relative;
}
.vifx-dt-size-on .elementor-heading-title,
.vifx-dt-size-on .elementor-text-editor{
	max-width: 100%;
	box-sizing: border-box;
}
.vifx-dt-size-on .elementor-heading-title.vifx-dt-ellipsis,
.vifx-dt-size-on .elementor-text-editor.vifx-dt-ellipsis{
	display: block;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.vifx-dt-size-on .elementor-heading-title.vifx-dt-clamp,
.vifx-dt-size-on .elementor-text-editor.vifx-dt-clamp{
	display: -webkit-box;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.vifx-dt-size-on .elementor-heading-title.vifx-dt-wrap,
.vifx-dt-size-on .elementor-text-editor.vifx-dt-wrap{
	white-space: normal;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.vifx-dt-size-on .elementor-heading-title.vifx-dt-linefit,
.vifx-dt-size-on .elementor-text-editor.vifx-dt-linefit{
	display: block;
	white-space: normal;
	overflow: visible;
}
.vifx-dt-size-on .vifx-dt-line{
	display: block;
	width: max-content;
	max-width: none;
	white-space: nowrap;
	line-height: inherit;
}

/* Adaptive Contrast foundation */
.vifx-adaptive-contrast-target{
	position: relative;
}
.vifx-underlay-marker{
	--vifx-underlay-brightness: 0.5;
}
.vifx-underlay-light{
	--vifx-underlay-brightness: 1;
}
.vifx-underlay-dark{
	--vifx-underlay-brightness: 0;
}
.vifx-underlay-custom{
	--vifx-underlay-brightness: var(--vifx-underlay-custom, 0.5);
}


/* Adaptive Background */
.vifx-adaptive-bg-on,
.vifx-adaptive-bg-enabled-yes{
	position: relative !important;
	--vifx-adaptive-bg-rgb: 0, 0, 0;
	--vifx-adaptive-bg-opacity: 0.5;
	--vifx-adaptive-bg-smooth: 220ms;
	background-color: rgba(var(--vifx-adaptive-bg-rgb), var(--vifx-adaptive-bg-opacity)) !important;
	transition: background-color var(--vifx-adaptive-bg-smooth) ease !important;
}
.vifx-adaptive-bg-on > .vifx-adaptive-bg-overlay{
	display: none !important;
}

@media (prefers-reduced-motion: reduce){
	.vifx-adaptive-bg-on,
.vifx-adaptive-bg-enabled-yes{
		transition: none !important;
	}
}

/* Entrance Reveal */
.vifx-reveal-ready{
	--vifx-reveal-duration: 620ms;
	--vifx-reveal-delay: 0ms;
	--vifx-reveal-x: 0px;
	--vifx-reveal-y: 0px;
	--vifx-reveal-scale: 1;
	--vifx-reveal-blur: 0px;
	opacity: 0;
	translate: var(--vifx-reveal-x) var(--vifx-reveal-y);
	scale: var(--vifx-reveal-scale);
	filter: blur(var(--vifx-reveal-blur));
	transition-property: opacity, translate, scale, filter;
	transition-duration: var(--vifx-reveal-duration);
	transition-delay: var(--vifx-reveal-delay);
	transition-timing-function: cubic-bezier(.22,.78,.23,1);
	will-change: opacity, translate, scale, filter;
}
.vifx-target.vifx-reveal-ready{
	transition-property: opacity, translate, scale, filter;
	transition-duration: var(--vifx-reveal-duration);
	transition-delay: var(--vifx-reveal-delay);
	transition-timing-function: cubic-bezier(.22,.78,.23,1);
}
.vifx-reveal-ready.vifx-reveal-in{
	opacity: 1;
	translate: 0px 0px;
	scale: 1;
	filter: blur(0px);
}
.vifx-reveal-ready.vifx-reveal-complete{
	opacity: 1;
	translate: 0px 0px;
	scale: 1;
	filter: blur(0px);
	will-change: auto;
}

/* Exit Animation */
.vifx-exit-ready{
	--vifx-exit-duration: 620ms;
	--vifx-exit-delay: 0ms;
	--vifx-exit-x: 0px;
	--vifx-exit-y: 0px;
	--vifx-exit-scale: 1;
	--vifx-exit-blur: 0px;
	transition-property: opacity, translate, scale, filter;
	transition-duration: var(--vifx-exit-duration);
	transition-delay: var(--vifx-exit-delay);
	transition-timing-function: cubic-bezier(.22,.78,.23,1);
	will-change: opacity, translate, scale, filter;
}
.vifx-target.vifx-exit-ready{
	transition-property: opacity, translate, scale, filter;
	transition-duration: var(--vifx-exit-duration);
	transition-delay: var(--vifx-exit-delay);
	transition-timing-function: cubic-bezier(.22,.78,.23,1);
}
.vifx-exit-ready.vifx-exit-out{
	opacity: 0 !important;
	translate: var(--vifx-exit-x) var(--vifx-exit-y) !important;
	scale: var(--vifx-exit-scale) !important;
	filter: blur(var(--vifx-exit-blur)) !important;
}
.vifx-exit-ready.vifx-exit-complete{
	opacity: 0 !important;
	translate: var(--vifx-exit-x) var(--vifx-exit-y) !important;
	scale: var(--vifx-exit-scale) !important;
	filter: blur(var(--vifx-exit-blur)) !important;
	will-change: auto;
}

@media (prefers-reduced-motion: reduce){
	.vifx-reveal-ready,
	.vifx-target.vifx-reveal-ready,
	.vifx-exit-ready,
	.vifx-target.vifx-exit-ready{
		opacity: 1 !important;
		translate: 0 0 !important;
		scale: 1 !important;
		filter: none !important;
		transition: none !important;
	}
}
