Visual Graphic

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmodLorem ipsum dolor sit amet, consect etur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis autt reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Marketing

75%

Development

80%

Marketing

65%

Great Solutions

Lorem ipsum dolor sit amet, consectetur adipisi cing elit, sed do eiusmodLorem ipsum dolor sit amet, consect etur adipisicing

  • Layered Psd
  • Perfect Design
  • Custom Videography
  • Creative Design
/* ---------- scroll progress ---------- */ const progress = document.getElementById('progress'); window.addEventListener('scroll', () => { const h = document.documentElement; const pct = h.scrollTop / (h.scrollHeight - h.clientHeight) * 100; progress.style.width = pct + '%'; }); const menuToggle = document.getElementById('menuToggle'); const mobileMenu = document.getElementById('mobileMenu'); menuToggle.addEventListener('click', () => { const open = mobileMenu.classList.toggle('open'); menuToggle.setAttribute('aria-expanded', open); }); mobileMenu.querySelectorAll('a').forEach(a => a.addEventListener('click', () => { mobileMenu.classList.remove('open'); menuToggle.setAttribute('aria-expanded', 'false'); })); const revealEls = document.querySelectorAll('.reveal, .reveal-stagger'); const io = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('in'); io.unobserve(entry.target); } }); }, { threshold: 0.15 }); revealEls.forEach(el => io.observe(el)); /* ---------- hero image placeholder loop ---------- */ const imgSlides = document.querySelectorAll('.img-slide'); const imgDots = document.querySelectorAll('.img-loop-dots span'); let imgIndex = 0; if (imgSlides.length){ setInterval(() => { imgIndex = (imgIndex + 1) % imgSlides.length; imgSlides.forEach((s, i) => s.classList.toggle('active', i === imgIndex)); imgDots.forEach((d, i) => d.classList.toggle('active', i === imgIndex)); }, 3000); }