Danica Invia il brief

Contact Danica

Start con a quick message.

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

Quick contact

Short request

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

This is the simple contact form. Detailed progetto information goes into the Progetto Brief section.

Detailed progetto brief

Invia il brief del progetto

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

1. Location
2. Progetto 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, o need a schedule a progetto 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, ristrutturazione, procurement, feasibility o coordination.

Progetto stage

Early questions are welcome

The progetto does not need a be fully defined prima di you write. A location e basic goal are enough a start.