Дизайн террасы и зоны отдыха на открытом воздухе в Хорватии Отправить бриф

Свяжитесь с Danica

Начните с короткого сообщения.

Используйте короткую форму, если хотите задать вопрос, забронировать консультацию или описать проект в нескольких строках. Если проект уже понятен, переходите к подробному брифу.

Быстрая связь

Короткий запрос

Для первого сообщения достаточно короткого описания. Danica ответит с правильным следующим шагом.

Это простая контактная форма. Подробная информация о проекте указывается в разделе проектного брифа.

Подробный проектный бриф

Отправить проектный бриф

Расскажите нам о недвижимости, участке, интерьере, ремонте или инвестиционной идее. Мы изучим контекст и предложим правильный следующий шаг.

1. Локация
2. Тип проекта
3. Статус недвижимости
4. Тип объекта
5. Примерная площадь
6. Что нужно сделать
7. Диапазон бюджета
8. Сроки
9. Загрузка файлов
10. Контактные данные

'; 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; } }); })();

Контакты компании

Прямые контактные данные.

Используйте прямые контакты, если уже знаете, что вам нужно, хотите отправить материалы по электронной почте или запланировать консультацию по проекту.

Что отправить

Фото, планы, ссылка на объявление

Полезные материалы включают фото, видео, чертежи, замеры, ссылки на недвижимость и референсы для вдохновения.

Что будет дальше

Мы определяем правильный маршрут

Danica изучает контекст и предлагает, что должно быть следующим шагом: дизайн, ремонт, закупка, анализ реализуемости или координация.

Стадия проекта

Можно обращаться с ранними вопросами

Проект не должен быть полностью определен до обращения. Для начала достаточно локации и базовой цели.