/* ── Scroll-reveal animations ── */
.animate-on-scroll {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.animate-on-scroll.is-visible {
	opacity: 1;
	transform: translateY(0);
}

/* Staggered children */
.stagger-children .animate-on-scroll:nth-child(1) { transition-delay: 0s; }
.stagger-children .animate-on-scroll:nth-child(2) { transition-delay: 0.1s; }
.stagger-children .animate-on-scroll:nth-child(3) { transition-delay: 0.1s; }
.stagger-children .animate-on-scroll:nth-child(4) { transition-delay: 0.15s; }
.stagger-children .animate-on-scroll:nth-child(5) { transition-delay: 0.2s; }
.stagger-children .animate-on-scroll:nth-child(6) { transition-delay: 0.25s; }
.stagger-children .animate-on-scroll:nth-child(7) { transition-delay: 0.3s; }
.stagger-children .animate-on-scroll:nth-child(8) { transition-delay: 0.35s; }

/* Fade-in variants */
.animate-fade-in {
	opacity: 0;
	transition: opacity 0.6s ease;
}

.animate-fade-in.is-visible {
	opacity: 1;
}

.animate-slide-left {
	opacity: 0;
	transform: translateX(-30px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.animate-slide-left.is-visible {
	opacity: 1;
	transform: translateX(0);
}

.animate-slide-right {
	opacity: 0;
	transform: translateX(30px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.animate-slide-right.is-visible {
	opacity: 1;
	transform: translateX(0);
}

/* Prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
	.animate-on-scroll,
	.animate-fade-in,
	.animate-slide-left,
	.animate-slide-right {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* ── Button hover transitions ── */
.btn {
	transition: background var(--cires-transition), color var(--cires-transition),
		border-color var(--cires-transition), transform var(--cires-transition-fast),
		box-shadow var(--cires-transition-fast);
}

.btn:active {
	transform: scale(0.97);
}

/* ── Card hover lift ── */
.card,
.project-card,
.news-card,
.award-card,
.ir-doc-card {
	transition: box-shadow var(--cires-transition), transform var(--cires-transition);
}

.card:hover,
.project-card:hover,
.news-card:hover {
	transform: translateY(-4px);
}

.award-card:hover,
.ir-doc-card:hover {
	transform: translateY(-2px);
}

/* ── Header scroll transition ── */
.site-header {
	transition: background-color var(--cires-transition), box-shadow var(--cires-transition);
}

.site-header.is-scrolled {
	box-shadow: var(--cires-shadow-md);
}

/* ── Page transition fade ── */
.site-main {
	animation: pageIn 0.35s ease both;
}

@keyframes pageIn {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.site-main {
		animation: none;
	}
}

/* ── Dropdown menu animations ── */
.main-nav-list .sub-menu {
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity var(--cires-transition-fast), transform var(--cires-transition-fast),
		visibility var(--cires-transition-fast);
}

.main-nav-list li:hover > .sub-menu,
.main-nav-list li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

/* ── Counter animation placeholder ── */
.counter-value {
	display: inline-block;
	transition: opacity 0.3s ease;
}

/* ── Image scale on hover (galleries) ── */
.gallery-grid img {
	transition: transform 0.5s ease, opacity var(--cires-transition);
}

.gallery-grid img:hover {
	transform: scale(1.03);
}

/* ── Team card hover ── */
.team-card__photo img {
	transition: transform 0.5s ease;
}

.team-card:hover .team-card__photo img {
	transform: scale(1.05);
}
