/* InteriorBabu — scroll & micro animations.
   Respects prefers-reduced-motion. */

.reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1);
	will-change: opacity, transform;
}
.reveal.is-visible {
	opacity: 1;
	transform: none;
}

/* Stagger children when a grid is revealed */
.ib-services__grid .reveal.is-visible { transition-delay: calc(var(--ib-i, 0) * 60ms); }
.ib-portfolio__grid .reveal.is-visible,
.ib-cities__grid .reveal.is-visible,
.ib-testimonials__grid .reveal.is-visible { transition-delay: calc(var(--ib-i, 0) * 50ms); }

/* Floating hero blobs drift */
.ib-float--1 { animation: ib-drift1 14s ease-in-out infinite alternate; }
.ib-float--2 { animation: ib-drift2 18s ease-in-out infinite alternate; }
.ib-float--3 { animation: ib-drift1 11s ease-in-out infinite alternate-reverse; }
@keyframes ib-drift1 { from { transform: translate(0,0); } to { transform: translate(-26px, 24px); } }
@keyframes ib-drift2 { from { transform: translate(0,0); } to { transform: translate(30px, -20px); } }

/* Button shimmer on hover */
.ib-btn--primary { position: relative; overflow: hidden; }
.ib-btn--primary::after {
	content: ''; position: absolute; top: 0; left: -120%; width: 60%; height: 100%;
	background: linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent);
	transform: skewX(-20deg); transition: left .6s;
}
.ib-btn--primary:hover::after { left: 130%; }

/* Counter pop when counting finishes */
.ib-counter.is-done .ib-counter__num { animation: ib-pop-num .4s ease; }
@keyframes ib-pop-num { 0% { transform: scale(1); } 50% { transform: scale(1.12); } 100% { transform: scale(1); } }

@media (prefers-reduced-motion: reduce) {
	.reveal { opacity: 1 !important; transform: none !important; transition: none; }
	.ib-float--1, .ib-float--2, .ib-float--3 { animation: none; }
	.ib-btn--primary::after { display: none; }
}
