Danica Enviar briefing

Contact Danica

Start com a quick message.

Use the short form if you want a ask a question, book a consultation ou describe the projeto em a few lines. If the projeto is already clear, continue a the detailed brief.

Quick contact

Short request

For the first message, a short description is enough. Danica will reply com the right next step.

This is the simple contact form. Detailed projeto information goes into the Projeto Brief section.

Detailed projeto brief

Enviar briefing do projeto

Tell us about your property, plot, interior, renovação ou investment idea. We will review the context e suggest the right next step.

1. Location
2. Projeto type
3. Property status
4. Object type
5. Approximate size
6. What needs a be done
7. Budget range
8. Timeline
9. File upload
10. Contact details

'; try { const response = await fetch(mapStage.dataset.mapSrc || '/assets/images/maps/croatia.svg', { cache: 'force-cache' }); if (!response.ok) throw new Error('map load failed'); const text = await response.text(); const doc = new DOMParser().parseFromString(text, 'image/svg+xml'); const svg = doc.querySelector('svg'); if (!svg) throw new Error('map svg missing'); enhanceCountryMapSvg(svg); mapStage.replaceChildren(document.importNode(svg, true)); enhanceCountryMapSvg(mapStage.querySelector('svg')); syncCountryMapActiveRegion(current); countryMapLoaded = true; } catch (error) { mapStage.innerHTML = '
' + escapeHtml('Map could not be loaded.') + '
'; } } function hideCountryMapModal(){ if (mapModal) mapModal.hidden = true; } if (regionSelect) { regionSelect.addEventListener('change', syncManualRegionSelection); updateCities(); } function syncPreferredContactRequirement(){ if (!preferredContact) return; if (nameInput) nameInput.required = true; if (emailInput) emailInput.required = preferredContact.value === 'Email'; if (phoneInput) { phoneInput.required = preferredContact.value === 'WhatsApp' || preferredContact.value === 'Phone' || preferredContact.value === 'Telegram'; phoneInput.placeholder = preferredContact.value === 'Telegram' ? '@username' : ''; } clearBriefValidationHighlight(); } function clearBriefValidationHighlight(){ document.body.classList.remove('brief-validation-active'); document.body.classList.remove('contact-hub-validation-active'); form.classList.remove('brief-validation-focus'); form.querySelectorAll('.brief-field-error').forEach(item => item.classList.remove('brief-field-error')); form.querySelectorAll('.brief-control-error').forEach(item => item.classList.remove('brief-control-error')); } function showBriefValidationError(field){ if (!field) return; clearBriefValidationHighlight(); const invalidFields = Array.from(form.querySelectorAll('input, select, textarea')).filter(item => !item.validity.valid); invalidFields.forEach(item => { item.classList.add('brief-control-error'); (item.closest('label') || item.closest('fieldset'))?.classList.add('brief-field-error'); }); document.body.classList.add('brief-validation-active'); form.classList.add('brief-validation-focus'); field.scrollIntoView({ behavior: 'smooth', block: 'center' }); setTimeout(() => field.focus({ preventScroll: true }), 260); setTimeout(() => { form.classList.remove('brief-validation-focus'); document.body.classList.remove('brief-validation-active'); document.body.classList.remove('contact-hub-validation-active'); }, 2200); } if (preferredContact) { preferredContact.addEventListener('change', syncPreferredContactRequirement); syncPreferredContactRequirement(); } form.addEventListener('invalid', function(event){ event.preventDefault(); if (handlingInvalidField) return; handlingInvalidField = true; showBriefValidationError(event.target); setTimeout(() => { handlingInvalidField = false; }, 420); }, true); document.addEventListener('click', function(event){ if (event.target.closest?.('[data-country-map-open]')) { event.preventDefault(); showCountryMapModal(); return; } if (event.target.closest?.('[data-country-map-close]')) { event.preventDefault(); hideCountryMapModal(); return; } if (event.target.closest?.('[data-country-map-apply]')) { event.preventDefault(); hideCountryMapModal(); return; } const cityButton = event.target.closest?.('[data-map-city]'); if (cityButton) { event.preventDefault(); cityInput.value = cityButton.getAttribute('data-map-city') || cityButton.textContent.trim(); cityPanel?.querySelectorAll('.is-active-city').forEach(item => item.classList.remove('is-active-city')); cityButton.classList.add('is-active-city'); } }); document.addEventListener('keydown', function(event){ if (event.key === 'Escape' && mapModal && !mapModal.hidden) { hideCountryMapModal(); document.getElementById('countryMapOpenBtn')?.focus({ preventScroll: true }); } }); function appendSiteOpsContext(){ const data = new FormData(form); const params = new URLSearchParams(window.location.search); const doc = document.documentElement; const scrollBase = Math.max(1, document.documentElement.scrollHeight - window.innerHeight); const scrollDepth = Math.min(100, Math.max(0, Math.round((window.scrollY / scrollBase) * 100))); const filledFields = Array.from(form.elements) .filter(item => item.name && item.name !== 'website' && item.type !== 'hidden') .filter(item => item.type === 'checkbox' ? item.checked : String(item.value || '').trim() !== '') .map(item => item.name); data.set('page_url', window.location.href); data.set('referrer', document.referrer || ''); data.set('locale', doc.lang || 'en'); data.set('page_title', document.title || ''); data.set('route_path', window.location.pathname || '/contact/'); data.set('form_id', form.id || ''); data.set('form_name', form.getAttribute('aria-label') || 'Project brief'); data.set('timezone', Intl.DateTimeFormat().resolvedOptions().timeZone || ''); data.set('viewport', window.innerWidth + 'x' + window.innerHeight); data.set('browser_user_agent', navigator.userAgent || ''); data.set('time_on_page_ms', String(Date.now() - formStartedAt)); data.set('scroll_depth_percent', String(scrollDepth)); data.set('recent_clicks', '[]'); data.set('filled_fields', JSON.stringify(filledFields)); data.set('visited_steps', JSON.stringify(['brief'])); data.set('form_rendered_at', form.dataset.renderedAt || ''); params.forEach((value, key) => { if (key.indexOf('utm_') === 0 && value) data.set(key, value); }); return data; } form.addEventListener('submit', async function(event){ event.preventDefault(); syncPreferredContactRequirement(); const invalidFields = Array.from(form.querySelectorAll('input, select, textarea')).filter(item => !item.validity.valid); if (invalidFields.length) { showBriefValidationError(invalidFields[0]); return; } status.textContent = 'Sending...'; const button = form.querySelector('button[type="submit"]'); if (button) button.disabled = true; try { const response = await fetch(form.dataset.submitUrl || form.action, { method: 'POST', body: appendSiteOpsContext(), headers: {'Accept': 'application/json'} }); const result = await response.json(); if (!response.ok || !result.ok) throw new Error(result.error || 'Form delivery failed'); status.textContent = 'Brief received. We will review it and reply with the next step.'; form.reset(); updateCities(); } catch (error) { status.textContent = 'Could not send the brief. Please email a@danicaspace.com with the same details.'; } finally { if (button) button.disabled = false; } }); })();

Company contacts

Direct contact details.

Use direct contacts if you already know what you need, want a send materials by email, ou need a schedule a projeto consultation.

What a send

Photos, plans, listing link

Useful materials include photos, videos, drawings, measurements, real estate links e inspiration references.

What happens next

We map the right route

Danica reviews the context e suggests whether the next step is design, renovação, procurement, feasibility ou coordination.

Projeto stage

Early questions are welcome

The projeto does not need a be fully defined antes de you write. A location e basic goal are enough a start.