Danica Envoyer le brief

Contact Danica

Start avec a quick message.

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

Quick contact

Short request

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

This is the simple contact form. Detailed projet information goes into the Projet Brief section.

Detailed projet brief

Envoyer le brief projet

Tell us about your property, plot, interior, rénovation ou investment idea. We will review the context et suggest the right next step.

1. Location
2. Projet type
3. Property status
4. Object type
5. Approximate size
6. What needs à 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 à send materials by email, ou need à schedule a projet consultation.

What à send

Photos, plans, listing link

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

What happens next

We map the right route

Danica reviews the context et suggests whether the next step is design, rénovation, procurement, feasibility ou coordination.

Projet stage

Early questions are welcome

The projet does not need à be fully defined avant you write. A location et basic goal are enough à start.