Дизайн-проект интерьера.
От концепции до реализации в Санкт-Петербурге
Полный цикл услуг: от разработки уникальной идеи и 3D-визуализации до авторского надзора за ремонтом. Создаем пространства, которые отражают ваш характер и работают на вас.
- Более 200 реализованных проектов
- Фиксированная смета без скрытых платежей
- Гарантия 2 года на все работы
????
3D-визуализация проекта
в современном стиле
Как мы создаём дизайн-проект
Четкий план и контроль на каждом этапе — залог результата, который превзойдет ожидания
01
Бриф и техническое задание
Глубокое интервью, выявление потребностей, замеры помещения, анализ планировки. Формируем подробное ТЗ, с которым согласны обе стороны.
- Встреча на объекте или онлайн
- Опросник по стилю жизни и эстетике
- Технические обмеры и фотофиксация
02
Концепция и планировочные решения
Разрабатываем 2-3 варианта планировки с расстановкой мебели и оборудования. Утверждаем стилевое направление, колористику и основные материалы.
- Планы с зонированием
- Мудборды (доски настроения)
- Подбор референсов
03
3D-визуализация и рабочие чертежи
Создаём фотореалистичные 3D-модели всех помещений. Подготавливаем полный пакет чертежей для строителей: от демонтажа до схемы раскладки плитки.
- Обмерный план и план демонтажа/монтажа
- План полов, потолков, освещения
- Развертки стен с привязкой сантехники
04
Комплектация и авторский надзор
Помогаем подобрать и заказать все материалы, мебель и декор. Контролируем выполнение ремонтных работ на объекте, чтобы результат точно соответствовал проекту.
- Ведомость чистовых материалов и оборудования
- Поиск поставщиков и расчет бюджета
- Регулярные выезды на объект
Выберите свой пакет услуг
Мы создали гибкие варианты сотрудничества, чтобы вы платили только за то, что вам действительно нужно
✓ Обмерочный план
✓ 2 варианта планировочного решения
✓ План расстановки мебели
✓ План полов и потолков
– 3D-визуализация
– Подбор материалов
Выбрать пакет Самый популярный
✓ Всё из пакета «Базовый»
✓ 3D-визуализация (5+ ракурсов)
✓ План освещения и электроснабжения
✓ План сантехнических приборов
✓ Ведомость отделочных материалов
– Авторский надзор
Выбрать пакет ✓ Всё из пакета «Оптимальный»
✓ Детальные 3D-визуализации (10+ ракурсов)
✓ Подбор всех материалов, мебели, декора
✓ Авторский надзор (5 выездов)
✓ Составление сметы на ремонтные работы
✓ Консультации по выбору подрядчиков
Выбрать пакет Почему клиенты выбирают Flora Art
Наша философия — создавать не просто красивые картинки, а продуманные пространства для жизни
????
Функциональный дизайн
Каждый сантиметр пространства работает на вас. Мы учитываем ваш образ жизни, привычки и потребности каждого члена семьи.
????
Честная смета
Фиксируем стоимость проекта до начала работ. Никаких скрытых платежей или неожиданных доплат в процессе реализации.
????
Прозрачность на всех этапах
Регулярные отчеты, обсуждение всех решений в чате, доступ к облаку с чертежами и визуализациями.
⚡
Соблюдение сроков
Четкий календарный план с дедлайнами для каждого этапа. Мы ценим ваше время так же, как и вы.
Ответы на частые вопросы
Мы собрали вопросы, которые нам задают чаще всего
Сколько времени занимает разработка дизайн-проекта? +
Срок зависит от площади и сложности:
- Квартира 50-80 м²: 3-4 недели
- Квартира 80-120 м²: 4-6 недель
- Загородный дом: от 6 недель
Точные сроки фиксируем в договоре.
Можно ли вносить правки в проект в процессе работы? +
Да, конечно. Мы предусмотрели несколько итераций на каждом этапе:
- 2-3 варианта планировки для выбора
- Корректировки концепции на основе ваших правок
- Возможность внесения изменений в чертежи до их финального утверждения
Наша задача — создать проект, который будет вам идеально подходить.
Выдаете ли вы какие-то документы по завершении проекта? +
По окончании работы вы получаете полный пакет документов:
- Альбом рабочих чертежей в печатном и электронном виде (PDF, DWG)
- Фотореалистичные 3D-визуализации
- Ведомости с артикулами и контактами поставщиков материалов и мебели
- Техническое задание для строительной бригады
Работаете ли вы с удаленными клиентами? +
Да, мы успешно реализуем проекты для клиентов из других городов. Работа строится так:
- Все обсуждения и встречи проходят онлайн
- Для замеров можем рекомендовать проверенных специалистов в вашем городе
- Весь процесс контролируем через онлайн-чаты, видеозвонки и облачные сервисы
/* Основные стили в духе T-Bank */
:root {
--primary-green: #4A9C6D;
--primary-dark: #3a7c55;
--secondary-dark: #2d3436;
--light-gray: #f8f9fa;
--medium-gray: #e9ecef;
--text-gray: #6c757d;
--white: #ffffff;
--border-radius: 12px;
--transition: all 0.3s ease;
}
/* Базовые стили */
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--secondary-dark);
background-color: var(--white);
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
section {
padding: 80px 0;
}
.section-dark {
background-color: var(--secondary-dark);
color: var(--white);
}
.section-light {
background-color: var(--light-gray);
}
.section-title {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1rem;
text-align: center;
}
.section-subtitle {
font-size: 1.125rem;
color: var(--text-gray);
text-align: center;
max-width: 700px;
margin: 0 auto 3rem;
}
.section-dark .section-subtitle {
color: rgba(255, 255, 255, 0.8);
}
/* Герой секция */
.hero-section {
padding: 100px 0;
}
.hero-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
.hero-title {
font-size: 3rem;
font-weight: 800;
line-height: 1.2;
margin-bottom: 1.5rem;
}
.gradient-text {
background: linear-gradient(90deg, var(--primary-green) 0%, var(--primary-dark) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-description {
font-size: 1.25rem;
color: var(--text-gray);
margin-bottom: 2rem;
}
.hero-cta {
display: flex;
gap: 15px;
margin-bottom: 3rem;
}
.primary-button, .secondary-button, .card-button {
display: inline-block;
padding: 16px 32px;
border-radius: var(--border-radius);
text-decoration: none;
font-weight: 600;
transition: var(--transition);
text-align: center;
}
.primary-button {
background-color: var(--primary-green);
color: var(--white);
border: 2px solid var(--primary-green);
}
.primary-button:hover {
background-color: var(--primary-dark);
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(74, 156, 109, 0.2);
}
.secondary-button {
background-color: transparent;
color: var(--secondary-dark);
border: 2px solid var(--medium-gray);
}
.secondary-button:hover {
border-color: var(--primary-green);
color: var(--primary-green);
}
.hero-features {
display: flex;
gap: 30px;
list-style: none;
padding: 0;
}
.hero-features li {
font-size: 0.95rem;
}
/* Процесс работы */
.process-steps {
max-width: 800px;
margin: 0 auto;
}
.step {
display: flex;
gap: 30px;
margin-bottom: 60px;
padding-bottom: 60px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.step:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.step-number {
font-size: 2.5rem;
font-weight: 800;
color: var(--primary-green);
min-width: 60px;
}
.step-content h3 {
font-size: 1.5rem;
margin-bottom: 1rem;
}
.step-features {
list-style: none;
padding: 0;
margin-top: 1rem;
}
.step-features li {
padding: 5px 0;
color: rgba(255, 255, 255, 0.8);
}
.step-features li:before {
content: "— ";
color: var(--primary-green);
margin-right: 5px;
}
/* Тарифы */
.pricing-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 50px;
}
.pricing-card {
background: var(--white);
border-radius: var(--border-radius);
padding: 30px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
border: 1px solid var(--medium-gray);
transition: var(--transition);
position: relative;
}
.pricing-card:hover {
transform: translateY(-10px);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.1);
}
.pricing-card.highlighted {
border: 2px solid var(--primary-green);
}
.popular-badge {
position: absolute;
top: -12px;
left: 50%;
transform: translateX(-50%);
background: var(--primary-green);
color: var(--white);
padding: 6px 20px;
border-radius: 20px;
font-size: 0.85rem;
font-weight: 600;
}
.card-header {
text-align: center;
margin-bottom: 30px;
padding-bottom: 20px;
border-bottom: 1px solid var(--medium-gray);
}
.card-header h3 {
font-size: 1.5rem;
margin-bottom: 10px;
}
.price {
font-size: 2.5rem;
font-weight: 800;
color: var(--primary-green);
margin: 10px 0;
}
.price-note {
color: var(--text-gray);
font-size: 0.9rem;
}
.card-features {
margin-bottom: 30px;
}
.feature {
display: flex;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid var(--light-gray);
}
.feature:last-child {
border-bottom: none;
}
.feature-check {
color: var(--primary-green);
font-weight: 700;
margin-right: 10px;
min-width: 20px;
}
.feature.disabled {
color: var(--text-gray);
opacity: 0.6;
}
.feature.disabled .feature-check {
color: var(--text-gray);
}
.card-button {
display: block;
width: 100%;
margin-top: 20px;
}
/* Преимущества */
.benefits-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 40px;
margin-top: 50px;
}
.benefit-card {
text-align: center;
}
.benefit-icon {
font-size: 3rem;
margin-bottom: 20px;
}
.benefit-card h3 {
font-size: 1.25rem;
margin-bottom: 15px;
}
/* FAQ */
.faq-list {
max-width: 800px;
margin: 50px auto 0;
}
.faq-item {
border: 1px solid var(--medium-gray);
border-radius: var(--border-radius);
margin-bottom: 15px;
overflow: hidden;
}
.faq-item[open] {
border-color: var(--primary-green);
}
.faq-question {
padding: 25px 30px;
font-weight: 600;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
list-style: none;
background: var(--white);
}
.faq-question::-webkit-details-marker {
display: none;
}
.faq-item[open] .faq-question .faq-icon {
transform: rotate(45deg);
}
.faq-answer {
padding: 0 30px;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease, padding 0.3s ease;
background: var(--white);
}
.faq-item[open] .faq-answer {
padding: 0 30px 30px;
max-height: 1000px;
}
/* Форма */
.form-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
.form-title {
font-size: 2rem;
margin-bottom: 1.5rem;
}
.form-description {
font-size: 1.125rem;
margin-bottom: 2rem;
opacity: 0.9;
}
.form-benefits {
list-style: none;
padding: 0;
}
.form-benefits li {
padding: 10px 0;
position: relative;
padding-left: 30px;
}
.form-benefits li:before {
content: "✓";
position: absolute;
left: 0;
color: var(--primary-green);
font-weight: 700;
}
.design-form {
background: var(--white);
padding: 40px;
border-radius: var(--border-radius);
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}
.form-group {
margin-bottom: 25px;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: 500;
color: var(--secondary-dark);
}
input, select, textarea {
width: 100%;
padding: 15px;
border: 1px solid var(--medium-gray);
border-radius: var(--border-radius);
font-family: 'Inter', sans-serif;
font-size: 1rem;
transition: var(--transition);
}
input:focus, select:focus, textarea:focus {
outline: none;
border-color: var(--primary-green);
box-shadow: 0 0 0 3px rgba(74, 156, 109, 0.1);
}
.area-slider {
margin-top: 15px;
}
.area-slider input[type="range"] {
-webkit-appearance: none;
width: 100%;
height: 4px;
background: var(--medium-gray);
border-radius: 2px;
outline: none;
}
.area-slider input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 20px;
height: 20px;
background: var(--primary-green);
border-radius: 50%;
cursor: pointer;
}
.slider-values {
display: flex;
justify-content: space-between;
margin-top: 5px;
font-size: 0.85rem;
color: var(--text-gray);
}
.checkbox-group {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 10px;
}
.checkbox {
display: flex;
align-items: center;
cursor: pointer;
padding: 10px;
border-radius: 8px;
transition: var(--transition);
}
.checkbox:hover {
background: var(--light-gray);
}
.checkbox input {
display: none;
}
.checkmark {
width: 20px;
height: 20px;
border: 2px solid var(--medium-gray);
border-radius: 4px;
margin-right: 10px;
position: relative;
transition: var(--transition);
}
.checkbox input:checked + .checkmark {
background: var(--primary-green);
border-color: var(--primary-green);
}
.checkbox input:checked + .checkmark:after {
content: "✓";
position: absolute;
color: white;
font-size: 14px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.form-footer {
margin-top: 30px;
}
.submit-button {
width: 100%;
padding: 18px;
background: var(--primary-green);
color: white;
border: none;
border-radius: var(--border-radius);
font-size: 1.125rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
}
.submit-button:hover {
background: var(--primary-dark);
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
.form-note {
text-align: center;
margin-top: 15px;
font-size: 0.85rem;
color: var(--text-gray);
}
.form-note a {
color: var(--primary-green);
text-decoration: none;
}
/* Адаптивность */
@media (max-width: 992px) {
.hero-grid,
.form-container {
grid-template-columns: 1fr;
gap: 40px;
}
.section-title {
font-size: 2rem;
}
.hero-title {
font-size: 2.5rem;
}
}
@media (max-width: 768px) {
section {
padding: 60px 0;
}
.hero-section {
padding: 60px 0;
}
.pricing-cards {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
.hero-cta {
flex-direction: column;
}
}
// Интерактивность для страницы дизайн-проекта
document.addEventListener('DOMContentLoaded', function() {
// 1. Слайдер площади
const areaInput = document.getElementById('area');
const areaRange = document.getElementById('area-range');
if (areaRange && areaInput) {
areaRange.addEventListener('input', function() {
areaInput.value = this.value;
});
areaInput.addEventListener('input', function() {
if (this.value >= 20 && this.value <= 300) {
areaRange.value = this.value;
}
});
}
// 2. Заполнение скрытого поля выбранным пакетом при клике на кнопку
const packageButtons = document.querySelectorAll('[data-package]');
const selectedPackageField = document.getElementById('selected-package');
packageButtons.forEach(button => {
button.addEventListener('click', function(e) {
if (this.getAttribute('href') === '#contact-form') {
e.preventDefault();
const packageName = this.getAttribute('data-package');
selectedPackageField.value = packageName;
// Плавный скролл к форме
document.querySelector('#contact-form').scrollIntoView({
behavior: 'smooth'
});
// Фокус на первом поле формы
setTimeout(() => {
document.getElementById('property-type').focus();
}, 800);
}
});
});
// 3. Валидация и отправка формы
const contactForm = document.getElementById('project-calc-form');
if (contactForm) {
contactForm.addEventListener('submit', function(e) {
e.preventDefault();
// Простая валидация
const phoneInput = document.getElementById('phone');
const phonePattern = /^[\+]?[7-8]?[\s]?\(?[0-9]{3}\)?[\s]?[0-9]{3}[\s]?[0-9]{2}[\s]?[0-9]{2}$/;
if (!phonePattern.test(phoneInput.value.replace(/\s/g, ''))) {
alert('Пожалуйста, введите корректный номер телефона');
phoneInput.focus();
return;
}
// Сбор данных формы
const formData = new FormData(this);
const data = Object.fromEntries(formData);
// В реальном проекте здесь отправка на сервер
console.log('Данные формы:', data);
// Показать сообщение об успехе
const submitButton = this.querySelector('.submit-button');
const originalText = submitButton.textContent;
submitButton.textContent = 'Отправлено!';
submitButton.style.backgroundColor = '#3a7c55';
submitButton.disabled = true;
// Через 3 секунды сбросить
setTimeout(() => {
submitButton.textContent = originalText;
submitButton.style.backgroundColor = '';
submitButton.disabled = false;
contactForm.reset();
}, 3000);
// Здесь должна быть интеграция с Tilda
// Пример: отправка данных в Tilda Forms
// sendToTildaForm(data);
});
}
// 4. Интерактивность FAQ
const faqItems = document.querySelectorAll('.faq-item');
faqItems.forEach(item => {
item.addEventListener('toggle', function() {
if (this.open) {
// Закрыть другие открытые FAQ
faqItems.forEach(otherItem => {
if (otherItem !== this && otherItem.open) {
otherItem.open = false;
}
});
}
});
});
// 5. Анимация появления элементов при скролле
const observerOptions = {
root: null,
rootMargin: '0px',
threshold: 0.1
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('animate-in');
}
});
}, observerOptions);
// Наблюдаем за элементами для анимации
document.querySelectorAll('.step, .benefit-card, .pricing-card').forEach(el => {
observer.observe(el);
});
});
// Функция для отправки в Tilda (пример)
function sendToTildaForm(data) {
// Пример отправки данных в форму Tilda
const tildaData = {
formid: 'YOUR_FORM_ID',
ProjectType: data.property_type,
Area: data.area,
Rooms: data.rooms,
Package: data.selected_package,
Name: data.name,
Phone: data.phone,
Comment: data.comment || ''
};
// Используйте API Tilda или другой метод интеграции
// fetch('https://forms.tildacdn.com/proccesform/', {
// method: 'POST',
// headers: {
// 'Content-Type': 'application/x-www-form-urlencoded',
// },
// body: new URLSearchParams(tildaData)
// })
// .then(response => response.json())
// .then(result => {
// console.log('Успешно отправлено в Tilda:', result);
// })
// .catch(error => {
// console.error('Ошибка отправки в Tilda:', error);
// });
}