(function() { // Safety check — agar GSAP load nahi hua if (typeof gsap === 'undefined') return; gsap.registerPlugin(ScrollTrigger); /* Particles — scoped inside branch-particles div */ var container = document.getElementById('branch-particles'); if (container) { var colors = ['rgba(201,168,76,0.55)', 'rgba(0,160,150,0.4)', 'rgba(245,240,232,0.3)']; for (var i = 0; i < 24; i++) { var p = document.createElement('div'); p.className = 'bp'; var size = Math.random() * 5 + 2; p.style.cssText = [ 'width:' + size + 'px', 'height:' + size + 'px', 'background:' + colors[Math.floor(Math.random() * colors.length)], 'left:' + (Math.random() * 100) + '%', 'bottom:0', 'animation-duration:' + (9 + Math.random() * 12) + 's', 'animation-delay:' + (Math.random() * 12) + 's' ].join(';'); container.appendChild(p); } } /* Header animation */ var htl = gsap.timeline({ defaults: { ease: 'power3.out' } }); htl .to('.branch-header-tag', { opacity: 1, y: 0, duration: 0.8 }, 0.3) .from('.branch-header h1', { y: 60, duration: 1 }, 0.6) .to('.branch-header h1', { opacity: 1, duration: 0 }, 0.6) .to('.branch-count', { opacity: 1, duration: 0.7 }, 1.0) .to('#branchHeaderRule', { width: '180px', duration: 1, ease: 'power2.out' }, 1.1); /* Branch rows scroll animation */ gsap.utils.toArray('.branch-row').forEach(function(row) { var isRev = row.classList.contains('reverse'); var textEl = row.querySelector('.branch-text'); var imgEl = row.querySelector('.branch-image'); var numEl = row.querySelector('.branch-num'); gsap.fromTo(textEl, { x: isRev ? 70 : -70, opacity: 0 }, { x: 0, opacity: 1, duration: 0.95, ease: 'power3.out', scrollTrigger: { trigger: row, start: 'top 83%', toggleActions: 'play none none reverse' } } ); gsap.fromTo(imgEl, { x: isRev ? -70 : 70, opacity: 0 }, { x: 0, opacity: 1, duration: 0.95, delay: 0.15, ease: 'power3.out', scrollTrigger: { trigger: row, start: 'top 83%', toggleActions: 'play none none reverse' } } ); /* timeline dot pop */ gsap.fromTo(row, { '--dot': 0 }, { scrollTrigger: { trigger: row, start: 'top 70%', onEnter: function() { gsap.to(row.querySelector(':before') || row, { duration: 0.5, ease: 'back.out(2)' }); } } } ); /* ghost number fade */ if (numEl) { gsap.fromTo(numEl, { opacity: 0, scale: 1.5 }, { opacity: 1, scale: 1, duration: 0.9, ease: 'power2.out', scrollTrigger: { trigger: row, start: 'top 82%' } } ); } }); /* Parallax on images */ gsap.utils.toArray('.img-frame').forEach(function(frame) { var img = frame.querySelector('img'); if (!img) return; gsap.to(img, { yPercent: -7, ease: 'none', scrollTrigger: { trigger: frame, start: 'top bottom', end: 'bottom top', scrub: true } }); }); /* Make rows visible (they start opacity:0) */ gsap.set('.branch-row', { opacity: 1 }); })();