/**
 * Shared QnD reveal animations.
 * Markup: data-qnd-animate="<preset>" [data-qnd-animate-on="load"] [data-qnd-delay="200"] [data-qnd-animate-repeat="false"]
 * Scroll-triggered items replay when leaving and re-entering the viewport.
 * Load-triggered items (hero) play once per page load.
 * Only hide/offset when JS is active (html.qnd-js) so content stays visible without JS.
 */

html.qnd-js [data-qnd-animate] {
	--qnd-delay: 0ms;
	opacity: 0;
	will-change: opacity, transform;
}

html.qnd-js [data-qnd-animate][data-qnd-delay="100"] { --qnd-delay: 100ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="150"] { --qnd-delay: 150ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="200"] { --qnd-delay: 200ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="300"] { --qnd-delay: 300ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="400"] { --qnd-delay: 400ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="500"] { --qnd-delay: 500ms; }
html.qnd-js [data-qnd-animate][data-qnd-delay="600"] { --qnd-delay: 600ms; }

html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(1) { --qnd-delay: 0ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(2) { --qnd-delay: 90ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(3) { --qnd-delay: 180ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(4) { --qnd-delay: 270ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(5) { --qnd-delay: 360ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(6) { --qnd-delay: 450ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(7) { --qnd-delay: 540ms; }
html.qnd-js [data-qnd-stagger] > [data-qnd-animate]:nth-child(8) { --qnd-delay: 630ms; }

html.qnd-js [data-qnd-animate="fade-up"] {
	transform: translateY(24px);
}

html.qnd-js [data-qnd-animate="fade-down"] {
	transform: translateY(-20px);
}

html.qnd-js [data-qnd-animate="fade-in"] {
	transform: none;
}

html.qnd-js [data-qnd-animate="slide-left"] {
	transform: translateX(-32px);
}

html.qnd-js [data-qnd-animate="slide-right"] {
	transform: translateX(32px);
}

html.qnd-js [data-qnd-animate="scale-in"] {
	transform: scale(0.96);
}

/* Scroll Text Reveal — masked upward reveal per character */
html.qnd-js [data-qnd-animate="text-reveal"] {
	opacity: 1;
	transform: none;
}

html.qnd-js [data-qnd-animate="text-reveal"] .qnd-text-reveal__track {
	display: inline-block;
	white-space: nowrap;
}

html.qnd-js [data-qnd-animate="text-reveal"] .qnd-text-reveal__char {
	display: inline-block;
	overflow: hidden;
	vertical-align: baseline;
	height: 1.15em;
	line-height: inherit;
}

html.qnd-js [data-qnd-animate="text-reveal"] .qnd-text-reveal__char-inner {
	display: block;
	transform: translateY(110%);
	opacity: 0;
	will-change: transform, opacity;
}

html.qnd-js [data-qnd-animate="text-reveal"].is-in {
	animation: none;
}

html.qnd-js [data-qnd-animate="text-reveal"].is-in .qnd-text-reveal__char-inner {
	animation: qnd-anim-text-reveal 0.75s cubic-bezier(0.22, 1, 0.36, 1) forwards;
	animation-delay: calc(var(--qnd-delay, 0ms) + var(--qnd-char-index, 0) * 55ms);
}

/* Scroll Text Reveal — whole word (hero Capital.) */
html.qnd-js [data-qnd-animate="text-reveal-word"] {
	opacity: 1;
	transform: none;
}

html.qnd-js [data-qnd-animate="text-reveal-word"] .qnd-text-reveal-word__inner {
	display: block;
	transform: translateY(110%);
	opacity: 0;
	will-change: transform, opacity;
}

html.qnd-js [data-qnd-animate="text-reveal-word"].is-in {
	animation: none;
}

html.qnd-js [data-qnd-animate="text-reveal-word"].is-in .qnd-text-reveal-word__inner {
	animation: qnd-anim-text-reveal 0.85s cubic-bezier(0.22, 1, 0.36, 1) forwards;
	animation-delay: var(--qnd-delay, 0ms);
}

html.qnd-js [data-qnd-animate].is-in {
	animation-duration: 0.85s;
	animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
	animation-fill-mode: forwards;
	animation-delay: var(--qnd-delay, 0ms);
}

html.qnd-js [data-qnd-animate="fade-up"].is-in {
	animation-name: qnd-anim-fade-up;
}

html.qnd-js [data-qnd-animate="fade-down"].is-in {
	animation-name: qnd-anim-fade-down;
}

html.qnd-js [data-qnd-animate="fade-in"].is-in {
	animation-name: qnd-anim-fade-in;
	animation-duration: 0.7s;
}

html.qnd-js [data-qnd-animate="slide-left"].is-in {
	animation-name: qnd-anim-slide-left;
}

html.qnd-js [data-qnd-animate="slide-right"].is-in {
	animation-name: qnd-anim-slide-right;
}

html.qnd-js [data-qnd-animate="scale-in"].is-in {
	animation-name: qnd-anim-scale-in;
}

@keyframes qnd-anim-fade-up {
	from {
		opacity: 0;
		transform: translateY(24px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes qnd-anim-fade-down {
	from {
		opacity: 0;
		transform: translateY(-20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes qnd-anim-fade-in {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@keyframes qnd-anim-slide-left {
	from {
		opacity: 0;
		transform: translateX(-32px);
	}
	to {
		opacity: 1;
		transform: translateX(0);
	}
}

@keyframes qnd-anim-slide-right {
	from {
		opacity: 0;
		transform: translateX(32px);
	}
	to {
		opacity: 1;
		transform: translateX(0);
	}
}

@keyframes qnd-anim-scale-in {
	from {
		opacity: 0;
		transform: scale(0.96);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes qnd-anim-text-reveal {
	from {
		opacity: 0;
		transform: translateY(110%);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	html.qnd-js [data-qnd-animate] {
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
		will-change: auto;
	}

	html.qnd-js [data-qnd-animate="text-reveal"] .qnd-text-reveal__char-inner {
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
	}

	html.qnd-js [data-qnd-animate="text-reveal-word"] .qnd-text-reveal-word__inner {
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
	}
}
