.icesco-motion-text-split {
	--icesco-motion-duration: 850ms;
	--icesco-motion-stagger: 40ms;
	--icesco-motion-delay: 0ms;
	--icesco-motion-offset: 0.8em;
	--icesco-motion-easing: cubic-bezier(0.22, 1, 0.36, 1);
	--icesco-motion-initial-opacity: 0;
	display: block;
	width: 100%;
}

.icesco-motion-text-split:not(.is-ready) .icesco-motion-text-split__text {
	opacity: 1;
	visibility: visible;
	/* Breaks come from <br> only. Avoid pre-line so cached nl2br+\n HTML cannot double-space. */
	white-space: normal;
}

.icesco-motion-text-split__text {
	display: block;
	/* Hub theme sets h1–h6 { margin: 1em 0 0.5em } / h2 { margin-top: 0.75em }.
	   That adds ~45px+30px around every title tag. Spacing belongs in Elementor
	   widget margin / parent padding — not theme heading defaults. */
	margin: 0 !important;
	white-space: normal;
}

h1.icesco-motion-text-split__text,
h2.icesco-motion-text-split__text,
h3.icesco-motion-text-split__text,
h4.icesco-motion-text-split__text,
h5.icesco-motion-text-split__text,
h6.icesco-motion-text-split__text {
	margin: 0 !important;
}

.icesco-motion-text-split__line {
	display: block;
}

.icesco-motion-text-split__word {
	display: inline-block;
	white-space: nowrap;
}

.icesco-motion-text-split__char {
	display: inline-block;
	opacity: var(--icesco-motion-initial-opacity, 0);
	transform: translate3d(0, var(--icesco-motion-offset), 0);
	transition:
		opacity var(--icesco-motion-duration) var(--icesco-motion-easing),
		transform var(--icesco-motion-duration) var(--icesco-motion-easing);
	transition-delay: calc(var(--icesco-motion-delay) + (var(--icesco-index, 0) * var(--icesco-motion-stagger)));
	will-change: transform, opacity;
}

.icesco-motion-text-split.is-inview .icesco-motion-text-split__char,
.icesco-motion-text-split.is-loaded .icesco-motion-text-split__char,
.icesco-motion-text-split.is-hovered .icesco-motion-text-split__char {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

.icesco-motion-text-split.is-outview-instant .icesco-motion-text-split__char {
	transition: none;
}

.icesco-motion-text-split__measure {
	position: absolute;
	visibility: hidden;
	pointer-events: none;
	white-space: nowrap;
}

.icesco-motion-text-split__measure-word {
	display: inline-block;
}

@media (prefers-reduced-motion: reduce) {
	.icesco-motion-text-split__char {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
