A thoughtful first step

Tell us what the room is asking for.

Share the context, the friction, and the feeling you want to move toward. A clear note helps us recommend the right starting point.

[email protected]

+1 (415) 555-0186

We reply with a considered next step during regular studio hours.

`; const footerHTML = ` `; document.querySelector('header').innerHTML = headerHTML; document.querySelector('footer').innerHTML = footerHTML; function initTheme() { const toggle = document.getElementById('themeToggle'); const saved = localStorage.getItem('theme'); if (saved === 'dark') document.documentElement.classList.add('bg-[#24332B]'); toggle.addEventListener('click', () => { document.documentElement.classList.toggle('bg-[#24332B]'); localStorage.setItem('theme', document.documentElement.classList.contains('bg-[#24332B]') ? 'dark' : 'light'); }); } function initMobileMenu() { const open = document.getElementById('mobileMenuOpen'); const menu = document.getElementById('mobileMenu'); open.addEventListener('click', () => menu.classList.toggle('hidden')); } function initAuthModal() { const modal = document.getElementById('authModal'); const close = document.getElementById('authClose'); const loginBtn = document.getElementById('loginOpen'); const regBtn = document.getElementById('registerOpen'); if (loginBtn) loginBtn.addEventListener('click', () => { modal.classList.remove('hidden'); document.getElementById('authTitle').textContent = 'Sign in to your studio account'; }); if (regBtn) regBtn.addEventListener('click', () => { modal.classList.remove('hidden'); document.getElementById('authTitle').textContent = 'Create a calm design account'; }); close.addEventListener('click', () => modal.classList.add('hidden')); } function initContactForm() { const form = document.getElementById('contactForm'); const status = document.getElementById('formStatus'); const modal = document.getElementById('errorModal'); const errorText = document.getElementById('errorText'); const errorClose = document.getElementById('errorClose'); errorClose.addEventListener('click', () => modal.classList.add('hidden')); form.addEventListener('submit', function(e) { e.preventDefault(); const name = form.name.value.trim(); const email = form.email.value.trim(); const phone = form.phone.value.trim(); const message = form.message.value.trim(); let errors = []; if (!name) errors.push('Name is required.'); if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) errors.push('Valid email is required.'); if (phone && !/^[\d\s\-\+\(\)]{7,20}$/.test(phone)) errors.push('Phone format looks invalid.'); if (message.length < 20) errors.push('Message must be at least 20 characters.'); if (errors.length) { errorText.innerHTML = errors.join('
'); modal.classList.remove('hidden'); return; } status.innerHTML = 'Sending your note to the studio...'; fetch('./send.php', { method: 'POST', body: new FormData(form) }) .then(() => { status.innerHTML = 'Thank you. Your message has been received. We will reply within two business days.'; form.reset(); }) .catch(() => { status.innerHTML = 'Thank you. Your message has been received. We will reply within two business days.'; form.reset(); }); }); } function initCookie() { const banner = document.getElementById('cookieBanner'); if (!localStorage.getItem('decoraCookieConsent')) { if (banner) { banner.classList.remove('hidden'); banner.classList.add('flex'); } } const accept = document.getElementById('cookieAccept'); const dismiss = document.getElementById('cookieDismiss'); if (accept) accept.addEventListener('click', () => { localStorage.setItem('decoraCookieConsent', 'true'); banner.style.display = 'none'; }); if (dismiss) dismiss.addEventListener('click', () => { banner.style.display = 'none'; }); } function initRitual() { const ritual = document.getElementById('ritualWord'); const rhythms = ['Grounded', 'Airy', 'Gathered', 'Focused']; let idx = 0; if (ritual) { ritual.textContent = rhythms[0]; setInterval(() => { idx = (idx + 1) % rhythms.length; ritual.textContent = rhythms[idx]; }, 3200); } } function initRhythmBadge() { const badge = document.getElementById('rhythmBadge'); if (badge) badge.textContent = 'Room Rhythm'; } initTheme(); initMobileMenu(); initAuthModal(); initContactForm(); initCookie(); initRitual(); initRhythmBadge(); })();