/* —— Scroll reveal —— */
.ans-animate {
	opacity: 0;
	transform: translateY(28px);
	transition:
		opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
		transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

.ans-animate.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.ans-animate--left {
	transform: translateX(-32px);
}

.ans-animate--left.is-visible {
	transform: translateX(0);
}

.ans-animate--right {
	transform: translateX(32px);
}

.ans-animate--right.is-visible {
	transform: translateX(0);
}

.ans-animate--scale {
	transform: scale(0.94);
}

.ans-animate--scale.is-visible {
	transform: scale(1);
}

.ans-animate-delay-1 { transition-delay: 0.08s; }
.ans-animate-delay-2 { transition-delay: 0.16s; }
.ans-animate-delay-3 { transition-delay: 0.24s; }
.ans-animate-delay-4 { transition-delay: 0.32s; }
.ans-animate-delay-5 { transition-delay: 0.4s; }

/* Hero entrance */
.ans-hero__content {
	opacity: 0;
	transform: translateY(24px);
	animation: ansHeroIn 0.85s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.ans-hero__visual {
	opacity: 1;
	transform: translateY(0);
	animation: ansHeroVisualIn 0.9s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both;
}

.ans-hero__visual--show {
	opacity: 1;
}

.ans-hero__badge {
	animation: ansFadeDown 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.05s both;
}

@keyframes ansHeroIn {
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes ansHeroVisualIn {
	from {
		opacity: 0;
		transform: translateY(20px) scale(0.97);
	}
	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}

@keyframes ansFadeDown {
	from {
		opacity: 0;
		transform: translateY(-12px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* Header load */
.ans-site-header .ans-header,
header.ans-header {
	animation: ansHeaderIn 0.5s ease-out both;
}

@keyframes ansHeaderIn {
	from {
		opacity: 0;
		transform: translateY(-100%);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.ans-header.is-scrolled {
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
}

/* Interactive cards */
.ans-service-card,
.ans-feature,
.ans-blog-card,
.ans-contact-card,
.ans-bento-card,
.ans-svc-card,
.ans-svc-pillar,
.ans-mosaic-item {
	transition:
		transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
		box-shadow 0.4s ease,
		border-color 0.3s ease;
}

.ans-service-card:hover,
.ans-feature:hover,
.ans-blog-card:hover,
.ans-bento-card:hover,
.ans-mosaic-item:hover {
	transform: translateY(-8px);
}

/* Buttons */
.ans-btn {
	transition:
		transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
		box-shadow 0.25s ease,
		background 0.25s ease,
		color 0.2s ease;
}

.ans-btn:active {
	transform: translateY(0) scale(0.98);
}

/* Page banner */
.ans-page-banner__title {
	animation: ansBannerTitle 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both;
}

.ans-page-banner__subtitle,
.ans-page-banner__label {
	animation: ansBannerTitle 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.22s both;
}

@keyframes ansBannerTitle {
	from {
		opacity: 0;
		transform: translateY(20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* Stagger grid children (class added by JS) */
.ans-stagger-grid > .ans-stagger-item {
	opacity: 0;
	transform: translateY(20px);
	transition:
		opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
		transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.ans-stagger-grid.is-visible > .ans-stagger-item {
	opacity: 1;
	transform: translateY(0);
}

/* Stat count pulse when visible */
.ans-stat-row span.is-counted {
	animation: ansStatPop 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes ansStatPop {
	0% { transform: scale(0.85); opacity: 0.5; }
	70% { transform: scale(1.05); }
	100% { transform: scale(1); opacity: 1; }
}

/* Section headings */
.ans-section__head h2 {
	transition: letter-spacing 0.4s ease;
}

.ans-section.is-visible .ans-section__head h2 {
	letter-spacing: -0.02em;
}

/* Mode toggle */
.ans-mode-toggle {
	transition: transform 0.35s ease;
}

.ans-mode-toggle:hover {
	transform: rotate(180deg);
}

@media (prefers-reduced-motion: reduce) {
	.ans-animate,
	.ans-animate--left,
	.ans-animate--right,
	.ans-animate--scale,
	.ans-hero__content,
	.ans-hero__visual,
	.ans-hero__badge,
	.ans-header,
	.ans-hero-card,
	.ans-hero-chart__bar,
	.ans-hero::after,
	.ans-stagger-grid > .ans-stagger-item,
	.ans-page-banner__title,
	.ans-page-banner__subtitle,
	.ans-page-banner__label {
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
		transition: none !important;
	}
}
