.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;
}
