KH3
Office Background

CONTACT US

LET'S DISCUSS YOUR PROJECT
Office Background

GET IN TOUCH

Ready to start your next project? We'd love to hear from you. Fill out the form and we'll get back to you within 24 hours.

📍

Address

29 Labone Crescent, Accra
Accra - Ghana

📞

Phone

+233 30 396 9970

✉️

Email

Info@KH3group.com

🕒

Business Hours

Monday - Friday
9:00 AM - 6:00 PM

FIND US

Accra, Ghana

Our main office is located in the heart of Accra, easily accessible from all major areas.

📍 29 Labone Crescent, Accra, Ghana
// Form submission const contactForm = document.getElementById("contactForm"); if (contactForm) { contactForm.addEventListener("submit", (e) => { e.preventDefault(); // Add your form submission logic here alert( "Thank you for your message! We'll get back to you within 24 hours." ); contactForm.reset(); }); } // Staggered entrance for hero and sections window.addEventListener("load", () => { const heroTitle = document.querySelector( "section.relative h1.masked-reveal" ); const heroSub = document.querySelector("section.relative div.text-xl"); if (heroTitle) { heroTitle.style.animation = "maskReveal 900ms ease-out 150ms forwards"; } if (heroSub) { heroSub.style.opacity = "0"; heroSub.style.animation = "fadeUp 700ms ease-out 320ms forwards"; } const contactSection = document.querySelector("section.py-20.bg-white"); if (contactSection) { contactSection.style.opacity = "0"; contactSection.style.animation = "fadeUp 800ms ease-out 600ms forwards"; } const mapSection = document.querySelector("section.py-20.bg-kh3-black"); if (mapSection) { mapSection.style.opacity = "0"; mapSection.style.animation = "fadeUp 800ms ease-out 850ms forwards"; } }); // Auto-scroll to contact section after 2.5 seconds with custom smooth animation setTimeout(() => { const contactSection = document.querySelector("section:nth-of-type(2)"); // Contact Section if (contactSection) { const targetPosition = contactSection.offsetTop; const startPosition = window.pageYOffset; const distance = targetPosition - startPosition; const duration = 2000; // 2 seconds for the scroll animation let start = null; function animation(currentTime) { if (start === null) start = currentTime; const timeElapsed = currentTime - start; const run = easeInOutCubic( timeElapsed, startPosition, distance, duration ); window.scrollTo(0, run); if (timeElapsed < duration) requestAnimationFrame(animation); } // Easing function for smooth animation function easeInOutCubic(t, b, c, d) { t /= d / 2; if (t < 1) return (c / 2) * t * t * t + b; t -= 2; return (c / 2) * (t * t * t + 2) + b; } requestAnimationFrame(animation); } }, 2500); // Page transition functionality function handlePageTransition(e) { e.preventDefault(); const targetUrl = e.currentTarget.href; const transitionType = e.currentTarget.getAttribute('data-trans') || 'crossfade'; // Get all elements to animate out const elementsToAnimate = [ document.querySelector('.hero-section'), document.querySelector('.contact-form-section'), document.querySelector('.map-section'), document.querySelector('main') ].filter(el => el); // Animate elements out in order elementsToAnimate.forEach((element, index) => { setTimeout(() => { if (element) { element.style.animation = 'staggerFadeOut 0.6s ease-in-out forwards'; } }, index * 100); }); // Navigate after animations complete setTimeout(() => { window.location.href = targetUrl; }, elementsToAnimate.length * 100 + 600); } // Add event listeners for page transitions document.addEventListener('DOMContentLoaded', function() { const transitionLinks = document.querySelectorAll('[data-trans]'); transitionLinks.forEach(link => { link.addEventListener('click', handlePageTransition); }); }); // Handle back/forward navigation window.addEventListener('pageshow', function(event) { if (event.persisted) { // Page was loaded from cache (back/forward) window.location.reload(); } });