1<!DOCTYPE html>
2<html lang="ru">
3<head>
4<link rel="preconnect" href="https://mc.yandex.ru">
5<link rel="preconnect" href="https://vk.com">
6<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
7<meta http-equiv="Content-Language" content="ru">
8<meta name="viewport" content="width=device-width, initial-scale=1.0">
9<meta name="theme-color" content="#ffffff">
10<link rel="preload" href="/assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin="anonymous">
11<style>
12 @font-face { font-family: 'FontAwesome'; font-display: swap; }
13 body { font-display: swap; }
14 .prod .labels-block { z-index: 20 !important; }
15
16 body.modal-open {
17 overflow: auto !important;
18 overflow-y: scroll !important;
19 padding-right: 0 !important;
20 }
21
22 @keyframes shimmer {
23 0% { background-position: -1000px 0; }
24 100% { background-position: 1000px 0; }
25 }
26
27 .cat-item-card-cover {
28 /* Светло-серый фон с градиентным бликом */
29 background: #f6f7f8;
30 background-image: linear-gradient(to right, #f6f7f8 0%, #edeef1 20%, #f6f7f8 40%, #f6f7f8 100%);
31 background-repeat: no-repeat;
32 background-size: 1000px 100%;
33 animation: shimmer 1.5s infinite linear forwards;
34
35 overflow: hidden;
36 position: relative;
37 display: block;
38 }
39
40 .cat-item-cover-img {
41 opacity: 0;
42 transform: scale(1.03); /* Легкий зум */
43 filter: blur(5px); /* Легкое размытие в начале */
44 transition: opacity 0.5s ease-out, transform 0.7s ease-out, filter 0.5s ease-out;
45
46 width: 100%;
47 height: auto;
48 object-fit: contain;
49 display: block;
50 will-change: opacity, transform;
51 }
52
53 .cat-item-cover-img.loaded {
54 opacity: 1;
55 transform: scale(1);
56 filter: blur(0);
57 }
58
59 .cat-item-card-cover.img-loaded {
60 animation: none;
61 background: none;
62 }
63 .topm, .feedback-link br{
64 display:none;
65 }
66 @media all and (min-width:1340px){
67 body a[aria-label="Позвонить нам"]{
68 padding:0 !important;
69 padding-top:15px !important;
70 }
71 .nav .dropdown{
72 display:none;
73 }
74 .feedback-link br{
75 display:block;
76 }
77 .topm{
78 display: flex;
79 flex-flow: wrap;
80 list-style: unset;
81 gap: 5px;
82 margin: 0;
83 padding: 0 12px;
84 float: left;
85 }
86 .topm li {
87 list-style: none;
88 }
89 .topm a {
90 display: flex;
91 flex-flow: column;
92 font-size: 10px;
93 gap: 5px;
94 align-items: center;
95 }
96 .topm .menu-icon{
97 margin-right:0;
98 }
99 .navbar-form.navbar-left{
100 padding:0;
101 }
102 .navbar-form .form-control{
103 max-width:100px;
104 }
105 .navbar-default .navbar-nav>li>a.feedback-link{
106 padding: 0;
107 padding-top: 5px;
108 font-size:12px;
109 text-align:center;
110 }
111 }
112 @media all and (min-width:1510px){
113 .topm{
114 width: 50%;
115 gap:10px;
116 justify-content: space-between;
117 padding: 0 5px;
118 }
119 .topm a {
120 font-size: 10px;
121 }
122 }
123 @media all and (min-width:1610px){
124 .navbar-form .form-control{
125 max-width:none;
126 }
127 }
128 @media all and (min-width:1890px){
129 .topm{
130 width: 54%;
131 gap:10px;
132 justify-content: space-between;
133 }
134 .topm a {
135 font-size: 14px;
136 gap:0;
137 }
138 .topm .menu-icon {
139 width: 31px;
140 }
141 body .navbar-form .form-control {
142 width: 220px;
143 }
144 }
145 @media all and (min-width:1950px){
146 .topm{
147 width: 55%;
148 }
149 }
150 @media all and (min-width:2000px){
151 .topm{
152 width: 56%;
153 }
154 }
155 @media all and (min-width:2100px){
156 .topm{
157 width: 58%;
158 }
159 }
160 </style>
161<title>Конструктор мебели — онлайн, бесплатно и в 3D</title>
162<meta name="description" content="Бесплатный онлайн-конструктор мебели. Спроектируйте мебель, которая идеально подойдёт к интерьеру именно вашей кухни, гостиной, спальни, детской или кабинета. Быстро и удобно. Ваш проект — наше воплощение!">
163<meta name="keywords" content="онлайн-конструктор мебели, конструктор мебели онлайн, бесплатный конструктор мебели, онлайн конструктор мебели бесплатно, проектирование мебели онлайн, моделирование мебели онлайн, проектирование мебели на заказ, мебель на заказ">
164<link rel="icon" href="/favicon.ico" type="image/x-icon">
165<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
166<link rel="apple-touch-icon" sizes="180x180" href="/favicon-180x180.png">
167<link rel="icon" sizes="192x192" href="/favicon-192x192.png" type="image/png">
168<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
169<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
170<link rel="manifest" href="/manifest.json">
171<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><link rel="canonical" href="https://komodmsk.ru/constructor"/><meta property="og:locale" content="ru_RU">
172<meta property="og:site_name" content="КомодМск — производство и продажа мебели">
173<meta property="og:type" content="website">
174<meta property="og:title" content="Конструктор мебели — онлайн, бесплатно и в 3D">
175<meta property="og:description" content="Бесплатный онлайн-конструктор мебели. Спроектируйте мебель, которая идеально подойдёт к интерьеру именно вашей кухни, гостиной, спальни, детской или кабинета. Быстро и удобно. Ваш проект — наше воплощение!">
176<meta property="og:image" content="https://komodmsk.ru/pages/about/img/hight-quality.jpg">
177<meta property="og:image:alt" content="Бесплатный онлайн-конструктор мебели. Спроектируйте мебель, которая идеально подойдёт к интерьеру именно вашей кухни, гостиной, спальни, детской или кабинета. Быстро и удобно. Ваш проект — наше воплощение!">
178<style>
179 .slider-top { min-height: 290px; background: #fff; }
180 @media(max-width:600px){ .slider-top { min-height: 180px; } }
181
182 /* Ссылки в тексте - синие и подчеркнутые */
183 .main-article a, .main-intro a { text-decoration: underline !important; color: #0056b3; }
184 .main-article a:hover, .main-intro a:hover { text-decoration: none !important; }
185
186 /* Стрелки навигации - черные */
187 #btn-nav-previous svg, #btn-nav-next svg { fill: #000; }
188
189 /* === ПРАВКИ ДЛЯ ПРОХОЖДЕНИЯ ТЕСТА (Accessibility) === */
190
191 /* 1. Боковое меню: больше отступы */
192 .cat-menu li a {
193 padding-top: 12px !important;
194 padding-bottom: 12px !important;
195 display: block;
196 }
197
198 /* 2. ТЕЛЕФОНЫ: Делаем абсолютно черными и жирными */
199 .navbar-default .navbar-nav > li > a {
200 color: #000000 !important;
201 font-weight: 600 !important;
202 }
203
204 /* 3. ЗАКАЗАТЬ ЗВОНОК: Темно-бордовый цвет (проходит все тесты) */
205 .navbar-nav > li > a.feedback-link {
206 color: #b30000 !important;
207 text-decoration: underline;
208 font-weight: 600 !important;
209 }
210</style>
211<link rel="stylesheet" href="/assets/libs/bootstrap-3.3.7.min.css">
212<link rel="stylesheet" href="/assets/build/build.css?v24442">
213<link rel="stylesheet" href="/assets/css/styles2.css?v422">
214<link rel="stylesheet" href="/assets/libs/fontawesome-4.7.0.min.css" media="print" onload="this.media='all'">
215<noscript><link rel="stylesheet" href="/assets/libs/fontawesome-4.7.0.min.css"></noscript>
216<link rel="stylesheet" href="/assets/libs/select2.min.css" media="print" onload="this.media='all'">
217<noscript><link rel="stylesheet" href="/assets/libs/select2.min.css"></noscript>
218<link rel="stylesheet" href="/assets/libs/owl.carousel.min.css" media="print" onload="this.media='all'">
219<noscript><link rel="stylesheet" href="/assets/libs/owl.carousel.min.css"></noscript>
220<script>
221setTimeout(function() {
222 (function(m,e,t,r,i,k,a){
223 m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
224 m[i].l=1*new Date();
225 k=e.createElement(t),a=e.getElementsByTagName(t)[0];
226 k.async=1;
227 k.src=r;
228 a.parentNode.insertBefore(k,a)
229 })(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
230
231 ym(31590058, "init", {
232 clickmap:false,
233 trackLinks:false,
234 accurateTrackBounce:false,
235 webvisor:false,
236 ecommerce:"dataLayer"
237 });
238}, 1500);
239</script><link rel="preload" href="/assets/libs/jquery-2.2.4.min.js" as="script">
240<script src="/assets/libs/jquery-2.2.4.min.js" fetchpriority="high"></script><script>
241 $(function() {
242 $('#btn-nav-previous').click(function(){
243 $(".menu-inner-box").animate({scrollLeft: "-=100px"});
244 });
245 $('#btn-nav-next').click(function(){
246 $(".menu-inner-box").animate({scrollLeft: "+=100px"});
247 });
248 });
249 </script><script>
250 // Ждем полной загрузки страницы (картинки, стили)
251 window.addEventListener("load", function(){
252 // Ждем еще 2.5 секунды, чтобы браузер "отдохнул"
253 setTimeout(function() {
254 var t=document.createElement("script");
255 t.type="text/javascript";
256 t.async=true;
257 t.src="https://vk.com/js/api/openapi.js?169";
258 t.onload=function(){
259 // Проверка на существование VK, чтобы избежать ошибок
260 if (typeof VK !== 'undefined' && VK.Retargeting) {
261 VK.Retargeting.Init("VK-RTRG-1753336-4SKta");
262 VK.Retargeting.Hit();
263 }
264 };
265 document.head.appendChild(t);
266 }, 2500);
267 });
268 </script>
269</head>
270<body id="body">
271<noscript><img src="https://vk.com/rtrg?p=VK-RTRG-1753336-4SKta" style="position:fixed; left:-999px;" alt="vk"></noscript>
<noindex></noindex><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid">
272<div class="navbar-header">
273<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-main-navbar-collapse" aria-expanded="false"><span class="sr-only">Toggle</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="https://komodmsk.ru"><img src="/img/logo-n.png" class="no-lazy" loading="eager" width="160" height="23" decoding="async" alt="KomodMsk.ru — мебельная фабрика и интернет-магазин с доставкой по всей России"></a>
274</div>
275<div class="collapse navbar-collapse" id="bs-main-navbar-collapse">
276<ul class="nav navbar-nav" style="vertical-align:middle;">
277<li><a href="#" class="city-chooser" rel="nofollow"><i class="fas fa-map-marker-alt"></i>
<span class="city-chooser__city js-link">Москва</span></a></li>
278<li class="dropdown">
279<a href="#" class="dropdown-toggle nav-catalog" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Каталог мебели<span class="caret"></span></a><ul class="dropdown-menu">
280<li itemprop="name">
<a href="/cat/sale" itemprop="url" style="color:#cc0000"><img src="/images/cat/1799.svg" width="24" height="24" alt="Распродажа" class="menu-icon">Распродажа</a></li>
281<li itemprop="name"><a href="/cat/../constructor" itemprop="url"><img src="/images/cat/2051.jpg" width="24" height="24" alt="Конструктор" class="menu-icon">Конструктор</a></li>
282<li itemprop="name"><a href="/cat/komody" itemprop="url"><img src="/images/cat/1680.svg" width="24" height="24" alt="Комоды" class="menu-icon">Комоды</a></li>
283<li itemprop="name"><a href="/cat/kuhny" itemprop="url"><img src="/images/cat/2012.svg" width="24" height="24" alt="Кухни" class="menu-icon">Кухни</a></li>
284<li itemprop="name"><a href="/cat/tumby" itemprop="url"><img src="/images/cat/1725.svg" width="24" height="24" alt="Тумбы" class="menu-icon">Тумбы</a></li>
285<li itemprop="name"><a href="/cat/obuvnicy" itemprop="url"><img src="/images/cat/1700.svg" width="24" height="24" alt="Обувницы" class="menu-icon">Обувницы</a></li>
286<li itemprop="name"><a href="/cat/prihozhie" itemprop="url"><img src="/images/cat/1731.svg" width="24" height="24" alt="Прихожие" class="menu-icon">Прихожие</a></li>
287<li itemprop="name"><a href="/cat/stoly" itemprop="url"><img src="/images/cat/1701.svg" width="24" height="24" alt="Столы" class="menu-icon">Столы</a></li>
288<li itemprop="name"><a href="/cat/chairs" itemprop="url"><img src="/images/cat/2042.svg" width="24" height="24" alt="Стулья" class="menu-icon">Стулья</a></li>
289<li itemprop="name"><a href="/cat/shkafy" itemprop="url"><img src="/images/cat/1722.svg" width="24" height="24" alt="Шкафы" class="menu-icon">Шкафы</a></li>
290<li itemprop="name"><a href="/cat/stellazhi" itemprop="url"><img src="/images/cat/1703.svg" width="24" height="24" alt="Стеллажи" class="menu-icon">Стеллажи</a></li>
291<li itemprop="name"><a href="/cat/stenki" itemprop="url"><img src="/images/cat/1743.svg" width="24" height="24" alt="Стенки" class="menu-icon">Стенки</a></li>
292<li itemprop="name"><a href="/cat/mebel-dlya-spalni" itemprop="url"><img src="/images/cat/1749.svg" width="24" height="24" alt="Спальни" class="menu-icon">Спальни</a></li>
293</ul>
294</li>
295</ul>
296<form class="navbar-form navbar-left" name="form1" action="/search.php">
297<div class="form-group"><input type="text" name="q" class="form-control input-sm" placeholder="Поиск по названию или артикулу"></div>
298<button class="btn btn-default btn-sm">Найти</button>
299</form>
300<ul class="topm">
301<li itemprop="name"><a href="/cat/../constructor" itemprop="url"><img src="/images/cat/const.png" width="24" height="24" alt="Конструктор" class="menu-icon">Конструктор</a></li>
302<li itemprop="name"><a href="/cat/komody" itemprop="url"><img src="/images/cat/1680.svg" width="24" height="24" alt="Комоды" class="menu-icon">Комоды</a></li>
303<li itemprop="name"><a href="/cat/tumby" itemprop="url"><img src="/images/cat/1725.svg" width="24" height="24" alt="Тумбы" class="menu-icon">Тумбы</a></li>
304<li itemprop="name"><a href="/cat/stellazhi" itemprop="url"><img src="/images/cat/1703.svg" width="24" height="24" alt="Стеллажи" class="menu-icon">Стеллажи</a></li>
305<li itemprop="name"><a href="/cat/shkafy" itemprop="url"><img src="/images/cat/1722.svg" width="24" height="24" alt="Шкафы" class="menu-icon">Шкафы</a></li>
306<li itemprop="name"><a href="/cat/stenki" itemprop="url"><img src="/images/cat/1743.svg" width="24" height="24" alt="Стенки" class="menu-icon">Стенки</a></li>
307<li itemprop="name"><a href="/cat/prihozhie" itemprop="url"><img src="/images/cat/1731.svg" width="24" height="24" alt="Прихожие" class="menu-icon">Прихожие</a></li>
308<li itemprop="name"><a href="/cat/obuvnicy" itemprop="url"><img src="/images/cat/1700.svg" width="24" height="24" alt="Обувницы" class="menu-icon">Обувницы</a></li>
309<li itemprop="name"><a href="/cat/stoly" itemprop="url"><img src="/images/cat/1701.svg" width="24" height="24" alt="Столы" class="menu-icon">Столы</a></li>
310<li itemprop="name"><a href="/cat/chairs" itemprop="url"><img src="/images/cat/2042.svg" width="24" height="24" alt="Стулья" class="menu-icon">Стулья</a></li>
311<li itemprop="name"><a href="/cat/kuhny" itemprop="url"><img src="/images/cat/2012.svg" width="24" height="24" alt="Кухни" class="menu-icon">Кухни</a></li>
312<li itemprop="name"><a href="/cat/mebel-dlya-spalni" itemprop="url"><img src="/images/cat/1749.svg" width="24" height="24" alt="Спальни" class="menu-icon">Спальни</a></li>
313<li itemprop="name"><a href="/cat/sale" itemprop="url" style="color:#cc0000"><img src="/images/cat/1799.svg" width="24" height="24" alt="Распродажа" class="menu-icon">Распродажа</a></li>
314</ul>
315<ul class="nav navbar-nav navbar-right">
316<li>
<a rel="nofollow" class="feedback-link" href="/feedback/form" target="_blank">Заказать<br> звонок</a></li>
317<li><a href="https://t.me/+79915674335" rel="nofollow" aria-label="Написать нам в Telegram">
<i class="fa fa-telegram nav-msg-img" target="_blank" aria-hidden="true"></i></a></li>
318<li>
<a href="tel:88002002327" class="" rel="nofollow" aria-label="Позвонить нам">
<i class="fa fa-phone nav-msg-img" target="_blank" aria-hidden="true"></i>8 800 200–23–27</a></li>
319<li>
<noindex><div class="main-basket">
320<div class="main-basket-row">
321<a href="/basket/list" rel="nofollow" aria-label="Перейти в корзину" style="display:block;width:100%;height:100%;cursor:pointer;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" class="svg-shop" viewBox="0 484 516 516" enable-background="new 0 484 516 516" xml:space="preserve">
322
323 <polyline fill="none" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 26.9,577.6 114,621.8 201.9,886.7 "></polyline>
324
325 <circle fill="none" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="218" cy="933.2" r="44.8"></circle>
326
327 <line fill="none" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="262.1" y1="918.1" x2="486.9" y2="844.2"></line>
328 <path fill="none" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M462.3,790.1l-206,67.2c-0.5,0.2-1-0.1-1.2-0.6l-67.2-206c-0.2-0.5,0.1-1,0.6-1.2l206-67.2c0.5-0.2,1,0.1,1.2,0.6l67.2,206 C463,789.4,462.8,789.9,462.3,790.1z"></path>
329
330 <line fill="none" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="312.3" y1="680.1" x2="291.8" y2="618.4"></line>
331 </svg></a><a id="basket_items_title"><span class="no-products-text"></span><span id="basket_items_txt" style="display:none;">товаров: 0</span></a>
332</div>
333<div class="main-basket-list">
334<div class="js-basket-list-container-top"></div>
335<center class="to-basket" style="display:none;"><a rel="/basket/list" href="/basket/list" class="btn btn-yellow-inline btn-lg" style="margin-right:0!important;">
336 Перейти в корзину
337 </a></center>
338</div>
339</div></noindex></li>
340</ul>
341</div>
342</div></nav><div class="main-block container-fluid"><div class="row" style="margin-right: unset;margin-left: unset;"><div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" style="padding-right:0px;padding-left:0px;background: white;box-shadow: 0 3px 1px rgba(0, 0, 0, .05), 0 2px 0 rgba(0, 0, 0, .05), 0 1px 0 rgba(0, 0, 0, .05);"><div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" style="padding-left: 0px;padding-right: 0px;"><div class="main-content">
343<nav id="menu-container" class="arrow"><div id="btn-nav-previous"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></div>
344<div id="btn-nav-next"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></div>
345<div class="menu-inner-box"><div class="menu">
346<a href="/cat/sale" class="menu-item" itemprop="url" style="color:#cc0000">Распродажа</a>
<a href="/cat/../constructor" class="menu-item" itemprop="url">Конструктор</a>
<a href="/cat/komody" class="menu-item" itemprop="url">Комоды</a>
<a href="/cat/kuhny" class="menu-item" itemprop="url">Кухни</a>
<a href="/cat/tumby" class="menu-item" itemprop="url">Тумбы</a>
<a href="/cat/obuvnicy" class="menu-item" itemprop="url">Обувницы</a>
<a href="/cat/prihozhie" class="menu-item" itemprop="url">Прихожие</a>
<a href="/cat/stoly" class="menu-item" itemprop="url">Столы</a>
<a href="/cat/chairs" class="menu-item" itemprop="url">Стулья</a>
<a href="/cat/shkafy" class="menu-item" itemprop="url">Шкафы</a>
<a href="/cat/stellazhi" class="menu-item" itemprop="url">Стеллажи</a>
<a href="/cat/stenki" class="menu-item" itemprop="url">Стенки</a>
<a href="/cat/mebel-dlya-spalni" class="menu-item last-item" itemprop="url">Спальни</a>
347</div></div></nav><link rel="stylesheet" href="/css/nouislider.min.css">
348<link rel="stylesheet" href="/css/style.min.css">
349<style>
350 /* === 1. ГЛОБАЛЬНЫЙ СБРОС === */
351 html, body, .main-block, .main-content, .row, .col-md-12, .container-fluid {
352 height: auto !important;
353 min-height: 0 !important;
354 }
355
356 /* === 2. КОНСТРУКТОР (Обертка) === */
357 .constructor-bx {
358 display: flex;
359 flex-wrap: nowrap;
360 align-items: flex-start;
361 justify-content: space-between;
362 width: 100%;
363 position: relative;
364 opacity: 1;
365 z-index: 5;
366 margin-bottom: 30px;
367 }
368
369 .constructor-bx.hidden-start {
370 display: none !important;
371 }
372
373 /* === 3. 3D СЦЕНА === */
374 .canvas-wrapper {
375 flex-grow: 1;
376 width: auto;
377 min-width: 50%;
378 height: 650px;
379 position: relative;
380 background: #f9f9f9;
381 border: 1px solid #eee;
382 z-index: 1;
383 touch-action: pan-y !important;
384 -webkit-tap-highlight-color: transparent;
385 cursor: pointer;
386 }
387
388 .canvas-wrapper canvas {
389 width: 100% !important;
390 height: 100% !important;
391 display: block;
392 outline: none;
393 }
394
395 /* === 4. ПАНЕЛЬ НАСТРОЕК === */
396 .panel {
397 width: 480px;
398 min-width: 450px;
399 flex-shrink: 0;
400 margin-left: 30px;
401 background: #fff;
402 padding-bottom: 20px;
403 position: relative;
404 z-index: 50 !important;
405 display: block !important;
406 height: auto !important;
407 }
408
409 .set-panel {
410 display: flex;
411 flex-direction: column;
412 position: relative;
413 overflow: visible !important;
414 }
415
416 /* === 5. ОКНО НАСТРОЕК (ОРИГИНАЛЬНЫЙ ДИЗАЙН) === */
417 .constructor-set-dialog {
418 width: 100%;
419 position: relative !important;
420 background: #fff;
421 border: 1px solid #eee;
422 box-shadow: 0 2px 10px rgba(0,0,0,0.05);
423 height: 0;
424 padding: 0;
425 overflow: hidden;
426 transition: all 0.3s ease-in;
427 margin-bottom: 20px;
428 display: block !important;
429 box-sizing: border-box;
430 }
431
432 .constructor-set-dialog.active,
433 .constructor-set-dialog[style*="display: block"] {
434 height: auto !important;
435 padding: 15px 15px 70px 15px !important; /* Место под кнопку */
436 overflow: visible !important;
437 border: 1px solid #ddd;
438 }
439
440 .constructor-set-dialog__container {
441 opacity: 0;
442 transition: opacity 0.5s ease;
443 }
444
445 .constructor-set-dialog.active .constructor-set-dialog__container {
446 opacity: 1;
447 }
448
449 .constructor-set-dialog__title {
450 font-size: 18px;
451 font-weight: 700;
452 margin-bottom: 15px;
453 color: #000;
454 border-bottom: 1px solid #eee;
455 padding-bottom: 10px;
456 }
457
458 .constructor-set-dialog__close-btn {
459 position: absolute;
460 top: 10px;
461 right: 10px;
462 background: none;
463 border: none;
464 font-size: 20px;
465 color: #999;
466 cursor: pointer;
467 padding: 5px;
468 line-height: 1;
469 z-index: 10;
470 }
471
472 /* Поля ввода */
473 .constructor-set-dialog__width,
474 .constructor-set-dialog__doors {
475 display: flex; /* Flex для выравнивания */
476 align-items: center;
477 justify-content: space-between;
478 margin-bottom: 15px;
479 width: 100%;
480 }
481
482 .constructor-set-dialog__width span,
483 .constructor-set-dialog__doors span {
484 font-size: 15px;
485 color: #333;
486 font-weight: 400;
487 }
488
489 .constructor-set-dialog__width-input {
490 width: 100px !important;
491 height: 34px;
492 padding: 6px 12px;
493 font-size: 14px;
494 border: 1px solid #ccc;
495 border-radius: 4px;
496 background-color: #fff;
497 }
498
499 /* === ЧЕКБОКСЫ === */
500 .constructor-set-dialog__overhead,
501 .constructor-set-dialog__overhead-all {
502 display: flex !important;
503 justify-content: flex-end !important; /* Справа */
504 align-items: center !important;
505 margin-top: 10px;
506 opacity: 1 !important;
507 visibility: visible !important;
508 }
509
510 /* Скрываем, если JS добавил класс hide (но не для overhead-all, там мы управляем сами) */
511 .constructor-set-dialog__overhead.hide {
512 display: none !important;
513 }
514
515 .constructor-set-dialog__overhead input,
516 .constructor-set-dialog__overhead-all input {
517 width: 18px !important;
518 height: 18px !important;
519 margin-left: 10px !important;
520 margin-right: 0 !important;
521 opacity: 1 !important;
522 appearance: checkbox !important;
523 -webkit-appearance: checkbox !important;
524 position: static !important;
525 cursor: pointer;
526 }
527
528 .constructor-set-dialog__overhead label,
529 .constructor-set-dialog__overhead-all label {
530 font-size: 14px;
531 font-weight: 400;
532 margin: 0;
533 color: #000;
534 opacity: 1 !important;
535 cursor: pointer;
536 }
537
538 /* === КНОПКА СОХРАНИТЬ (СЛЕВА ВНИЗУ) === */
539 .constructor-set-dialog__save-btn {
540 position: absolute !important;
541 bottom: 15px !important;
542 left: 20px !important;
543 background: #ffdb4d !important;
544 border: none !important;
545 padding: 10px 25px !important;
546 font-size: 14px;
547 font-weight: 600;
548 text-align: center;
549 cursor: pointer;
550 border-radius: 4px;
551 color: #000 !important;
552 text-transform: uppercase;
553 width: auto !important;
554 }
555
556 .constructor-set-dialog__save-btn:hover {
557 background-color: #ffe019 !important;
558 }
559
560 /* === ВЫПАДАЮЩИЕ СПИСКИ === */
561 .itc-select__dropdown,
562 .select__dropdown,
563 .constructor-set-dialog__select .itc-select__dropdown {
564 z-index: 9999999 !important;
565 position: absolute !important;
566 background: #fff;
567 border: 1px solid #ccc;
568 box-shadow: 0 5px 15px rgba(0,0,0,0.15);
569 max-height: 200px;
570 overflow-y: auto;
571 margin-top: 2px;
572 }
573
574 /* === АДАПТИВ === */
575 @media (max-width: 1200px) {
576 .panel { width: 380px !important; min-width: 380px; margin-left: 15px; }
577 }
578
579 @media (max-width: 991px) {
580 .constructor-bx { flex-wrap: wrap !important; display: block; }
581 .canvas-wrapper { width: 100% !important; height: 450px !important; }
582
583 .panel {
584 width: 100% !important;
585 margin-left: 0;
586 margin-top: 15px;
587 min-width: 0;
588 padding-bottom: 40px;
589 }
590
591 .constructor { padding-bottom: 40px !important; }
592
593 .constructor-set-dialog__save-btn {
594 left: 15px !important;
595 bottom: 15px !important;
596 }
597 }
598
599 .construct-link-wrapper {
600 position: absolute;
601 top: 0; left: 0; width: 100%; height: 100%; z-index: 10;
602 cursor: pointer;
603 }
604
605 .visually-hidden-start {
606 display: none !important;
607 }
608
609 .field-fill__item.active {
610 outline: 3px solid #ffda44;
611 z-index: 2;
612 position: relative;
613 }
614
615</style>
616<div class="breadcrumbs">
<span itemscope="itemscope" itemtype="//schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem"><meta itemprop="position" content="1">
617<a href="/" itemprop="item">
<span itemprop="name" class="breadcrumb-item">Главная</span></a></span>
618 >
619 <span itemprop="itemListElement" itemscope="itemscope" itemtype="http://schema.org/ListItem"><meta itemprop="position" content="2">
620<a class="breadcrumb-item" itemprop="item" href="/constructor">
<span itemprop="name">Конструктор мебели</span></a></span></span></div>
621<div class="constructor">
622<h1 class="constructor-title">Конструктор мебели онлайн, бесплатно и в 3D</h1>
623<div class="constructor-selection">
624<div class="constructor-selection__item">
625<div class="constructor-selection__img-bx" data-selection="wardrobe" style="position:relative;">
626<a href="/constructor/wardrobe" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_1.jpg" alt="Шкафы для одежды" class="constructor-selection__img" loading="lazy">
627</div>
628<div class="constructor-selection__title">Конструктор гардеробных шкафов</div>
629</div>
630<div class="constructor-selection__item">
631<div class="constructor-selection__img-bx" data-selection="square_shelves" style="position:relative;">
632<a href="/constructor/square_shelves" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_2.jpg" alt="Стеллажи квадратные" class="constructor-selection__img" loading="lazy">
633</div>
634<div class="constructor-selection__title">Конструктор стеллажей с квадратными полками</div>
635</div>
636<div class="constructor-selection__item">
637<div class="constructor-selection__img-bx" data-selection="closet" style="position:relative;">
638<a href="/constructor/closet" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_3.jpg" alt="Шкафы-купе" class="constructor-selection__img" loading="lazy">
639</div>
640<div class="constructor-selection__title">Конструктор шкафов-купе</div>
641</div>
642<div class="constructor-selection__item">
643<div class="constructor-selection__img-bx" data-selection="rectangular_shelves" style="position:relative;">
644<a href="/constructor/rectangular_shelves" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_4.jpg" alt="Стеллажи прямоугольные" class="constructor-selection__img" loading="lazy">
645</div>
646<div class="constructor-selection__title">Конструктор стеллажей с прямоугольными полками</div>
647</div>
648<div class="constructor-selection__item">
649<div class="constructor-selection__img-bx" data-selection="dressers" style="position:relative;">
650<a href="/constructor/dressers" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_5.jpg" alt="Комоды" class="constructor-selection__img" loading="lazy">
651</div>
652<div class="constructor-selection__title">Конструктор комодов</div>
653</div>
654<div class="constructor-selection__item">
655<div class="constructor-selection__img-bx" data-selection="tv_tumbs" style="position:relative;">
656<a href="/constructor/tv_tumbs" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_6.jpg" alt="Тумбы ТВ" class="constructor-selection__img" loading="lazy">
657</div>
658<div class="constructor-selection__title">Конструктор тумб под телевизор</div>
659</div>
660<div class="constructor-selection__item">
661<div class="constructor-selection__img-bx" data-selection="tumbs" style="position:relative;">
662<a href="/constructor/tumbs" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_7.jpg" alt="Тумбочки" class="constructor-selection__img" loading="lazy">
663</div>
664<div class="constructor-selection__title">Конструктор тумбочек</div>
665</div>
666<div class="constructor-selection__item">
667<div class="constructor-selection__img-bx" data-selection="long_bookshelves" style="position:relative;">
668<a href="/constructor/long_bookshelves" class="construct-link-wrapper"></a>
<img src="assets/images/selections/constructor_8.jpg" alt="Полки" class="constructor-selection__img" loading="lazy">
669</div>
670<div class="constructor-selection__title">Конструктор длинных книжных полок</div>
671</div>
672</div>
673<div class="container constructor-steps"><div class="row">
674<div class="col-md-1"></div>
675<div class="col-md-2 constructor-steps-frame">
676<span class="constructor-steps-helper"></span>
<img src="assets/images/selections/step_1.jpg" alt="Сделайте замеры" class="constructor-steps-img" loading="lazy">
<div class="constructor-steps-text">Сделайте необходимые замеры</div>
677</div>
678<div class="col-md-2 constructor-steps-frame">
679<span class="constructor-steps-helper"></span>
<img src="assets/images/selections/step_2.jpg" alt="Укажите размеры" class="constructor-steps-img" loading="lazy">
<div class="constructor-steps-text">Укажите ваши размеры в конструкторе на сайте</div>
680</div>
681<div class="col-md-2 constructor-steps-frame">
682<span class="constructor-steps-helper"></span>
<img src="assets/images/selections/step_3.jpg" alt="Заказ" class="constructor-steps-img" loading="lazy">
<div class="constructor-steps-text">Оформите заказ мебели онлайн</div>
683</div>
684<div class="col-md-2 constructor-steps-frame">
685<span class="constructor-steps-helper"></span>
<img src="assets/images/selections/step_4.jpg" alt="Получение" class="constructor-steps-img" loading="lazy">
<div class="constructor-steps-text">Ожидайте получения заказа</div>
686</div>
687<div class="col-md-2 constructor-steps-frame">
688<span class="constructor-steps-helper"></span>
<img src="assets/images/selections/step_5.jpg" alt="Сборка" class="constructor-steps-img" loading="lazy">
<div class="constructor-steps-text">Соберите мебель по инструкции</div>
689</div>
690<div class="col-md-1"></div>
691</div></div>
692<div class="container constructor-text-container"><div class="row"><div class="col-md-12"><div class="constructor-steps-memo">
693<h2 class="constructor-steps-h">Что делать, если вам не подходит типовая мебель?</h2>
694<p>
695 Не вписывается в ваш интерьер, не имеет нужной полки или дверцы, не подходит по размерам?</p>
696<p>На нашем сайте вы можете спроектировать свою мебель сами — бесплатно и быстро!</p>
697<p>Мы создали очень удобный онлайн-инструмент, который поможет вам не только сконструировать уникальный предмет мебели под ваши требования и предпочтения, не только покажет вам в 3D, как будет выглядеть эта мебель, но и сформирует автоматически ваш заказ для нас. Сразу со всеми габаритами, деталями и цветами, так что вам не придётся бесконечно уточнять по телефону или электронной почте, чего вы, собственно, хотите, — мы увидим ваш проект так же, как и вы, в 3D, со всеми вашими пожеланиями.</p>
698<p>Шкаф для одежды или шкаф-купе, стеллажи с квадратными или с прямоугольными полками, тумбочки или тумбы для телевизора, комоды, книжные полки — всё это доступно онлайн.</p>
699<p>Создайте свой уникальный вариант, который идеально подойдёт к интерьеру именно вашей кухни, гостиной, спальни, детской, кабинета и любых других помещений.</p>
700<p>Свободно меняйте размер, форму и цвет, как вам захочется в нашем 3D-конструкторе. Воплощайте с нами самые смелые дизайнерские решения, а мы позаботимся о качестве. Что может быть лучше оригинальной мебели из выбранных вами высококачественных материалов, которая прослужит вам многие годы?</p>
701<p>Итак: ваш проект — наше воплощение!</p>
702<p>Есть вопросы по работе конструтора или по оформлению заявки?
<a href="tel:+74994033617">Звоните</a>,
<a href="mailto:zakaz@komodmsk.ru" title="zakaz@komodmsk.ru">пишите</a> нам! Наши сотрудники помогут!</p>
703</div></div></div></div>
704<div class="constructor-bx hidden-start">
705<button class="constructor-checkout-btn">
706 Оформить заказ
707 <svg xmlns="http://www.w3.org/2000/svg" width="15.593" height="11.977" viewBox="0 0 15.593 11.977"><g id="Group_373" data-name="Group 373" transform="translate(1)"><g id="Ellipse_43" data-name="Ellipse 43" transform="translate(2.851)" fill="#ed7a65" stroke="#fff" stroke-width="2"><circle cx="4.116" cy="4.116" r="4.116" stroke="none"></circle><circle cx="4.116" cy="4.116" r="3.116" fill="none"></circle></g><path id="Path_917" data-name="Path 917" d="M537.585,40.5l2.712,6.8h8.371l2.51-6.8Z" transform="translate(-537.585 -36.319)" fill="#ed7a65" stroke="#fff" stroke-linejoin="round" stroke-width="2"></path></g></svg></button><div class="canvas-wrapper"></div>
708<div class="panel">
709<div class="set-panel">
710<div class="constructor-set-dialog"><div class="constructor-set-dialog__container">
711<button class="constructor-set-dialog__close-btn">✕</button><div class="constructor-set-dialog__title">Настройки ячейки</div>
712<div class="constructor-set-dialog__width">
713<span>Ширина ячейки</span><input type="text" class="constructor-set-dialog__width-input">
714</div>
715<div class="constructor-set-dialog__doors">
716<span>Выбор дверей</span><div class="constructor-set-dialog__select itc-select" id="selectDoors">
717<button type="button" class="itc-select__toggle" name="doors" value="Выбрать двери" data-select="toggle" data-index="-1">Выберите из списка</button><div class="itc-select__dropdown"><ul class="itc-select__options">
718<li class="itc-select__option" data-select="option" data-value="single-left" data-index="0">Одинарная справа</li>
719<li class="itc-select__option" data-select="option" data-value="single-right" data-index="1">Одинарная слева</li>
720<li class="itc-select__option select__option_selected" data-select="option" data-value="double" data-index="2">Двойные</li>
721<li class="itc-select__option select__option_selected" data-select="option" data-value="drawer" data-index="3">Выдвижной ящик</li>
722<li class="itc-select__option select__option_selected" data-select="option" data-value="drawers" data-index="3">Выдвижные ящики</li>
723<li class="itc-select__option" data-select="option" data-value="seporator-1" data-index="4">Разделитель вертикальный</li>
724<li class="itc-select__option" data-select="option" data-value="seporator-2" data-index="5">Разделитель горизонтальный</li>
725<li class="itc-select__option" data-select="option" data-value="seporator-none" data-index="6">Без разделителя</li>
726<li class="itc-select__option" data-select="option" data-value="none" data-index="7">Нет</li>
727</ul></div>
728</div>
729</div>
730<div class="constructor-set-dialog__overhead hide">
731<label for="overheadCheckBox">Накладная</label><input id="overheadCheckBox" type="checkbox" class="constructor-set-dialog__overhead-checkbox">
732</div>
733<div class="constructor-set-dialog__overhead-all">
734<label for="overheadAllCheckBox">Все накладные</label><input id="overheadAllCheckBox" type="checkbox" class="constructor-set-dialog__overhead-checkbox">
735</div>
736<button class="constructor-set-dialog__save-btn">Сохранить</button>
737</div></div>
738<div class="field">
739<div class="field__title">Ширина<span class="unit">, мм</span>
740</div>
741<div class="field__rSlider" id="w-rSlider"></div>
742</div>
743<div class="field">
744<div class="field__title">Высота<span class="unit">, мм</span>
745</div>
746<div class="field__rSlider" id="h-rSlider"></div>
747</div>
748<div class="field">
749<div class="field__title">Глубина<span class="unit">, мм</span>
750</div>
751<div class="field__rSlider" id="d-rSlider"></div>
752</div>
753<div class="field">
754<div class="field__title">Ячейки</div>
755<div class="field__rSlider" id="cols-rSlider"></div>
756<span class="by">X</span><div class="field__rSlider no-margin" id="rows-rSlider"></div>
757</div>
758<div class="field-style">
759<div class="field-style__title">Стиль</div>
760<div class="field-style__items" data-material-type="general">
761<div class="field-style__item" title="Просто белый, ЛДСП"><a href="#" class="field-style__item-link cnst-texture-link active" data-depth="16"><img src="assets/textures/white-sleek.jpg" alt="image" class="field-style__item-img" loading="lazy"></a></div>
762<div class="field-style__item" title="Просто серый, ЛДСП"><a href="#" class="field-style__item-link cnst-texture-link" data-depth="16"><img src="assets/textures/grey.jpg" alt="image" class="field-style__item-img" loading="lazy"></a></div>
763<div class="field-style__item" title="Просто бежевый, ЛДСП"><a href="#" class="field-style__item-link cnst-texture-link" data-depth="16"><img src="assets/textures/beige.jpg" alt="image" class="field-style__item-img" loading="lazy"></a></div>
764<div class="field-style__item" title="Просто чёрный, ЛДСП"><a href="#" class="field-style__item-link cnst-texture-link" data-depth="16"><img src="assets/textures/black.jpg" alt="image" class="field-style__item-img" loading="lazy"></a></div>
765</div>
766</div>
767<div class="field-fill">
768<div class="field-fill__title">Варианты наполнения</div>
769<div class="field-fill__items">
770<div class="field-fill__item active" data-fill-type="1"><img src="assets/images/fill-options/1.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
771<div class="field-fill__item" data-fill-type="2"><img src="assets/images/fill-options/2.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
772<div class="field-fill__item" data-fill-type="3"><img src="assets/images/fill-options/3.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
773<div class="field-fill__item" data-fill-type="4"><img src="assets/images/fill-options/4.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
774<div class="field-fill__item" data-fill-type="5"><img src="assets/images/fill-options/5.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
775<div class="field-fill__item" data-fill-type="6"><img src="assets/images/fill-options/6.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
776<div class="field-fill__item" data-fill-type="7"><img src="assets/images/fill-options/7.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
777<div class="field-fill__item" data-fill-type="8"><img src="assets/images/fill-options/8.png" alt="image" class="field-fill__item-img" title="Полки с одинаковыми нишами" loading="lazy"></div>
778<div class="field-fill__item" data-fill-type="9"><img src="assets/images/fill-options/9.png" alt="image" class="field-fill__item-img" title="Полки с разными нишами" loading="lazy"></div>
779<div class="field-fill__item" data-fill-type="10"><img src="assets/images/fill-options/10.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
780<div class="field-fill__item" data-fill-type="11"><img src="assets/images/fill-options/11.png" alt="image" class="field-fill__item-img" loading="lazy"></div>
781</div>
782</div>
783<button class="extra-settings-btn"><svg viewBox="0 0 24 24"><g><path d="M18,9l-6,6L6,9H18z"></path></g></svg>
784 Расширенные настройки
785 </button>
786</div>
787<div class="extra-set-panel"><div class="extra-set-panel__inner">
788<div class="field-material">
789<div class="field-material__title">Материал корпуса</div>
790<div class="field-material__items" data-material-type="skeleton">
791<div class="field-material__item"><a href="#" class="field-material__item-link cnst-texture-link active" title="Белый гладкий, ЛДСП 16мм" data-depth="16"><img src="assets/textures/white-sleek.jpg" alt="image" loading="lazy"></a></div>
792<div class="field-material__item"><a href="#" class="field-material__item-link cnst-texture-link" title="Серый, ЛДСП 16мм" data-depth="16"><img src="assets/textures/grey.jpg" alt="image" loading="lazy"></a></div>
793<div class="field-material__item"><a href="#" class="field-material__item-link cnst-texture-link" title="Чёрный, ЛДСП 16мм" data-depth="16"><img src="assets/textures/black.jpg" alt="image" loading="lazy"></a></div>
794<div class="field-material__item"><a href="#" class="field-material__item-link cnst-texture-link" title="Бежевый, ЛДСП 16мм" data-depth="16"><img src="assets/textures/beige.jpg" alt="image" loading="lazy"></a></div>
795<div class="field-material__item"><a href="#" class="field-material__item-link cnst-texture-link" title="Дуб Сонома светлый, ЛДСП 16мм" data-depth="16"><img src="assets/textures/sonoma-oak-light.jpg" alt="image" loading="lazy"></a></div>
796<button class="field-material__btn show-materials">Ещё</button>
797</div>
798<p class="field-material__selected-name">Белый гладкий. ЛДСП 16мм</p>
799</div>
800<div class="field-backwall">
801<div class="field-backwall__title">Задняя стенка</div>
802<button class="field-backwall__link cnst-help-link" data-help-link-id="0">Нужна ли задняя стенка и зачем?</button><div class="field-backwall__items" data-material-type="backwall">
803<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link active" title="Белый, ХДФ 3мм" data-depth="3"><img src="assets/textures/white-sleek.jpg" alt="image" loading="lazy"></a></div>
804<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link" title="не выбрано" data-depth="0"><img src="assets/textures/material-no-icon.png" alt="image" loading="lazy"></a></div>
805<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link" title="Серый, ХДФ 3мм" data-depth="3"><img src="assets/textures/grey.jpg" alt="image" loading="lazy"></a></div>
806<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link" title="Бежевый, ХДФ 3мм" data-depth="3"><img src="assets/textures/beige.jpg" alt="image" loading="lazy"></a></div>
807<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link" title="Клен, ХДФ 3мм" data-depth="3"><img src="assets/textures/maple.jpg" alt="image" loading="lazy"></a></div>
808<div class="field-backwall__item"><a href="#" class="field-backwall__item-link cnst-texture-link" title="Венге, ХДФ 3мм" data-depth="3"><img src="assets/textures/wenge.jpg" alt="image" loading="lazy"></a></div>
809</div>
810<p class="field-backwall__selected-name">Белый, ХДФ 3мм</p>
811</div>
812<div class="field-base">
813<div class="field-base__title">Основание</div>
814<button class="field-base__link cnst-help-link" data-help-link-id="1">Как выбрать цоколь?</button><div class="field">
815<div class="field__title">Высота, <span>мм</span>
816</div>
817<div class="field__rSlider" id="baseH-rSlider"></div>
818</div>
819<div class="field-base__items">
820<div class="field-base__item active cnst-base-link" data-type="none"><img src="assets/images/base/1.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
821<div class="field-base__item cnst-base-link" data-type="type1"><img src="assets/images/base/2.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
822<div class="field-base__item cnst-base-link" data-type="type2"><img src="assets/images/base/3.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
823<div class="field-base__item cnst-base-link" data-type="type3"><img src="assets/images/base/4.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
824<div class="field-base__item cnst-base-link" data-type="type4"><img src="assets/images/base/5.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
825<div class="field-base__item cnst-base-link" data-type="type5"><img src="assets/images/base/6.jpg" alt="image" class="field-base__item-img" loading="lazy"></div>
826</div>
827</div>
828<div class="field-edge">
829<div class="field-edge__title">Кромка для защиты торцов</div>
830<div class="field-edge__items">
831<div class="field-edge__item">
832<div class="field-edge__item-label">Тонкая кромка (дешевле)</div>
833<div class="field-edge__item-link"><img src="assets/images/edge-tiny.jpg" alt="edge" loading="lazy"></div>
834</div>
835<div class="field-edge__item">
836<div class="field-edge__item-label">Толстая кромка (лучше)</div>
837<div class="field-edge__item-link"><img src="assets/images/edge-fat.jpg" alt="edge" loading="lazy"></div>
838</div>
839</div>
840<div class="field-edge__descr">
841<div class="field-edge__select itc-select" id="select-1">
842<button type="button" class="itc-select__toggle" name="edge" value="Тонкая 0,4 мм, в цвет" data-select="toggle" data-index="1">Тонкая 0,4 мм, в цвет</button><div class="itc-select__dropdown"><ul class="itc-select__options">
843<li class="itc-select__option" data-select="option" data-value="Тонкая 0,4 мм, в цвет" data-index="0" data-color="">Тонкая 0,4 мм, в цвет</li>
844<li class="itc-select__option select__option_selected" data-select="option" data-value="Толстая 2мм, в цвет" data-index="1" data-color="">Толстая 2мм, в цвет</li>
845<li class="itc-select__option" data-select="option" data-value="Толстая 2мм, кромка серая для ДСП" data-index="2" data-color="gray">Толстая 2мм, кромка серая для ДСП</li>
846<li class="itc-select__option" data-select="option" data-value="Толстая 2мм, кромка черная для ДСП" data-index="3" data-color="black">Толстая 2мм, кромка черная для ДСП</li>
847<li class="itc-select__option" data-select="option" data-value="Толстая 2мм, кромка белая для ДСП" data-index="4" data-color="white">Толстая 2мм, кромка белая для ДСП</li>
848</ul></div>
849</div>
850<div class="field-edge__label">Если в качестве каркаса шкафа выбрана не ДСП, то пропустите этот пункт</div>
851</div>
852<button class="field-edge__link cnst-help-link" data-help-link-id="2">Как выбрать кромку и зачем она нужна?</button>
853</div>
854<div class="field-feedback">
855<div class="field-feedback__title">Особые пожелания</div>
856<div class="field-feedback__subtitle">Мы можем внести любые изменения в ваш заказ. Если вы хотите добавить какой-то комментарий к схеме или задать вопрос, то можете заполнить это поле в свободной форме.</div>
857<div class="field-feedback__list-title">Если одна из этих ситуаций относится к вашему заказу, то желательно указать об этом. Так мы сможем дать вам свои рекомендации по выбору материалов или учесть особенности при проектировании.</div>
858<ul class="field-feedback__list">
859<li class="field-feedback__list-item">1. Будет использоваться на улице.</li>
860<li class="field-feedback__list-item">2. Шкаф без зазора под потолком.</li>
861<li class="field-feedback__list-item">3. Будет использоваться на балконе.</li>
862<li class="field-feedback__list-item">4. Шкаф впритык к стене слева и справа.</li>
863<li class="field-feedback__list-item">5. Будет использоваться в ванной комнате или влажном помещении.</li>
864<li class="field-feedback__list-item">6. Будет подвешен, а не стоять на полу.</li>
865</ul>
866<textarea name="constructor-feedback" id="constructorFeedback" rows="6" class="field-feedback__textarea" placeholder="Ваш комментарий"></textarea>
867</div>
868</div></div>
869</div>
870</div>
871</div>
872<div class="popup-materials"><div class="popup-materials__content">
873<div class="popup-materials__title">
874 Материалы <button class="popup-materials__btn cnst-help-link">(подробнее)</button>
875</div>
876<button class="popup-materials__close hide-materials"></button><div class="popup-materials__box">
877<div class="popup-materials__box-title">
878 ЛДСП. Основные цвета
879 </div>
880<div class="popup-materials__items" data-material-type="skeleton">
881<div class="popup-materials__item">
882<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый гладкий, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/white-sleek.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый гладкий, ЛДСП 16мм" data-depth="16">
<span>
883 Белый гладкий, ЛДСП 16мм
884 </span></a>
885</div>
886<div class="popup-materials__item">
887<a href="#" class="popup-materials__item-link cnst-texture-link" title="Серый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/grey.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Серый, ЛДСП 16мм" data-depth="16">
<span>
888 Серый, ЛДСП 16мм
889 </span></a>
890</div>
891<div class="popup-materials__item">
892<a href="#" class="popup-materials__item-link cnst-texture-link" title="Черный, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/black.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Черный, ЛДСП 16мм" data-depth="16">
<span>
893 Черный, ЛДСП 16мм
894 </span></a>
895</div>
896<div class="popup-materials__item">
897<a href="#" class="popup-materials__item-link cnst-texture-link" title="Бежевый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/beige.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Бежевый, ЛДСП 16мм" data-depth="16">
<span>
898 Бежевый, ЛДСП 16мм
899 </span></a>
900</div>
901<div class="popup-materials__item">
902<a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб Сонома светлый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/sonoma-oak-light.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб Сонома светлый, ЛДСП 16мм" data-depth="16">
<span>
903 Дуб Сонома светлый, ЛДСП 16мм
904 </span></a>
905</div>
906</div>
907</div>
908<div class="popup-materials__box">
909<div class="popup-materials__box-title">
910 ЛДСП. Дополнительные цвета
911 </div>
912<div class="popup-materials__items" data-material-type="skeleton">
913<div class="popup-materials__item">
914<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый шагрень, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/white-shagreen.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый шагрень, ЛДСП 16мм" data-depth="16">
<span>
915 Белый шагрень, ЛДСП 16мм
916 </span></a>
917</div>
918<div class="popup-materials__item">
919<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 22мм" data-depth="22">
<img src="assets/textures/white-sleek.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 22мм" data-depth="22">
<span>
920 Белый, ЛДСП 22мм
921 </span></a>
922</div>
923<div class="popup-materials__item">
924<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 32мм, склееный" data-depth="32">
<img src="assets/textures/white-sleek.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 32мм, склееный" data-depth="32">
<span>
925 Белый, ЛДСП 32мм, склееный
926 </span></a>
927</div>
928<div class="popup-materials__item">
929<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 38мм" data-depth="38">
<img src="assets/textures/white-sleek.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый, ЛДСП 38мм" data-depth="38">
<span>
930 Белый, ЛДСП 38мм
931 </span></a>
932</div>
933<div class="popup-materials__item">
934<a href="#" class="popup-materials__item-link cnst-texture-link" title="Другой цвет, ЛДСП 22мм" data-depth="22">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Другой цвет, ЛДСП 22мм" data-depth="22">
<span>
935 Другой цвет, ЛДСП 22мм
936 </span></a>
937</div>
938<div class="popup-materials__item">
939<a href="#" class="popup-materials__item-link cnst-texture-link" title="Другой цвет, ЛДСП 32мм" data-depth="32">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Другой цвет, ЛДСП 32мм" data-depth="32">
<span>
940 Другой цвет, ЛДСП 32мм
941 </span></a>
942</div>
943<div class="popup-materials__item">
944<a href="#" class="popup-materials__item-link cnst-texture-link" title="Аллюминий, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/aluminum.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Аллюминий, ЛДСП 16мм" data-depth="16">
<span>
945 Аллюминий, ЛДСП 16мм
946 </span></a>
947</div>
948<div class="popup-materials__item">
949<a href="#" class="popup-materials__item-link cnst-texture-link" title="Бодега светлый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/bodega-light.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Бодега светлый, ЛДСП 16мм" data-depth="16">
<span>
950 Бодега светлый, ЛДСП 16мм
951 </span></a>
952</div>
953<div class="popup-materials__item">
954<a href="#" class="popup-materials__item-link cnst-texture-link" title="Бодега темный, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/bodega-dark.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Бодега темный, ЛДСП 16мм" data-depth="16">
<span>
955 Бодега темный, ЛДСП 16мм
956 </span></a>
957</div>
958<div class="popup-materials__item">
959<a href="#" class="popup-materials__item-link cnst-texture-link" title="Бук, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/byk.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Бук, ЛДСП 16мм" data-depth="16">
<span>
960 Бук, ЛДСП 16мм
961 </span></a>
962</div>
963<div class="popup-materials__item">
964<a href="#" class="popup-materials__item-link cnst-texture-link" title="Венге, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/wenge.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Венге, ЛДСП 16мм" data-depth="16">
<span>
965 Венге, ЛДСП 16мм
966 </span></a>
967</div>
968<div class="popup-materials__item">
969<a href="#" class="popup-materials__item-link cnst-texture-link" title="Венге, ЛДСП 22мм" data-depth="22">
<img src="assets/textures/wenge.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Венге, ЛДСП 22мм" data-depth="22">
<span>
970 Венге, ЛДСП 22мм
971 </span></a>
972</div>
973<div class="popup-materials__item">
974<a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб молочный, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/oak-milk.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб молочный, ЛДСП 16мм" data-depth="16">
<span>
975 Дуб молочный, ЛДСП 16мм
976 </span></a>
977</div>
978<div class="popup-materials__item">
979<a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб молочный, ЛДСП 22мм" data-depth="22">
<img src="assets/textures/oak-milk.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб молочный, ЛДСП 22мм" data-depth="22">
<span>
980 Дуб молочный, ЛДСП 22мм
981 </span></a>
982</div>
983<div class="popup-materials__item">
984<a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб сонома светлый, ЛДСП 22мм" data-depth="22">
<img src="assets/textures/sonoma-oak-light.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб сонома светлый, ЛДСП 22мм" data-depth="22">
<span>
985 Дуб сонома светлый, ЛДСП 22мм
986 </span></a>
987</div>
988<div class="popup-materials__item">
989<a href="#" class="popup-materials__item-link cnst-texture-link" title="Клен, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/maple.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Клен, ЛДСП 16мм" data-depth="16">
<span>
990 Клен, ЛДСП 16мм
991 </span></a>
992</div>
993<div class="popup-materials__item">
994<a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех экко, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/ecco-walnut.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех экко, ЛДСП 16мм" data-depth="16">
<span>
995 Орех экко, ЛДСП 16мм
996 </span></a>
997</div>
998<div class="popup-materials__item">
999<a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех (гварнери), ЛДСП 16мм" data-depth="16">
<img src="assets/textures/gvarneri-walnut.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех (гварнери), ЛДСП 16мм" data-depth="16">
<span>
1000 Орех (гварнери), ЛДСП 16мм
1001 </span></a>
1002</div>
1003<div class="popup-materials__item">
1004<a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех миланский, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/milan-walnut.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Орех миланский, ЛДСП 16мм" data-depth="16">
<span>
1005 Орех миланский, ЛДСП 16мм
1006 </span></a>
1007</div>
1008<div class="popup-materials__item">
1009<a href="#" class="popup-materials__item-link cnst-texture-link" title="Ясень Шимо темный, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/yasen-shimo-dark.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Ясень Шимо темный, ЛДСП 16мм" data-depth="16">
<span>
1010 Ясень Шимо темный, ЛДСП 16мм
1011 </span></a>
1012</div>
1013<div class="popup-materials__item">
1014<a href="#" class="popup-materials__item-link cnst-texture-link" title="Ясень Шимо светлый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/yasen-shimo-light.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Ясень Шимо светлый, ЛДСП 16мм" data-depth="16">
<span>
1015 Ясень Шимо светлый, ЛДСП 16мм
1016 </span></a>
1017</div>
1018<div class="popup-materials__item">
1019<a href="#" class="popup-materials__item-link cnst-texture-link" title="Выбеленное дерево, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/bleached-wood.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Выбеленное дерево, ЛДСП 16мм" data-depth="16">
<span>
1020 Выбеленное дерево, ЛДСП 16мм
1021 </span></a>
1022</div>
1023<div class="popup-materials__item">
1024<a href="#" class="popup-materials__item-link cnst-texture-link" title="Вишня оксфорд, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/cherry-oxford.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Вишня оксфорд, ЛДСП 16мм" data-depth="16">
<span>
1025 Вишня оксфорд, ЛДСП 16мм
1026 </span></a>
1027</div>
1028<div class="popup-materials__item">
1029<a href="#" class="popup-materials__item-link cnst-texture-link" title="Лайм, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/lime.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Лайм, ЛДСП 16мм" data-depth="16">
<span>
1030 Лайм, ЛДСП 16мм
1031 </span></a>
1032</div>
1033<div class="popup-materials__item">
1034<a href="#" class="popup-materials__item-link cnst-texture-link" title="Фисташковый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/pistachio.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Фисташковый, ЛДСП 16мм" data-depth="16">
<span>
1035 Фисташковый, ЛДСП 16мм
1036 </span></a>
1037</div>
1038<div class="popup-materials__item">
1039<a href="#" class="popup-materials__item-link cnst-texture-link" title="Красный, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Красный, ЛДСП 16мм" data-depth="16">
<span>
1040 Красный, ЛДСП 16мм
1041 </span></a>
1042</div>
1043<div class="popup-materials__item">
1044<a href="#" class="popup-materials__item-link cnst-texture-link" title="Фиолетовый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/purple.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Фиолетовый, ЛДСП 16мм" data-depth="16">
<span>
1045 Фиолетовый, ЛДСП 16мм
1046 </span></a>
1047</div>
1048<div class="popup-materials__item">
1049<a href="#" class="popup-materials__item-link cnst-texture-link" title="Желтый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/yellow.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Желтый, ЛДСП 16мм" data-depth="16">
<span>
1050 Желтый, ЛДСП 16мм
1051 </span></a>
1052</div>
1053<div class="popup-materials__item">
1054<a href="#" class="popup-materials__item-link cnst-texture-link" title="Синий, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/blue.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Синий, ЛДСП 16мм" data-depth="16">
<span>
1055 Синий, ЛДСП 16мм
1056 </span></a>
1057</div>
1058<div class="popup-materials__item">
1059<a href="#" class="popup-materials__item-link cnst-texture-link" title="Оранжевый, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/orange.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Оранжевый, ЛДСП 16мм" data-depth="16">
<span>
1060 Оранжевый, ЛДСП 16мм
1061 </span></a>
1062</div>
1063<div class="popup-materials__item">
1064<a href="#" class="popup-materials__item-link cnst-texture-link" title="ЛДСП 16мм, другой цвет (срок уточним)" data-depth="16">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="ЛДСП 16мм, другой цвет (срок уточним)" data-depth="16">
<span>
1065 ЛДСП 16мм, другой цвет (срок уточним)
1066 </span></a>
1067</div>
1068<div class="popup-materials__item">
1069<a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый влагостойкий, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/white-sleek.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Белый влагостойкий, ЛДСП 16мм" data-depth="16">
<span>
1070 Белый влагостойкий, ЛДСП 16мм
1071 </span></a>
1072</div>
1073<div class="popup-materials__item">
1074<a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб Вотан, ЛДСП 16мм" data-depth="16">
<img src="assets/textures/oak-wotan.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Дуб Вотан, ЛДСП 16мм" data-depth="16">
<span>
1075 Дуб Вотан, ЛДСП 16мм
1076 </span></a>
1077</div>
1078</div>
1079</div>
1080<div class="popup-materials__box">
1081<div class="popup-materials__box-title">
1082 МДФ
1083 </div>
1084<div class="popup-materials__items" data-material-type="skeleton">
1085<div class="popup-materials__item">
1086<a href="#" class="popup-materials__item-link cnst-texture-link" title="покрыт плёнкой на выбор, МДФ 16мм" data-depth="16">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="покрыт плёнкой на выбор, МДФ 16мм" data-depth="16">
<span>
1087 покрыт плёнкой на выбор, МДФ 16мм
1088 </span></a>
1089</div>
1090<div class="popup-materials__item">
1091<a href="#" class="popup-materials__item-link cnst-texture-link" title="Натуральный без покрытия, МДФ 16мм" data-depth="16">
<img src="assets/textures/mdf-nature.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Натуральный без покрытия, МДФ 16мм" data-depth="16">
<span>
1092 Натуральный без покрытия, МДФ 16мм
1093 </span></a>
1094</div>
1095<div class="popup-materials__item">
1096<a href="#" class="popup-materials__item-link cnst-texture-link" title="Покрашенный, МДФ 16мм" data-depth="16">
<img src="assets/textures/red.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Покрашенный, МДФ 16мм" data-depth="16">
<span>
1097 Покрашенный, МДФ 16мм
1098 </span></a>
1099</div>
1100</div>
1101</div>
1102<div class="popup-materials__box">
1103<div class="popup-materials__box-title">
1104 Массив дерева натуральный
1105 </div>
1106<div class="popup-materials__items" data-material-type="skeleton">
1107<div class="popup-materials__item">
1108<a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 22мм сращенный, двухсторонний, без покраски" data-depth="22">
<img src="assets/textures/solid-pine-without-painting.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 22мм сращенный, двухсторонний, без покраски" data-depth="22">
<span>
1109 массив сосны 22мм сращенный, двухсторонний, без покраски
1110 </span></a>
1111</div>
1112<div class="popup-materials__item">
1113<a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 30мм сращенный, двухсторонний, без покраски" data-depth="30">
<img src="assets/textures/solid-pine-without-painting.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 30мм сращенный, двухсторонний, без покраски" data-depth="30">
<span>
1114 массив сосны 30мм сращенный, двухсторонний, без покраски
1115 </span></a>
1116</div>
1117<div class="popup-materials__item">
1118<a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 40мм сращенный, двухсторонний, без покраски" data-depth="40">
<img src="assets/textures/solid-pine-without-painting.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="массив сосны 40мм сращенный, двухсторонний, без покраски" data-depth="40">
<span>
1119 массив сосны 40мм сращенный, двухсторонний, без покраски
1120 </span></a>
1121</div>
1122</div>
1123</div>
1124<div class="popup-materials__box">
1125<div class="popup-materials__box-title">
1126 Фанера
1127 </div>
1128<div class="popup-materials__items" data-material-type="skeleton">
1129<div class="popup-materials__item">
1130<a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 15мм, без лака (до 1500мм)" data-depth="15">
<img src="assets/textures/fanera-without-lak.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 15мм, без лака (до 1500мм)" data-depth="15">
<span>
1131 Фанера 15мм, без лака (до 1500мм)
1132 </span></a>
1133</div>
1134<div class="popup-materials__item">
1135<a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 20мм, без лака (до 1500мм)" data-depth="20">
<img src="assets/textures/fanera-without-lak.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 20мм, без лака (до 1500мм)" data-depth="20">
<span>
1136 Фанера 20мм, без лака (до 1500мм)
1137 </span></a>
1138</div>
1139<div class="popup-materials__item">
1140<a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 15мм, бесцветный лак/масло" data-depth="15">
<img src="assets/textures/fanera-transparent-lak-maslo.jpg" alt="image" class="field-base__item-img" loading="lazy"></a><a href="#" class="popup-materials__item-link cnst-texture-link" title="Фанера 15мм, бесцветный лак/масло" data-depth="15">
<span>
1141 Фанера 15мм, бесцветный лак/масло
1142 </span></a>
1143</div>
1144</div>
1145</div>
1146</div></div>
1147<div class="help-popup__wrapper"><div class="help-popup">
1148<button class="help-popup__btn">✕</button><div class="help-popup__title"></div>
1149<div class="help-popup__text"></div>
1150</div></div>
1151<div class="popup-submit__wrapper"><div class="popup-submit">
1152<button class="popup-submit__close-btn">✕</button>
<div class="popup-submit__title">Ваши контакты</div>
1153<p class="popup-submit__text">
1154 Мы свяжемся с вами в ближайшее время, чтобы уточнить детали или выслать ссылку на оплату!
1155 </p>
1156<div id="popup-submit-form"><form action="#" class="popup-submit__form">
1157<input name="name" class="popup-submit__input popup-submit__name" placeholder="введите имя" required="true">
<input name="tel" class="popup-submit__input popup-submit__tel" placeholder="введите телефон" required="true"><button type="submit" class="popup-submit__send-btn">Отправить</button>
1158</form></div>
1159</div></div>
1160<script src="./js/nouislider.min.js"></script><script src="./js/custom-select.js"></script><script src="./js/three2.js"></script><script src="./js/canvas.min.js"></script><script src="./js/main.min.js"></script><script src="./js/calculate-cost.js"></script>
<script type="text/javascript">
1161 $(window).on('load', function() {
1162 var startMode = '';
1163 $('a.construct-link-wrapper').on('click', function(e){
1164 e.stopPropagation();
1165 });
1166
1167 if(startMode && startMode !== '') {
1168 var $targetDiv = $('.constructor-selection__img-bx[data-selection="' + startMode + '"]');
1169 if($targetDiv.length) {
1170 $targetDiv.find('a').on('click', function(e){ e.preventDefault(); });
1171 $targetDiv.trigger('click');
1172 $('.constructor-selection').addClass('hidden-force');
1173 $('.constructor-steps').addClass('hidden-force');
1174 $('.constructor-text-container').addClass('hidden-force');
1175 window.dispatchEvent(new Event('resize'));
1176 }
1177 }
1178 });
1179</script><script>
1180/* === ЗАЩИТА H1 ОТ ПЕРЕЗАПИСИ (SEO FIX) - ЗАПУСКАЕМ СРАЗУ === */
1181(function() {
1182 var targetH1 = null;
1183 var originalText = "";
1184
1185 // Функция охраны
1186 function protectH1() {
1187 if (!targetH1) {
1188 targetH1 = document.querySelector('.constructor-title');
1189 if (targetH1) originalText = targetH1.innerText;
1190 }
1191
1192 if (targetH1 && targetH1.innerText !== originalText) {
1193 targetH1.innerText = originalText;
1194 }
1195
1196 requestAnimationFrame(protectH1);
1197 }
1198
1199 // Запускаем цикл проверки сразу
1200 requestAnimationFrame(protectH1);
1201})();
1202
1203/* === ФИНАЛЬНЫЙ ПАТЧ V24: ALL FIXED === */
1204document.addEventListener("DOMContentLoaded", function() {
1205
1206 // 1. НАСТРОЙКА ГРАФИКИ
1207 setTimeout(function() {
1208 if (typeof renderer !== 'undefined') {
1209 var pixelRatio = window.devicePixelRatio || 1;
1210 renderer.setPixelRatio(Math.min(pixelRatio, 2));
1211 if(renderer.shadowMap) renderer.shadowMap.enabled = false;
1212
1213 var width = document.querySelector('.canvas-wrapper').clientWidth;
1214 var height = document.querySelector('.canvas-wrapper').clientHeight;
1215 renderer.setSize(width, height);
1216 }
1217
1218 // 2. ОПТИМИЗАЦИЯ С ФЛАГОМ
1219 if (typeof THREE !== 'undefined' && THREE.Raycaster) {
1220 var originalIntersect = THREE.Raycaster.prototype.intersectObjects;
1221 var lastCall = 0;
1222 var cachedResult = [];
1223 window.forceRaycast = false;
1224
1225 THREE.Raycaster.prototype.intersectObjects = function(objects, recursive) {
1226 var now = Date.now();
1227 if (window.forceRaycast || now - lastCall > 40) {
1228 lastCall = now;
1229 cachedResult = originalIntersect.call(this, objects, recursive);
1230 window.forceRaycast = false;
1231 return cachedResult;
1232 }
1233 return cachedResult;
1234 };
1235 }
1236
1237 // 3. ФИКС ТЕКСТУРЫ
1238 var activeMaterial = document.querySelector('.field-style__item-link.active');
1239 if(activeMaterial) {
1240 setTimeout(function(){ activeMaterial.click(); }, 500);
1241 }
1242
1243 }, 1000);
1244
1245 // 4. UI: ФИКС ВЫДЕЛЕНИЯ ИКОНОК
1246 $(document).on('click', '.field-fill__item', function() {
1247 $(this).siblings().removeClass('active');
1248 $(this).addClass('active');
1249 });
1250
1251 // 5. МОБИЛЬНЫЙ КЛИК
1252 var canvasWrapper = document.querySelector('.canvas-wrapper');
1253 if (canvasWrapper) {
1254 var touchStartTime, startX, startY;
1255
1256 canvasWrapper.addEventListener('touchstart', function(e) {
1257 touchStartTime = Date.now();
1258 startX = e.touches[0].clientX;
1259 startY = e.touches[0].clientY;
1260 }, {passive: true});
1261
1262 canvasWrapper.addEventListener('touchend', function(e) {
1263 var diffTime = Date.now() - touchStartTime;
1264 var diffX = Math.abs(e.changedTouches[0].clientX - startX);
1265 var diffY = Math.abs(e.changedTouches[0].clientY - startY);
1266
1267 if (e.target.tagName !== 'CANVAS') return;
1268
1269 if (diffTime < 400 && diffX < 10 && diffY < 10) {
1270 e.preventDefault();
1271
1272 if (typeof intersectObjects !== 'undefined') {
1273 intersectObjects.forEach(function(obj) {
1274 if(obj.material && obj.material.opacity > 0) {
1275 obj.material.opacity = 0;
1276 }
1277 });
1278 }
1279
1280 if (typeof onPointerMove === 'function') {
1281 onPointerMove({
1282 clientX: e.changedTouches[0].clientX,
1283 clientY: e.changedTouches[0].clientY
1284 });
1285 }
1286
1287 window.forceRaycast = true;
1288 if (window.intersections) window.intersections();
1289
1290 setTimeout(function(){
1291 var clickEvent = new MouseEvent('click', {
1292 view: window,
1293 bubbles: true,
1294 cancelable: true,
1295 clientX: e.changedTouches[0].clientX,
1296 clientY: e.changedTouches[0].clientY
1297 });
1298 canvasWrapper.dispatchEvent(clickEvent);
1299 window.forceRaycast = true;
1300 }, 40);
1301 }
1302 }, {passive: false});
1303 }
1304
1305 // 6. ФИКС ПУТЕЙ КАРТИНОК
1306 if (typeof THREE !== 'undefined' && THREE.TextureLoader) {
1307 var originalLoad = THREE.TextureLoader.prototype.load;
1308 THREE.TextureLoader.prototype.load = function(url, onLoad, onProgress, onError) {
1309 if (typeof url === 'string' && url.indexOf('assets/') > -1) {
1310 var cleanPath = url.replace(/^(\.\/|\/)+/, '');
1311 url = '/' + cleanPath;
1312 }
1313 return originalLoad.call(this, url, onLoad, onProgress, onError);
1314 };
1315 }
1316
1317 // 7. ФИКС ЗАКРЫВАЮЩИХСЯ ДВЕРЕЙ (АГРЕССИВНЫЙ)
1318 if (typeof CFurnitureDesigner !== 'undefined') {
1319 var originalUpdate = CFurnitureDesigner.prototype.update;
1320 CFurnitureDesigner.prototype.update = function() {
1321 var wasOpened = this.doorsIsOpened;
1322
1323 originalUpdate.apply(this, arguments);
1324
1325 if (wasOpened) {
1326 this.doorsIsOpened = true;
1327 var self = this;
1328 setTimeout(function(){
1329 if((self.type === 'closet' || self.type === 'wardrobe' || self.type === 'dressers') && !self.doorsMoving) {
1330 self.doorsIsOpened = false;
1331 self.toggleOpenDoors(self);
1332 }
1333 }, 150);
1334 }
1335 };
1336 }
1337});
1338</script>
1339</div></div></div></div></div>
1340<footer class="footer-m"><div class="x_menu_list">
1341<div class="x_menu_col footer-logo-col">
1342<div itemscope="" itemtype="https://schema.org/ImageObject" class="footer-logo-cell">
1343<meta itemprop="url" content="/assets/img/logo-w.png">
1344<a href="https://komodmsk.ru"><img src="/assets/img/logo-w.png" alt="КомодМск" title="КомодМск" width="120" height="17" itemprop="url" loading="lazy" class="footer-logo"></a>
1345</div>
1346<div class="footer-time">10:00 — 20:00</div>
1347<div class="copy" itemscope="" itemtype="https://schema.org/CreativeWork">
1348© <span itemprop="copyrightHolder"> КомодМск</span> <span itemprop="copyrightYear">2002–2026</span>
1349</div>
1350</div>
1351<div class="x_menu_col">
1352<div class="footer-phone">
1353<img src="/assets/img/phone.svg" width="18" height="16" alt="Телефон" loading="lazy"><a href="tel:88002002327" title="Бесплатно по России">8 800 200–23–27</a>
1354</div>
1355<div class="footer-phone">
1356<img src="/assets/img/phone.svg" width="18" height="16" alt="Телефон" loading="lazy"><a href="tel:+74994033617" title="Москва">+7 (499) 403–36–17</a>
1357</div>
1358<div class="footer-phone">
1359<img src="/assets/img/phone.svg" width="18" height="16" alt="Телефон" loading="lazy"><a href="tel:+78122411743" title="Санкт-Петербург">+7 (812) 241–17–43</a>
1360</div>
1361<div class="footer-email">
1362<img src="/assets/img/email.svg" width="18" height="16" alt="Email" loading="lazy"><a href="mailto:">zakaz@komodmsk.ru</a>
1363</div>
1364<div class="footer-phone">
1365<img src="/assets/img/wa.svg" width="18" height="16" alt="WhatsApp" loading="lazy"><a href="https://api.whatsapp.com/send?phone=79915674335" rel="nofollow">Написать в WhatsApp</a>
1366</div>
1367<div class="footer-phone">
1368<img src="/assets/img/tg.svg" width="18" height="16" alt="Telegram" loading="lazy"><a href="https://t.me/+79915674335" rel="nofollow">Написать в Telegram</a>
1369</div>
1370</div>
1371<ul class="x_menu_col" itemscope="" itemtype="https://schema.org/SiteNavigationElement">
1372<li class="x_menu_title" itemprop="name">Каталог</li>
1373<li class="x_menu_item" itemprop="name">
<a href="/cat/sale" rel="nofollow">Распродажа</a></li>
1374<li class="x_menu_item" itemprop="name">
<a href="/cat/kuhny" rel="nofollow">Кухни</a></li>
1375<li class="x_menu_item" itemprop="name">
<a href="/cat/komody" rel="nofollow">Комоды</a></li>
1376<li class="x_menu_item" itemprop="name">
<a href="/cat/tumby" rel="nofollow">Тумбы</a></li>
1377<li class="x_menu_item" itemprop="name">
<a href="/cat/obuvnicy" rel="nofollow">Обувницы</a></li>
1378<li class="x_menu_item" itemprop="name">
<a href="/cat/prihozhie" rel="nofollow">Прихожие</a></li>
1379<li class="x_menu_item" itemprop="name">
<a href="/cat/stoly" rel="nofollow">Столы</a></li>
1380<li class="x_menu_item" itemprop="name">
<a href="/cat/chairs" rel="nofollow">Стулья</a></li>
1381<li class="x_menu_item" itemprop="name">
<a href="/cat/shkafy" rel="nofollow">Шкафы</a></li>
1382<li class="x_menu_item" itemprop="name">
<a href="/cat/stellazhi" rel="nofollow">Стеллажи</a></li>
1383<li class="x_menu_item" itemprop="name">
<a href="/cat/stenki" rel="nofollow">Стенки</a></li>
1384<li class="x_menu_item" itemprop="name">
<a href="/cat/mebel-dlya-spalni" rel="nofollow">Спальни</a></li>
1385</ul>
1386<ul class="x_menu_col" itemscope="" itemtype="https://schema.org/SiteNavigationElement">
1387<li class="x_menu_title" itemprop="name">Информация</li>
1388<li class="x_menu_item" itemprop="name"><a href="/doc/about" itemprop="url">О компании</a></li>
1389<li class="x_menu_item" itemprop="name"><a href="/faq" itemprop="url">Вопросы и ответы</a></li>
1390<li class="x_menu_item" itemprop="name"><a href="/doc/vozvrat-obmen" itemprop="url">Возврат / обмен / гарантия</a></li>
1391<li class="x_menu_item" itemprop="name"><a href="/doc/oplata" itemprop="url">Как оплатить?</a></li>
1392<li class="x_menu_item" itemprop="name"><a href="/doc/dostavka/moskva-i-oblast" itemprop="url">Условия доставки и сборки</a></li>
1393<li class="x_menu_item" itemprop="name"><a href="/doc/contacts" itemprop="url">Контакты</a></li>
1394<li class="x_menu_item" itemprop="name"><a href="/oferta" itemprop="url">Публичная оферта</a></li>
1395</ul>
1396<ul class="x_menu_col" itemscope="" itemtype="https://schema.org/SiteNavigationElement">
1397<li class="x_menu_title" itemprop="name">Полезное</li>
1398<li class="x_menu_item" itemprop="name"><a href="/articles">Статьи</a></li>
1399<li class="x_menu_item" itemprop="name"><a href="/materials">Материалы</a></li>
1400<li class="x_menu_item" itemprop="name"><a href="/textures">Текстуры</a></li>
1401<li class="x_menu_item" itemprop="name"><a href="/series">Серии мебели</a></li>
1402<li class="x_menu_item" itemprop="name"><a href="/lacobel">Стекло Lacobel</a></li>
1403</ul>
1404<div class="x_menu_col"><div class="x-sn">
1405<a href="https://vk.com/komodmsk_ru" target="_blank" rel="nofollow noreferrer noopener"><img src="/assets/img/vk.svg" width="36" height="36" alt="КомодМск Вконтакте" title="КомодМск Вконтакте" loading="lazy" class="sn-img"></a>
<a href="https://ok.ru/komodmsk" target="_blank" rel="nofollow noreferrer noopener"><img src="/assets/img/ok.svg" width="36" height="36" alt="КомодМск в Одноклассниках" title="КомодМск в Одноклассниках" loading="lazy" class="sn-img"></a>
<a href="https://www.youtube.com/@komodmsk" target="_blank" rel="nofollow noreferrer noopener"><img src="/assets/img/yt.svg" width="36" height="36" alt="КомодМск на Ютубе" title="КомодМск на Ютубе" loading="lazy" class="sn-img"></a>
<a href="https://www.instagram.com/komodmsk.ru/" target="_blank" rel="nofollow noreferrer noopener"><img src="/assets/img/insta.svg" width="36" height="36" alt="КомодМск в Инстаграме" title="КомодМск в Инстаграме" loading="lazy" class="sn-img"></a>
<a href="https://dzen.ru/komodmsk.ru" target="_blank" rel="nofollow noreferrer noopener"><img src="/assets/img/zn.svg" width="36" height="36" alt="КомодМск в Дзене" title="КомодМск в Дзене" loading="lazy" class="sn-img"></a>
1406</div></div>
1407</div></footer><div id="helper"></div>
1408<div id="message" style="display: none; text-align: center;"><div id="messageText"></div></div>
1409<div id="after-order" class="after-order" style="display:none;width:300px">
1410<a href="/basket/list" rel="nofollow">
1411 Перейти в корзину
1412 </a><br><a href="#" class="simplemodal-close" rel="nofollow">
1413 Продолжить покупки
1414 </a>
1415</div>
1416<div style="display:none;" class="item-colors-select-modal">
1417<div class="item-colors-select-modal-content">
<center style="font-weight: 500;margin-top: 20px;font-size: 20px;">Товар добавлен в корзину!</center></div>
1418<div class="error"></div>
1419<br><br><div class="modal-close-btn" onclick="Basket.hideActionsForm();return false;"></div>
1420<noindex><div class="f-l-h">
1421<button type="button" onclick="Basket.addAndOpenCart();return false;" class="btn btn-yellow-inline btn-lg">
1422 Оформить заказ
1423 </button><button type="button" onclick="Basket.addAndHideActionsForm();return false;" class="btn btn-grey btn-lg">
1424 Продолжить покупки
1425 </button>
1426</div></noindex>
1427</div>
1428<div id="msgBox" onclick="$(this).hide();">...</div>
1429<div style="display:none;" id="js-popup-container"></div>
1430<div href="#" class="scrollToTop" title="В начало"></div>
1431<div id="note-content"></div>
1432<div class="modal fade out" id="modal-main" tabindex="-1" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"></div></div></div>
1433<script src="/assets/libs/owl.carousel.min.js"></script><script src="/assets/libs/select2.min.js"></script><script>
1434 if (typeof ymaps === 'undefined') {
1435 var ymaps = {
1436 ready: function(callback) {
1437 }
1438 };
1439 }
1440 </script><script src="/assets/build/build.js?28648"></script><script>
1441 (function() {
1442 function init() {
1443 var images = document.getElementsByTagName('img');
1444
1445 function loadVisible() {
1446 for (var i = 0; i < images.length; i++) {
1447 var img = images[i];
1448 var dataSrc = img.getAttribute('data-src');
1449
1450 if (!dataSrc) continue;
1451 var rect = img.getBoundingClientRect();
1452 if (rect.top >= 0 && rect.left >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight)) {
1453 img.src = dataSrc;
1454 img.removeAttribute('data-src');
1455 }
1456 }
1457 }
1458
1459 if (window.addEventListener) {
1460 window.addEventListener('scroll', loadVisible);
1461 window.addEventListener('resize', loadVisible);
1462 window.addEventListener('load', loadVisible);
1463 } else {
1464 window.attachEvent('onscroll', loadVisible);
1465 window.attachEvent('onload', loadVisible);
1466 }
1467
1468 loadVisible();
1469 }
1470 init();
1471 })();
1472 </script><script src="/assets/js/shop.js"></script><script src="/assets/js/cardColors.min.js"></script><script src="/assets/js/modules/basket.js"></script><script src="/assets/build/newkm.js"></script><script>
1473 (function ($) {
1474 var GEO = {
1475 init: function () {
1476 GEO.$modal = window.Modal && new Modal(
1477 '.modal-container',
1478 { small: true }
1479 );
1480
1481 GEO.openCityPopupClickHandler = function (e) {
1482 e.preventDefault();
1483 e.stopPropagation();
1484 requestAnimationFrame(GEO.openCityPopup);
1485 return false;
1486 };
1487
1488 GEO.collectElements();
1489
1490 GEO.$input = null;
1491 GEO.region = "Москва";
1492 GEO.city = "Москва";
1493 GEO.data = {
1494 "utm_param_name": "utm_label",
1495 "phones": {
1496 "default": "+7 (499) 403-36-17",
1497 "region": {
1498 "Санкт-Петербург и Ленинградская область": "+7 (812) 241-17-43",
1499 "Санкт-Петербург": "+7 (812) 241-17-43",
1500 "Ленинградская область": "+7 (499) 403-36-17",
1501 "Москва и Московская область": "+7 (499) 403-36-17",
1502 "Москва": "+7 (499) 403-36-17",
1503 "Московская область": "+7 (499) 403-36-17"
1504 },
1505 "utm": {
1506 "test_test_1": "+7 (495) 777-77-77",
1507 "test_test_2": "+7 (812) 777-77-77"
1508 }
1509 }
1510};
1511 GEO.utm = "";
1512 GEO.needsClientSetup = "yes";
1513 GEO.updateDOM();
1514
1515 if (GEO.data && GEO.region) {
1516 GEO.updateDOM();
1517 }
1518 /** if (GEO.needsClientSetup == 'yes') { */
1519 if (false) {
1520 ymaps.ready(function () {
1521 if (!ymaps.geolocation) {
1522 console.error('Не подключен ymaps.geolocation');
1523 return;
1524 }
1525 GEO.getYandex();
1526 setTimeout(GEO.getAuto.bind(GEO), 2000);
1527 });
1528 }
1529 },
1530
1531 getAuto: function () {
1532 ymaps.geolocation.get({
1533 provider: 'auto',
1534 }).then(function (res) {
1535 return ymaps.geocode(res.geoObjects.get(0).geometry.getCoordinates());
1536 })
1537 .then(function (res) {
1538 var aa = res.geoObjects.get(0).getAdministrativeAreas();
1539 var l = res.geoObjects.get(0).getLocalities();
1540 return {
1541 region: aa && aa[ 0 ] ? aa[ 0 ] : null,
1542 city: l && l[ 0 ] ? l[ 0 ] : false
1543 };
1544 })
1545 .then(function (data) {
1546 var region = data.region;
1547 var city = data.city;
1548 if (city && typeof region != 'undefined') {
1549 if (GEO.region !== region || GEO.city !== city) {
1550 GEO.region = region;
1551 GEO.city = city;
1552 GEO.updateDOM();
1553 var reload = false;
1554 GEO.updateGeo(GEO.region, GEO.city, reload);
1555 }
1556 }
1557 });
1558 },
1559
1560 getYandex: function () {
1561 ymaps.geolocation.get({
1562 provider: 'yandex',
1563 autoReverseGeocode: false
1564 })
1565 .then(function (res) {
1566 return ymaps.geocode(res.geoObjects.get(0).geometry.getCoordinates());
1567 })
1568 .then(function (res) {
1569 var aa = res.geoObjects.get(0).getAdministrativeAreas();
1570 var l = res.geoObjects.get(0).getLocalities();
1571 return {
1572 region: aa && aa[ 0 ] ? aa[ 0 ] : null,
1573 city: l && l[ 0 ] ? l[ 0 ] : false
1574 };
1575 })
1576 .then(function (data) {
1577 var region = data.region;
1578 var city = data.city;
1579 if (city && typeof region != 'undefined') {
1580 GEO.region = region;
1581 GEO.city = city;
1582 GEO.updateDOM();
1583 var reload = false;
1584 GEO.updateGeo(GEO.region, GEO.city, reload);
1585 }
1586 })
1587 .catch(function (err) {
1588 if(err)console.error(err);
1589 });
1590 },
1591
1592 collectElements: function () {
1593 GEO.$el = $('.city-chooser');
1594 GEO.$el.off('click', GEO.openCityPopupClickHandler);
1595 GEO.$el.on('click', GEO.openCityPopupClickHandler);
1596 GEO.$city = $('.city-chooser__city');
1597 GEO.$region = $('.js-region');
1598 GEO.$phone = $('.js-phone');
1599 },
1600
1601 openCityPopup: function () {
1602 $.get('/ajax.handler.php?location', function (data) {
1603 requestAnimationFrame(function () {
1604
1605 $('#modal-main .modal-content').html(data);
1606 $('#modal-main').modal('show');
1607
1608 GEO.$input = $('#cityChooserInput');
1609 GEO.$input.focus();
1610 requestAnimationFrame(function () {
1611 GEO.$input.focus();
1612 });
1613 });
1614 });
1615 },
1616
1617 setCity: function (city) {
1618 GEO.city = city;
1619 GEO.updateCity();
1620 },
1621
1622 saveCity: function (city) {
1623 $.post('/ajax.handler.php', {
1624 action: 'setCity',
1625 city: city
1626 }, function (data) {
1627 if (data == 'success') {
1628 GEO.setCity(city);
1629 GEO.$modal.close();
1630 } else {
1631 alert('Что-то пошло не так. Попробуйте другой город.');
1632 }
1633 });
1634 },
1635
1636 /**
1637 * Обновить DOM согласно текущим данным.
1638 */
1639 updateDOM: function () {
1640 GEO.setPhone(GEO.data, GEO.region, GEO.utm);
1641 GEO.updateCity();
1642 },
1643
1644 /**
1645 * Отобразить город в DOM.
1646 */
1647 updateCity: function () {
1648 GEO.$city.html(GEO.city);// + ' (' + GEO.region + ')');
1649 if (GEO.region) {
1650 GEO.$city.attr('title', GEO.region);
1651 }
1652 },
1653
1654 selectGeo: function (region, city) {
1655 GEO._region = region;
1656 GEO._city = city;
1657 },
1658
1659 updateGeo: function (region, city) {
1660 region = region || GEO._region;
1661 city = city || GEO._city;
1662 if (!city) {
1663 return;
1664 }
1665 $.post('/ajax.handler.php', {
1666 action: 'setGeo',
1667 region: region,
1668 city: city,
1669 }, function (data) {
1670 if (data == 'success') {
1671 GEO.setRegion(region);
1672 GEO.setCity(city);
1673 GEO.updateInfoFromServer();
1674 GEO.closePopup();
1675
1676 var catid = $('.catid').text();
1677 if (catid && catid != 0) {
1678 $.ajax({
1679 url: '/location/index.php',
1680 data: {itemId : catid, quant: Number($('.quant').text())},
1681 success: function(data){
1682 //var deliveryrespons = data != "" ? $.parseJSON(data) : {};
1683 var deliveryrespons = $.parseJSON(data);
1684 if (deliveryrespons.nopek != 'Y') {
1685 $('.topdelivery').empty().append(deliveryrespons.delivery_varchar_nopek);
1686 $('.middelivery').empty().append(deliveryrespons.delivery_text_nopek);
1687 }
1688 }
1689 });
1690 }
1691
1692 } else {
1693 console.error('Что-то пошло не так.');
1694 }
1695 });
1696 },
1697
1698 /**
1699 * Получает с сервера текущую информацию
1700 * по городу, региону и т.д.
1701 *
1702 * Нужно вызывать после установки на клиенте местоположния, т.к.
1703 * сгенерированная на сервере информация не может быть обновлена
1704 * только на клиенте и требует дополнительного запроса.
1705 */
1706 updateInfoFromServer: function (section, data) {
1707 $.post('/ajax.handler.php', {
1708 action: 'getGeoInfo',
1709 section: section || 'main',
1710 data: data || {},
1711 }, function (data) {
1712 });
1713
1714 var url = window.location.href;
1715 $.post(url, {}, function (data) {
1716 $.each([
1717 'deliveryBlock',
1718 'payments',
1719 'ratingSmall',
1720 'services',
1721 ], function (index, type) {
1722 var $container = $('.js-' + type + '-container');
1723 if (data[ type ] && $container.length) {
1724 $container.replaceWith(data[ type ]);
1725 }
1726 });
1727
1728 /**
1729 * После обновления DOM
1730 * надо заново собрать элементы
1731 */
1732 GEO.collectElements();
1733 GEO.updateDOM();
1734 if (window.CheckOnScrollElements) {
1735 /**
1736 * После обновления сразу проверем, есть ли
1737 * зависимые от скролла элементы.
1738 */
1739 CheckOnScrollElements();
1740 }
1741
1742 /**
1743 * Шлем event о необходимости поменять
1744 * состояние все зависимых компонентов.
1745 */
1746 $('body').trigger('geo-changed');
1747 })
1748 },
1749
1750 closePopup: function () {
1751 GEO.$input = null;
1752 $('#modal-main').modal('hide');
1753 },
1754
1755 setPhone: function (data, region, utm) {
1756 var phone = data.phones.default;
1757 if (utm && data.phones && data.phones.utm) {
1758 for (var i in data.phones.utm) {
1759 if (i == utm) {
1760 phone = data.phones.utm[ i ];
1761 GEO.$phone.attr('href', 'tel:' + phone)
1762 .text(phone);
1763 return;
1764 }
1765 }
1766 }
1767 if (region && data.phones && data.phones.region) {
1768 for (var i in data.phones.region) {
1769 var r = i.toLowerCase();
1770 if (r == region.toLowerCase()) {
1771 phone = data.phones.region[ i ];
1772 GEO.$phone.attr('href', 'tel:' + phone)
1773 .text(phone);
1774 return;
1775 }
1776 }
1777 }
1778 GEO.$phone.attr('href', 'tel:' + phone)
1779 .text(phone);
1780 },
1781
1782 setRegion: function (region) {
1783 GEO.region = region;
1784 GEO.$region.text(region);
1785 },
1786
1787 };
1788
1789 window.GEO = GEO;
1790 })(jQuery);
1791
1792 jQuery(function () {
1793 requestAnimationFrame(GEO.init.bind(GEO));
1794 });
1795</script><script>
1796 document.addEventListener("DOMContentLoaded", function() {
1797 let envyboxLoaded = false;
1798
1799 // Функция загрузки (запустится только от действий человека)
1800 function loadEnvybox() {
1801 if (envyboxLoaded) return;
1802 envyboxLoaded = true;
1803
1804 // 1. Грузим стили
1805 var style = document.createElement('link');
1806 style.rel = 'stylesheet';
1807 style.href = "https://cdn.envybox.io/widget/cbk.css";
1808
1809 // 2. Внутренняя функция запуска JS
1810 function runWidgetScript() {
1811 // Ждем 500 мс, чтобы стили успели примениться
1812 setTimeout(function() {
1813 var script = document.createElement('script');
1814 script.src = "https://cdn.envybox.io/widget/cbk.js?wcb_code=d1b2985288776e9024eb86254eae9201";
1815 script.async = true;
1816 document.body.appendChild(script);
1817 }, 500);
1818 }
1819
1820 style.onload = runWidgetScript;
1821 style.onerror = runWidgetScript;
1822 document.head.appendChild(style);
1823
1824 // Убираем слушатели
1825 ['mousemove', 'touchstart', 'scroll', 'click'].forEach(function(e) {
1826 window.removeEventListener(e, loadEnvybox);
1827 });
1828 }
1829
1830 // Загрузка ТОЛЬКО по физическому взаимодействию.
1831 ['mousemove', 'touchstart', 'scroll', 'click'].forEach(function(e) {
1832 window.addEventListener(e, loadEnvybox, { passive: true, once: true });
1833 });
1834 });
1835 </script>
1836</body>
1837</html>