import React, { useEffect, useState } from 'react'; const ArchitecturalShowcase: React.FC = () => { const [isLoaded, setIsLoaded] = useState(false); const [heroVisible, setHeroVisible] = useState(false); const [imageVisible, setImageVisible] = useState(false); const [purposeVisible, setPurposeVisible] = useState(false); const [servicesVisible, setServicesVisible] = useState(false); useEffect(() => { document.body.style.margin = '0'; document.body.style.padding = '0'; document.body.style.overflow = 'hidden'; const timer1 = setTimeout(() => setIsLoaded(true), 200); const timer2 = setTimeout(() => setHeroVisible(true), 600); const timer3 = setTimeout(() => setImageVisible(true), 1200); const timer4 = setTimeout(() => setPurposeVisible(true), 1800); const timer5 = setTimeout(() => setServicesVisible(true), 2400); const timer6 = setTimeout(() => { document.body.style.overflow = 'auto'; }, 2600); return () => { clearTimeout(timer1); clearTimeout(timer2); clearTimeout(timer3); clearTimeout(timer4); clearTimeout(timer5); clearTimeout(timer6); }; }, []); const globalStyles = ` html, body, #root { margin: 0; padding: 0; max-width: 100vw; width: 100%; height: 100%; min-height: 100vh; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; overflow-x: hidden; } * { box-sizing: border-box; } /* Responsive CSS */ @media (max-width: 768px) { /* Services grid single column */ .services-grid { grid-template-columns: 1fr !important; gap: 2rem !important; } /* Hide nav links (you can replace with hamburger menu) */ .nav-links { display: none !important; } /* Hero Section Padding */ .hero-content { padding: 0 1rem; } /* Hero Title */ .hero-title { font-size: 2.5rem !important; line-height: 1.1 !important; } /* Hero Subtitle */ .hero-subtitle { font-size: 1rem !important; } /* CTA Button full width and centered content */ .cta-btn { width: 100% !important; justify-content: center !important; } /* Image container adjustments */ .image-container { padding: 0 1rem !important; max-width: 100% !important; } } `; const styles = { showcase: { fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif", height: '100vh', backgroundColor: '#fafafa', margin: 0, padding: 0, opacity: isLoaded ? 1 : 0, transform: isLoaded ? 'translateY(0) scale(1)' : 'translateY(50px) scale(0.95)', transition: 'all 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94)', }, header: { position: 'fixed' as const, top: 0, left: 0, right: 0, zIndex: 1000, backgroundColor: 'rgba(255, 255, 255, 0.95)', backdropFilter: 'blur(20px)', borderBottom: '1px solid rgba(0, 0, 0, 0.08)', transform: isLoaded ? 'translateY(0)' : 'translateY(-100px)', transition: 'all 0.8s cubic-bezier(0.34, 1.26, 0.64, 1)', transitionDelay: '0.3s', }, nav: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '1rem 2rem', maxWidth: '1400px', margin: '0 auto', }, logo: { display: 'flex', alignItems: 'center', gap: '0.5rem', fontSize: '1.5rem', fontWeight: 600, color: '#1a1a1a', opacity: isLoaded ? 1 : 0, transform: isLoaded ? 'translateX(0) rotate(0deg)' : 'translateX(-30px) rotate(-10deg)', transition: 'all 0.8s cubic-bezier(0.68, -0.55, 0.265, 1.55)', transitionDelay: '0.5s', }, logoIcon: { fontSize: '1.2rem', animation: isLoaded ? 'pulse 2s infinite' : 'none', }, navLinks: { display: 'flex', listStyle: 'none', margin: 0, padding: 0, gap: '2rem', }, navLink: { color: '#4a4a4a', textDecoration: 'none', fontSize: '0.95rem', fontWeight: 400, transition: 'all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)', cursor: 'pointer', opacity: isLoaded ? 1 : 0, transform: isLoaded ? 'translateY(0)' : 'translateY(-20px)', transitionDelay: '0.7s', }, hero: { display: 'flex', flexDirection: 'column' as const, alignItems: 'center', justifyContent: 'center', minHeight: '100vh', textAlign: 'center' as const, padding: '0 2rem', paddingTop: '80px', opacity: heroVisible ? 1 : 0, transform: heroVisible ? 'translateY(0)' : 'translateY(60px)', transition: 'all 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94)', }, heroContent: { maxWidth: '900px', margin: '0 auto', }, heroTitle: { fontSize: 'clamp(2.5rem, 5vw, 4.5rem)', fontWeight: 300, lineHeight: 1.2, color: '#1a1a1a', margin: '0 0 1.5rem 0', letterSpacing: '-0.02em', }, heroSubtitle: { fontSize: 'clamp(1.1rem, 2vw, 1.4rem)', color: '#6a6a6a', lineHeight: 1.6, margin: '0 0 3rem 0', fontWeight: 400, maxWidth: '700px', }, ctaBtn: { display: 'inline-flex', alignItems: 'center', gap: '0.75rem', backgroundColor: '#1a1a1a', color: 'white', border: 'none', padding: '1.2rem 2.5rem', borderRadius: '50px', fontSize: '1rem', fontWeight: 500, cursor: 'pointer', transition: 'all 0.4s cubic-bezier(0.4, 0, 0.2, 1)', fontFamily: 'inherit', boxShadow: '0 4px 20px rgba(26, 26, 26, 0.15)', }, ctaArrow: { fontSize: '1.2rem', transition: 'transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)', }, imageSection: { padding: '5rem 2rem', backgroundColor: '#ffffff', opacity: imageVisible ? 1 : 0, transform: imageVisible ? 'translateY(0)' : 'translateY(80px)', transition: 'all 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94)', }, imageContainer: { maxWidth: '1200px', margin: '0 auto', borderRadius: '20px', overflow: 'hidden', boxShadow: '0 20px 60px rgba(0, 0, 0, 0.1)', transform: imageVisible ? 'scale(1) rotateX(0deg)' : 'scale(0.9) rotateX(10deg)', transition: 'all 1s cubic-bezier(0.25, 0.46, 0.45, 0.94)', transitionDelay: '0.2s', }, heroImage: { width: '100%', height: 'auto', display: 'block', transition: 'transform 0.6s ease', }, purpose: { padding: '6rem 2rem', backgroundColor: '#fafafa', opacity: purposeVisible ? 1 : 0, transform: purposeVisible ? 'translateY(0)' : 'translateY(60px)', transition: 'all 1s cubic-bezier(0.25, 0.46, 0.45, 0.94)', textAlign: 'center' as const, }, purposeContent: { maxWidth: '1000px', margin: '0 auto', }, purposeTitle: { fontSize: 'clamp(2rem, 4vw, 3rem)', fontWeight: 300, color: '#1a1a1a', margin: '0 0 2rem 0', letterSpacing: '-0.01em', }, purposeDescription: { fontSize: '1.2rem', color: '#6a6a6a', lineHeight: 1.7, margin: '0', maxWidth: '800px', }, servicesSection: { padding: '8rem 2rem', backgroundColor: '#ffffff', position: 'relative' as const, minHeight: '100vh', display: 'flex', alignItems: 'center', opacity: servicesVisible ? 1 : 0, transform: servicesVisible ? 'translateY(0)' : 'translateY(80px)', transition: 'all 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94)', }, servicesContainer: { maxWidth: '1400px', margin: '0 auto', width: '100%', }, servicesHeader: { textAlign: 'center' as const, marginBottom: '5rem', position: 'relative' as const, }, servicesTitle: { fontSize: 'clamp(2.5rem, 5vw, 4rem)', fontWeight: 300, color: '#1a1a1a', lineHeight: 1.2, margin: '0 0 1.5rem 0', letterSpacing: '-0.02em', }, servicesSubtitle: { fontSize: '1.2rem', color: '#6a6a6a', lineHeight: 1.6, maxWidth: '600px', margin: '0 auto', }, servicesGrid: { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(350px, 1fr))', gap: '3rem', marginTop: '3rem', }, serviceCard: { backgroundColor: 'transparent', padding: '2.5rem 2rem', borderRadius: '20px', position: 'relative' as const, transition: 'all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)', border: '1px solid rgba(0, 0, 0, 0.08)', height: '100%', display: 'flex', flexDirection: 'column' as const, }, serviceIcon: { fontSize: '3rem', marginBottom: '1.5rem', color: '#1a1a1a', }, serviceTitle: { fontSize: 'clamp(1.5rem, 2.5vw, 1.8rem)', fontWeight: 500, color: '#1a1a1a', lineHeight: 1.3, margin: '0 0 1.5rem 0', letterSpacing: '-0.01em', }, serviceDescription: { fontSize: '1rem', color: '#6a6a6a', lineHeight: 1.6, margin: '0', flex: 1, }, footer: { padding: '4rem 2rem 2rem', backgroundColor: '#1a1a1a', color: '#ffffff', textAlign: 'center' as const, }, footerContent: { maxWidth: '1200px', margin: '0 auto', }, footerText: { fontSize: '0.9rem', color: '#9a9a9a', margin: 0, }, }; // Event Handlers for hovers omitted for brevity — keep them from your original code const handleNavLinkHover = (e: React.MouseEvent) => { e.currentTarget.style.color = '#1a1a1a'; }; const handleNavLinkLeave = (e: React.MouseEvent) => { e.currentTarget.style.color = '#4a4a4a'; }; const handleCtaBtnHover = (e: React.MouseEvent) => { e.currentTarget.style.backgroundColor = '#333333'; e.currentTarget.style.transform = 'translateY(-3px)'; e.currentTarget.style.boxShadow = '0 8px 30px rgba(26, 26, 26, 0.25)'; const arrow = e.currentTarget.querySelector('.cta-arrow') as HTMLElement; if (arrow) arrow.style.transform = 'translateX(5px)'; }; const handleCtaBtnLeave = (e: React.MouseEvent) => { e.currentTarget.style.backgroundColor = '#1a1a1a'; e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = '0 4px 20px rgba(26, 26, 26, 0.15)'; const arrow = e.currentTarget.querySelector('.cta-arrow') as HTMLElement; if (arrow) arrow.style.transform = 'translateX(0)'; }; const handleImageHover = (e: React.MouseEvent) => { e.currentTarget.style.transform = 'scale(1.05)'; }; const handleImageLeave = (e: React.MouseEvent) => { e.currentTarget.style.transform = 'scale(1)'; }; const handleServiceCardHover = (e: React.MouseEvent) => { e.currentTarget.style.transform = 'translateY(-8px)'; e.currentTarget.style.boxShadow = '0 20px 40px rgba(0, 0, 0, 0.1)'; e.currentTarget.style.backgroundColor = '#fafafa'; }; const handleServiceCardLeave = (e: React.MouseEvent) => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = 'none'; e.currentTarget.style.backgroundColor = 'transparent'; }; return ( <>