PageSourceSearch

https://wnfx.ru/portfolio/

html wnfx.ru collected 2026-10-03 19:49:21 UTC 121,914 bytes, 1,870 lines download raw bytes

1<!DOCTYPE html>
2<html lang="ru">
3    <head>
4
5        <meta name="apple-mobile-web-app-capable" content="yes" />
6        <meta name="apple-mobile-web-app-status-bar-style" content="default" />
7        <meta name="viewport" content="width=device-width" />
8        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
9        
10        <link href="/favicon.ico" rel="SHORTCUT ICON" />
11        
12        <!-- Resource hints для улучшения производительности -->
13        <link rel="dns-prefetch" href="//wnfx.ru" />
14        <link rel="preconnect" href="https://wnfx.ru" crossorigin />
15        
16        <link rel="preload" href="https://wnfx.ru/wp-content/themes/winfox/style2.css?v4" as="style">
17<link rel="preload" href="https://wnfx.ru/wp-content/themes/winfox/js/jquery-all.js" as="script">
18
19<!-- This site is optimized with the Yoast SEO plugin v13.2 - https://yoast.com/wordpress/plugins/seo/ -->
20<title>Портфолио - WINFOX</title>
21<meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1"/>
22<link rel="canonical" href="https://wnfx.ru/portfolio/" />
23<meta property="og:locale" content="ru_RU" />
24<meta property="og:type" content="object" />
25<meta property="og:title" content="Портфолио - WINFOX" />
26<meta property="og:url" content="https://wnfx.ru/portfolio/" />
27<meta property="og:site_name" content="WINFOX" />
28<script type='application/ld+json' class='yoast-schema-graph yoast-schema-graph--main'>{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://wnfx.ru/#website","url":"https://wnfx.ru/","name":"WINFOX","inLanguage":"ru-RU","potentialAction":{"@type":"SearchAction","target":"https://wnfx.ru/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"CollectionPage","@id":"https://wnfx.ru/portfolio/#webpage","url":"https://wnfx.ru/portfolio/","name":"\u041f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e - WINFOX","isPartOf":{"@id":"https://wnfx.ru/#website"},"inLanguage":"ru-RU"}]}</script>
28
29<!-- / Yoast SEO plugin. -->
30
31<link rel='stylesheet' id='ac_style-css'  href='https://wnfx.ru/wp-content/plugins/application-calculator/assets/css/ac-main.css?ver=5.3.3' type='text/css' media='print' onload="this.media='all'" />
32<noscript><link rel="stylesheet" href="https://wnfx.ru/wp-content/plugins/application-calculator/assets/css/ac-main.css?ver=5.3.3" media="all"></noscript><link rel='stylesheet' id='stylebody-css'  href='https://wnfx.ru/wp-content/themes/winfox/style2.css?ver=1790761718' type='text/css' media='print' onload="this.media='all'" />
33<noscript><link rel="stylesheet" href="https://wnfx.ru/wp-content/themes/winfox/style2.css?ver=1790761718" media="all"></noscript>
33<script type='text/javascript' defer src='https://wnfx.ru/wp-content/themes/winfox/js/jquery-all.js'></script>
vendor: 1 bytes, line 33
33
34<script type='text/javascript'>
35/* <![CDATA[ */
36var es_data = {"messages":{"es_empty_email_notice":"Please enter email address","es_rate_limit_notice":"You need to wait for sometime before subscribing again","es_single_optin_success_message":"Successfully Subscribed.","es_email_exists_notice":"Email Address already exists!","es_unexpected_error_notice":"Oops.. Unexpected error occurred.","es_invalid_email_notice":"Invalid email address","es_try_later_notice":"Please try after some time"},"es_ajax_url":"https:\/\/wnfx.ru\/wp-admin\/admin-ajax.php"};
37/* ]]> */
38</script>
vendor: 1 bytes, line 38
38
39<script type='text/javascript' defer src='https://wnfx.ru/wp-content/plugins/email-subscribers/lite/public/js/email-subscribers-public.js'></script>
vendor: 1 bytes, line 39
39
40<script>
41        // Функция для ожидания загрузки Swiper и jQuery
42        function waitForSwiperAndJQuery(callback) {
43            if (typeof Swiper !== "undefined" && typeof jQuery !== "undefined") {
44                callback();
45            } else {
46                setTimeout(function() {
47                    waitForSwiperAndJQuery(callback);
48                }, 50);
49            }
50        }
51        </script>
51    <style type="text/css">
52        html {
53            margin-top: 0 !important;
54        }
55        #wpadminbar {
56            position: fixed !important;
57            bottom: 0 !important;
58            top: auto !important;
59            z-index: 999999 !important;
60        }
61        #wpadminbar .ab-top-menu {
62            margin-top: 0 !important;
63        }
64        @media screen and (max-width: 782px) {
65            html {
66                margin-top: 0 !important;
67            }
68            #wpadminbar {
69                position: fixed !important;
70                bottom: 0 !important;
71                top: auto !important;
72            }
73        }
74    </style>
75    		<style type="text/css" id="wp-custom-css">
76			#PWPreviewWidgetButton {
77	display:none !important;
78}		</style>
79		        <!-- <link rel="canonical" href="https://wnfx.ru/" /> -->
80
81        <style>
82            .post-article table {
83                border-spacing: 1px;
84                border: 1px solid #000;
85                border-collapse: collapse;
86            }
87            .post-article table td {
88                border: 1px solid #000;
89                padding: 2px;
90            }
91        </style>
92        <style>
93            .languages .l-choice span{
94                cursor: pointer;
95                display: block;
96            }
97            .languages .l-choice{
98                box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.14);
99                display: none;
100                position: absolute;
101                right: -10px;
102                top: 41px;
103                padding: 19px 39px;
104                z-index: 5;
105                background: #fff;
106                text-align: center;
107                font-style: normal;
108                font-weight: normal;
109                font-size: 17px;
110                line-height: 14px;
111                cursor: pointer;
112            }
113            .languages .selected span{
114                margin-right: 10px;
115            }
116            .languages .selected{
117                width: 100%;
118                display: flex;
119                align-items: center;
120                justify-content: space-between;
121                cursor: pointer;
122            }
123            .languages{
124                min-width: 50px;
125                max-width: 80px;
126                position: relative;
127                display: inline-block;
128                padding-left: 30px;
129            }
130            .languages:hover{
131                transition:0.5s;
132                background: #eeeeee96;
133            }
134            .languages .l-choice:hover{
135                transition:0.5s;
136                background: #eeeeee96;
137            }
138            .wp-block-quote {
139                background: #EAF9FC;
140                padding: 30px;
141            }
142            .wp-block-quote cite::before {
143                content: "";
144                min-width: 72px;
145                max-width: 72px;
146                width: 72px;
147                min-height: 72px;
148                max-height: 72px;
149                height: 72px;
150                background: url(https://wnfx.ru/wp-content/uploads/2020/04/Mask-Group.jpg);
151                display: block;
152                background-size: cover;
153                border-radius: 50%;
154                background-position: center;
155                margin-right: 20px;
156            }
157            .wp-block-quote cite {
158                display: flex;
159                align-items: center;
160            }
161            .wp-block-quote cite strong {
162                max-width: 300px;
163                font-weight: 600;
164                font-size: 22px;
165                line-height: 32px;
166            }
167            @media screen and (max-width: 576px){
168                .languages {
169                    position: absolute;
170                    left: 0;
171                    top: 27px;
172                    padding-left: 16px;
173                    display:none;
174                }
175                .languages .l-choice {
176                    position: absolute;
177                    right: unset;
178                    top: 24px;
179                    padding: 23px 38px;
180                    left: 16px;
181                }
182                .show-mobile-nav .mobile-nav {
183                    padding: 0;
184                    height: calc(100vh - 206px);
185                    display: flex !important;
186                    align-items: center;
187                }
188                .wp-block-quote cite  strong {
189                    max-width: 300px;
190                    font-weight: 600;
191                    font-size: 16px;
192                    line-height: 22px;
193                }
194            }
195            @media screen and (max-width: 320px){
196                .show-mobile-nav .mobile-nav {
197                    padding-top: 35px;
198                }
199                .mobile-nav ul li {
200                    padding: 0 0 20px 0;
201                }
202            }
203        </style>
204    </head>
205    <body>
206        <div id="page-preloader" style="position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;min-width:100vw;min-height:100vh;z-index:999999;background:#fff url(&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' style='margin:auto;background:%23fff;display:block;' width='200px' height='200px' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid'%3E%3Cg transform='translate(25 50)'%3E%3Ccircle cx='0' cy='0' r='6' fill='%2380D5E2' transform='scale(0.57841 0.57841)'%3E%3CanimateTransform attributeName='transform' type='scale' begin='-0.3333333333333333s' calcMode='spline' keySplines='0.3 0 0.7 1;0.3 0 0.7 1' values='0;1;0' keyTimes='0;0.5;1' dur='1s' repeatCount='indefinite'%3E%3C/animateTransform%3E%3C/circle%3E%3C/g%3E%3Cg transform='translate(50 50)'%3E%3Ccircle cx='0' cy='0' r='6' fill='%2380D5E2' transform='scale(0.960498 0.960498)'%3E%3CanimateTransform attributeName='transform' type='scale' begin='-0.16666666666666666s' calcMode='spline' keySplines='0.3 0 0.7 1;0.3 0 0.7 1' values='0;1;0' keyTimes='0;0.5;1' dur='1s' repeatCount='indefinite'%3E%3C/animateTransform%3E%3C/circle%3E%3C/g%3E%3Cg transform='translate(75 50)'%3E%3Ccircle cx='0' cy='0' r='6' fill='%2380D5E2' transform='scale(0.86427 0.86427)'%3E%3CanimateTransform attributeName='transform' type='scale' begin='0s' calcMode='spline' keySplines='0.3 0 0.7 1;0.3 0 0.7 1' values='0;1;0' keyTimes='0;0.5;1' dur='1s' repeatCount='indefinite'%3E%3C/animateTransform%3E%3C/circle%3E%3C/g%3E%3C/svg%3E&quot;) center center no-repeat;transition: all 250ms ease 250ms;"></div>
207        <div class="mobile-nav-wrap">
208            <div class="bl">
209                                <span class="mobile-sbm"><i></i><i></i></span>
210                <div class="mobile-nav">
211                    <ul>
212                        <li id="menu-item-94" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-94"><a href="https://wnfx.ru/o-kompanii/">О нас</a></li>
213<li id="menu-item-96" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-96"><a href="/portfolio" aria-current="page">Портфолио</a></li>
214<li id="menu-item-17678" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17678"><a href="https://wnfx.ru/tekhpodderzhka-mobilnykh-prilozheniy/">Поддержка</a></li>
215<li id="menu-item-89" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-89"><a href="https://wnfx.ru/blog/">Блог</a></li>
216<li id="menu-item-91" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-91"><a href="https://wnfx.ru/contact/">Контакты</a></li>
217<li id="menu-item-18982" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18982"><a href="https://martenn.com/">Martenn</a></li>
218                    </ul>
219                </div>
220            </div>
221            <!-- <div class="mobile-info">
222                <p><strong><a class="calc-btn btn-scroll" href="javascript:void(0);">Калькулятор</a></strong></p>
223                <p><a href="tel:"></a></p>
224            </div> -->
225        </div>
226        <div class="page-width">
227            <header class="site-header">
228                <div class="header-scroll">
229                    <div class="page-bl">
230                        <div class="fl-row">
231                            <div class="col">
232                                <div class="logo-wrap"><a class="logo" href="/"><img src="https://wnfx.ru/wp-content/themes/winfox/images/logo.png?v=4" alt=""></a></div>
233                            </div>
234                            <div class="desktop-bl col">
235                                <ul class="site-nav">
236                                    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-94"><a href="https://wnfx.ru/o-kompanii/">О нас</a></li>
237<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-96"><a href="/portfolio" aria-current="page">Портфолио</a></li>
238<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17678"><a href="https://wnfx.ru/tekhpodderzhka-mobilnykh-prilozheniy/">Поддержка</a></li>
239<li class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-89"><a href="https://wnfx.ru/blog/">Блог</a></li>
240<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-91"><a href="https://wnfx.ru/contact/">Контакты</a></li>
241<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18982"><a href="https://martenn.com/">Martenn</a></li>
242                                </ul>
243                            </div>
244                            <div class="col sr">
245                                <div class="head-info">
246                                    <p class="desktop-bl" id="tels-bl"><a href="tel:+74993500779">+7 (499) 350-07-79</a></p>
247                                    <!-- <p class="desktop-bl"><a class="calc-btn btn wht btn-scroll" href="javascript:void(0);">Калькулятор</a></p> -->
248                                    <p><a class="btn buy-project d-flex al-c jus-c" href="#buy-project" style="">Обсудить проект</a></p>
249                                                                            <div class="languages">
250                                            <div class="selected">
251                                                <span>Ru</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down"><polyline points="6 9 12 15 18 9"></polyline></svg>
252                                            </div>
253                                            <div class="l-choice">
254                                                <span data-l="en">En</span>
255                                            </div>
256                                        </div>
257                                                                    </div>
258                            </div>
259                        </div>
260                        <span class="mobile-sbm"><i></i><i></i></span>
261                    </div>
262                </div>
263            </header><div class="site-content">
264    <section class="area-portfolio">
265        <div class="page-bl">
266            <div class="about-bl main">
267                <h1 class="h-1">Портфолио</h1>			<div class="textwidget"><p>Мы стремимся к длительным отношениям, с погружением в мир бизнеса клиента. Это наш способ находить точные, красивые и своевременные решения</p>
268</div>
269		                <a class="btn buy-project" href="#buy-project">Заказать проект</a>
270            </div>
271            <div class="portfolio-wrap"> 
272                <div class="fl-row">
273                							                    <div class="col">
274	                        <div class="portf-bl">
275	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/bahetle/">
276	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2026/04/bah_cover.jpg" class="attachment-full size-full wp-post-image" alt="Бахетле" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2026/04/bah_cover.jpg 1258w, https://wnfx.ru/wp-content/uploads/2026/04/bah_cover-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2026/04/bah_cover-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2026/04/bah_cover-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
277	                            </div>
278	                            <h2 class="h-2">Бахетле</h2>
279	                            <p>Единая цифровая система онлайн-заказа для розничной сети: мобильное приложение, интернет-магазин, панель управления заказами и приложение для сборки заказов</p>
280	                        </div>
281	                    </div>
282	                	                    <div class="col">
283	                        <div class="portf-bl">
284	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/kontinent-2/">
285	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2026/04/kon_cover.jpg" class="attachment-full size-full wp-post-image" alt="Kontinent" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2026/04/kon_cover.jpg 1258w, https://wnfx.ru/wp-content/uploads/2026/04/kon_cover-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2026/04/kon_cover-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2026/04/kon_cover-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
286	                            </div>
287	                            <h2 class="h-2">Kontinent</h2>
288	                            <p>Мобильное и веб-решение для учета смен, геолокационного контроля и интеграции с внутренней ERP-системой</p>
289	                        </div>
290	                    </div>
291	                	                    <div class="col">
292	                        <div class="portf-bl">
293	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/collant/">
294	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2026/03/Cover_collant.png" class="attachment-full size-full wp-post-image" alt="Collant" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2026/03/Cover_collant.png 1258w, https://wnfx.ru/wp-content/uploads/2026/03/Cover_collant-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2026/03/Cover_collant-750x557.png 750w, https://wnfx.ru/wp-content/uploads/2026/03/Cover_collant-768x570.png 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
295	                            </div>
296	                            <h2 class="h-2">Collant</h2>
297	                            <p>Мобильное B2B-приложение для оптовых продаж: цифровой канал заказов для дистрибьюторов и клиентов</p>
298	                        </div>
299	                    </div>
300	                	                    <div class="col">
301	                        <div class="portf-bl">
302	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/promomall/">
303	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2026/03/promomall_cover.png" class="attachment-full size-full wp-post-image" alt="PromoMall" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2026/03/promomall_cover.png 1258w, https://wnfx.ru/wp-content/uploads/2026/03/promomall_cover-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2026/03/promomall_cover-750x557.png 750w, https://wnfx.ru/wp-content/uploads/2026/03/promomall_cover-768x570.png 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
304	                            </div>
305	                            <h2 class="h-2">PromoMall</h2>
306	                            <p>Внутренний сервис для управления промоматериалами фармацевтической компании: разработка публичной части приложения и панели администратора</p>
307	                        </div>
308	                    </div>
309	                	                    <div class="col">
310	                        <div class="portf-bl">
311	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/uralenergosbyt/">
312	                                <img width="1242" height="927" src="https://wnfx.ru/wp-content/uploads/2025/10/p_ues_cover_x3_2-e1780058819186.png" class="attachment-full size-full wp-post-image" alt="Уралэнергосбыт" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2025/10/p_ues_cover_x3_2-e1780058819186.png 1242w, https://wnfx.ru/wp-content/uploads/2025/10/p_ues_cover_x3_2-e1780058819186-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2025/10/p_ues_cover_x3_2-e1780058819186-750x560.png 750w, https://wnfx.ru/wp-content/uploads/2025/10/p_ues_cover_x3_2-e1780058819186-768x573.png 768w" sizes="(max-width: 1242px) 100vw, 1242px" />	                                </a>
313	                            </div>
314	                            <h2 class="h-2">Уралэнергосбыт</h2>
315	                            <p>Мобильное приложение для передачи показаний и оплаты электроэнергии без комиссии</p>
316	                        </div>
317	                    </div>
318	                	                    <div class="col">
319	                        <div class="portf-bl">
320	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/leonardo/">
321	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2023/08/leonardo.jpg" class="attachment-full size-full wp-post-image" alt="Леонардо" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2023/08/leonardo.jpg 1258w, https://wnfx.ru/wp-content/uploads/2023/08/leonardo-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2023/08/leonardo-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2023/08/leonardo-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
322	                            </div>
323	                            <h2 class="h-2">Леонардо</h2>
324	                            <p>Мобильный онлайн-гипермаркет товаров для творчества: приложения для iOS и Android под ключ</p>
325	                        </div>
326	                    </div>
327	                	                    <div class="col">
328	                        <div class="portf-bl">
329	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/jurist-dlya-ljudej/">
330	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2024/10/Cover-2.jpg" class="attachment-full size-full wp-post-image" alt="Юрист для людей" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2024/10/Cover-2.jpg 1258w, https://wnfx.ru/wp-content/uploads/2024/10/Cover-2-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2024/10/Cover-2-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2024/10/Cover-2-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
331	                            </div>
332	                            <h2 class="h-2">Юрист для людей</h2>
333	                            <p>Мобильный помощник для клиентов юридической компании: кроссплатформенное приложение для iOS и Android</p>
334	                        </div>
335	                    </div>
336	                	                    <div class="col">
337	                        <div class="portf-bl">
338	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/gazfond/">
339	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2022/04/gaz_cover.jpg" class="attachment-full size-full wp-post-image" alt="Газфонд" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2022/04/gaz_cover.jpg 1258w, https://wnfx.ru/wp-content/uploads/2022/04/gaz_cover-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2022/04/gaz_cover-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2022/04/gaz_cover-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
340	                            </div>
341	                            <h2 class="h-2">Газфонд</h2>
342	                            <p>Инструмент для отслеживания пенсионных накоплений и выплат: проектирование, дизайн, разработка приложений для iOS и Android</p>
343	                        </div>
344	                    </div>
345	                	                    <div class="col">
346	                        <div class="portf-bl">
347	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/komatsu/">
348	                                <img width="1259" height="935" src="https://wnfx.ru/wp-content/uploads/2022/12/7.jpg" class="attachment-full size-full wp-post-image" alt="Komatsu" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2022/12/7.jpg 1259w, https://wnfx.ru/wp-content/uploads/2022/12/7-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2022/12/7-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2022/12/7-768x570.jpg 768w" sizes="(max-width: 1259px) 100vw, 1259px" />	                                </a>
349	                            </div>
350	                            <h2 class="h-2">Komatsu</h2>
351	                            <p>Мобильное приложение для прикладных инженеров международной компании: разработка кроссплатформенного приложения для iOS и Android на Flutter</p>
352	                        </div>
353	                    </div>
354	                	                    <div class="col">
355	                        <div class="portf-bl">
356	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/rublevskij/">
357	                                <img width="572" height="425" src="https://wnfx.ru/wp-content/uploads/2020/06/poster.png" class="attachment-full size-full wp-post-image" alt="Рублёвский" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/06/poster.png 572w, https://wnfx.ru/wp-content/uploads/2020/06/poster-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2020/06/poster-570x425.png 570w" sizes="(max-width: 572px) 100vw, 572px" />	                                </a>
358	                            </div>
359	                            <h2 class="h-2">Рублёвский</h2>
360	                            <p>Интернет-магазин колбас и мясных деликатесов премиального сегмента: приложения под ключ  для iOS и Android</p>
361	                        </div>
362	                    </div>
363	                	                    <div class="col">
364	                        <div class="portf-bl">
365	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/eka/">
366	                                <img width="1259" height="935" src="https://wnfx.ru/wp-content/uploads/2021/04/eka-1.jpg" class="attachment-full size-full wp-post-image" alt="Eka" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/04/eka-1.jpg 1259w, https://wnfx.ru/wp-content/uploads/2021/04/eka-1-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/04/eka-1-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/04/eka-1-768x570.jpg 768w" sizes="(max-width: 1259px) 100vw, 1259px" />	                                </a>
367	                            </div>
368	                            <h2 class="h-2">Eka</h2>
369	                            <p>Приложение для держателей топливных карт ЕКА: решения под ключ для iOS и Android</p>
370	                        </div>
371	                    </div>
372	                	                    <div class="col">
373	                        <div class="portf-bl">
374	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/frontvisual/">
375	                                <img width="1259" height="935" src="https://wnfx.ru/wp-content/uploads/2021/04/fr1.jpg" class="attachment-full size-full wp-post-image" alt="FRONTVISUAL" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/04/fr1.jpg 1259w, https://wnfx.ru/wp-content/uploads/2021/04/fr1-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/04/fr1-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/04/fr1-768x570.jpg 768w" sizes="(max-width: 1259px) 100vw, 1259px" />	                                </a>
376	                            </div>
377	                            <h2 class="h-2">FRONTVISUAL</h2>
378	                            <p>Приложение для создания проекта отделки дома и поиска исполнителей: решение под ключ для Android</p>
379	                        </div>
380	                    </div>
381	                	                    <div class="col">
382	                        <div class="portf-bl">
383	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/crm-sistema-aiba/">
384	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2021/12/aiba_main.jpg" class="attachment-full size-full wp-post-image" alt="AIBA" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/12/aiba_main.jpg 1258w, https://wnfx.ru/wp-content/uploads/2021/12/aiba_main-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/12/aiba_main-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/12/aiba_main-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	            
384                    </a>
385	                            </div>
386	                            <h2 class="h-2">AIBA</h2>
387	                            <p>Удобная и надежная CRM-система для создания и проведения крупных международных турниров с сотнями участников</p>
388	                        </div>
389	                    </div>
390	                	                    <div class="col">
391	                        <div class="portf-bl">
392	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/qubeclub/">
393	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2021/12/qube_start.png" class="attachment-full size-full wp-post-image" alt="Qube Club" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/12/qube_start.png 1258w, https://wnfx.ru/wp-content/uploads/2021/12/qube_start-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2021/12/qube_start-750x557.png 750w, https://wnfx.ru/wp-content/uploads/2021/12/qube_start-768x570.png 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
394	                            </div>
395	                            <h2 class="h-2">Qube Club</h2>
396	                            <p>Универсальный инструмент по управлению кафе и ресторанами: веб-приложение, панель администратора, телеграм-бот и печать чеков</p>
397	                        </div>
398	                    </div>
399	                	                    <div class="col">
400	                        <div class="portf-bl">
401	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/vinovodochnyj/">
402	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2022/12/Cover.jpg" class="attachment-full size-full wp-post-image" alt="ВиноВодочный" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2022/12/Cover.jpg 1258w, https://wnfx.ru/wp-content/uploads/2022/12/Cover-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2022/12/Cover-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2022/12/Cover-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
403	                            </div>
404	                            <h2 class="h-2">ВиноВодочный</h2>
405	                            <p>Приложение для поиска и заказа алкогольных напитков в магазинах сети: дизайн и разработка решений для iOS и Android и панели администратора</p>
406	                        </div>
407	                    </div>
408	                	                    <div class="col">
409	                        <div class="portf-bl">
410	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/ecoline/">
411	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2021/12/eco_start.jpg" class="attachment-full size-full wp-post-image" alt="Ecoline" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/12/eco_start.jpg 1258w, https://wnfx.ru/wp-content/uploads/2021/12/eco_start-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/12/eco_start-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/12/eco_start-768x570.jpg 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
412	                            </div>
413	                            <h2 class="h-2">Ecoline</h2>
414	                            <p>Сервис для вывоза бытовых отходов и заботы об экологии: разработка мобильных приложений на iOS и Android</p>
415	                        </div>
416	                    </div>
417	                	                    <div class="col">
418	                        <div class="portf-bl">
419	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/avtodata/">
420	                                <img width="1259" height="935" src="https://wnfx.ru/wp-content/uploads/2021/06/cap11.jpg" class="attachment-full size-full wp-post-image" alt="Автодата" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/06/cap11.jpg 1259w, https://wnfx.ru/wp-content/uploads/2021/06/cap11-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/06/cap11-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/06/cap11-768x570.jpg 768w" sizes="(max-width: 1259px) 100vw, 1259px" />	                                </a>
421	                            </div>
422	                            <h2 class="h-2">Автодата</h2>
423	                            <p>Мобильное приложение для сбора данных об эксплуатации автомобиля и их продажи на бирже: приложение для iOS</p>
424	                        </div>
425	                    </div>
426	                	                    <div class="col">
427	                        <div class="portf-bl">
428	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/nadh/">
429	                                <img width="1259" height="935" src="https://wnfx.ru/wp-content/uploads/2021/04/nadh.jpg" class="attachment-full size-full wp-post-image" alt="Nadh" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2021/04/nadh.jpg 1259w, https://wnfx.ru/wp-content/uploads/2021/04/nadh-129x96.jpg 129w, https://wnfx.ru/wp-content/uploads/2021/04/nadh-750x557.jpg 750w, https://wnfx.ru/wp-content/uploads/2021/04/nadh-768x570.jpg 768w" sizes="(max-width: 1259px) 100vw, 1259px" />	                                </a>
430	                            </div>
431	                            <h2 class="h-2">Nadh</h2>
432	                            <p>
432Магазин для австрийской фармацевтической компании NADH: приложения под ключ для iOS и Android</p>
433	                        </div>
434	                    </div>
435	                	                    <div class="col">
436	                        <div class="portf-bl">
437	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/skylake/">
438	                                <img width="1258" height="934" src="https://wnfx.ru/wp-content/uploads/2020/11/skylake_gl_p.png" class="attachment-full size-full wp-post-image" alt="SkyLake" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/11/skylake_gl_p.png 1258w, https://wnfx.ru/wp-content/uploads/2020/11/skylake_gl_p-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2020/11/skylake_gl_p-750x557.png 750w, https://wnfx.ru/wp-content/uploads/2020/11/skylake_gl_p-768x570.png 768w" sizes="(max-width: 1258px) 100vw, 1258px" />	                                </a>
439	                            </div>
440	                            <h2 class="h-2">SkyLake</h2>
441	                            <p>Мобильное приложение для розничных магазинов школьной формы: разработка мобильных приложений под ключ для iOS и Android, и интеграция с 1С</p>
442	                        </div>
443	                    </div>
444	                	                    <div class="col">
445	                        <div class="portf-bl">
446	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/servis-informirovaniya-pchelovodov/">
447	                                <img width="572" height="425" src="https://wnfx.ru/wp-content/uploads/2020/06/poster-2.png" class="attachment-full size-full wp-post-image" alt="Сервис информирования пчеловодов" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/06/poster-2.png 572w, https://wnfx.ru/wp-content/uploads/2020/06/poster-2-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2020/06/poster-2-570x425.png 570w" sizes="(max-width: 572px) 100vw, 572px" />	                                </a>
448	                            </div>
449	                            <h2 class="h-2">Сервис информирования пчеловодов</h2>
450	                            <p>Сервис, который заранее сообщает владельцам пасек  об обработках агрохимикатами близлежащих районов:  приложения под ключ для iOS и Android</p>
451	                        </div>
452	                    </div>
453	                	                    <div class="col">
454	                        <div class="portf-bl">
455	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/aline/">
456	                                <img width="572" height="425" src="https://wnfx.ru/wp-content/uploads/2020/06/poster-1.png" class="attachment-full size-full wp-post-image" alt="aLine" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/06/poster-1.png 572w, https://wnfx.ru/wp-content/uploads/2020/06/poster-1-129x96.png 129w, https://wnfx.ru/wp-content/uploads/2020/06/poster-1-570x425.png 570w" sizes="(max-width: 572px) 100vw, 572px" />	                                </a>
457	                            </div>
458	                            <h2 class="h-2">aLine</h2>
459	                            <p>Приложение для управления грузоперевозками:  дизайн и разработка решения для Android</p>
460	                        </div>
461	                    </div>
462	                	                    <div class="col">
463	                        <div class="portf-bl">
464	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/white-smile/">
465	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/wss.png" class="attachment-full size-full wp-post-image" alt="White&#038;Smile" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/wss.png 686w, https://wnfx.ru/wp-content/uploads/2020/03/wss-129x96.png 129w" sizes="(max-width: 686px) 100v
465w, 686px" />	                                </a>
466	                            </div>
467	                            <h2 class="h-2">White&#038;Smile</h2>
468	                            <p>Интернет-магазин товаров для полости рта: приложения для iOS и Android</p>
469	                        </div>
470	                    </div>
471	                	                    <div class="col">
472	                        <div class="portf-bl">
473	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/uconf/">
474	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/uConf.png" class="attachment-full size-full wp-post-image" alt="uConf" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/uConf.png 686w, https://wnfx.ru/wp-content/uploads/2020/03/uConf-129x96.png 129w" sizes="(max-width: 686px) 100vw, 686px" />	                                </a>
475	                            </div>
476	                            <h2 class="h-2">uConf</h2>
477	                            <p>Тайминг мероприятия, нетворкинг и общение со спикерами: бэкенд для Android-приложения и панель администратора</p>
478	                        </div>
479	                    </div>
480	                	                    <div class="col">
481	                        <div class="portf-bl">
482	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/amber-crm/">
483	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/amber.png" class="attachment-full size-full wp-post-image" alt="Amber CRM" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/amber.png 686w, https://wnfx.ru/wp-content/uploads/2020/03/amber-129x96.png 129w" sizes="(max-width: 686px) 100vw, 686px" />	                                </a>
484	                            </div>
485	                            <h2 class="h-2">Amber CRM</h2>
486	                            <p>CRM-система для удаленного управления бизнесом: проектирование, дизайн, разработка и тестирование приложения для Android</p>
487	                        </div>
488	                    </div>
489	                	                    <div class="col">
490	                        <div class="portf-bl">
491	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/avtonalog/">
492	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/avtonalog.png" class="attachment-full size-full wp-post-image" alt="АвтоНалог" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/avtonalog.png 686w, https://wnfx.ru/wp-content/uploads/2020/03/avtonalog-129x96.png 129w" sizes="(max-width: 686px) 100vw, 686px" />	                                </a>
493	                            </div>
494	                            <h2 class="h-2">АвтоНалог</h2>
495	                            <p>Приложение, которое автоматизирует бухгалтерский учет и помогает вовремя платить налоги: техническое задание и прототипирование </p>
496	                        </div>
497	                    </div>
498	                	                    <div class="col">
499	                        <div class="portf-bl">
500	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/staytonight/">
501	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/noname-1-kopiya.jpg" class="attachment-full size-full wp-post-image" alt="StayTonight" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/noname-1-kopiya.jpg 686w, https://wnfx.ru/wp-content/uploads/2020/03/noname-1-kopiya-129x96.jpg 129w" sizes="(max-width: 686px) 100vw, 686px" />	                                </a>
502	                            </div>
503	                            <h2 class="h-2">StayTonight</h2>
504	                            <p>Онлайн-платформа для бронирования отелей: адаптивный веб-сервис и панель администратора</p>
505	                        </div>
506	                    </div>
507	                	                    <div class="col">
508	                        <div class="portf-bl">
509	                            <div class="m-img"><a href="https://wnfx.ru/portfolio/officecube/">
510	                                <img width="686" height="512" src="https://wnfx.ru/wp-content/uploads/2020/03/officecub.png" class="attachment-full size-full wp-post-image" alt="OfficeCube" loading="lazy" srcset="https://wnfx.ru/wp-content/uploads/2020/03/officecub.png 686w, https://wnfx.ru/wp-content/uploads/2020/03/officecub-129x96.png 129w" sizes="(max-width: 686px) 100v
510w, 686px" />	                                </a>
511	                            </div>
512	                            <h2 class="h-2">OfficeCube</h2>
513	                            <p>Мобильные приложения, веб-сервис и панель администратора для сети коворкингов: дизайн, проектирование, разработка, поддержка</p>
514	                        </div>
515	                    </div>
516	                						
517
518                </div>
519            </div>
520                <div class="project-form call_me" id="buy-project">
521        <p class="h-1">Расскажите про свой проект</p>
522        <div class="contacts-wrap">
523            <div class="row">
524                <div class="col-md-s">
525                    <div class="contacts-user">
526                        <div class="photo">
527                            <img src="https://wnfx.ru/wp-content/uploads/2020/04/Mask-Group.jpg" alt="">
528                        </div>
529                        <h4 class="h-4">Pуcтам Myxамедьянов </h4>
530                        <p>CEO WINFOX</p>
531                        <ul class="mess-nav">
532                            
533                                                            <li>
534                                    <a target="_blank" href="https://teleg.run/winfox8">
535                                        <img src="https://wnfx.ru/wp-content/themes/winfox/images/icon-telegram.svg?v=1" alt="">
536                                    </a>
537                                </li>
538                            
539                                                            <li>
540                                    <a target="_blank" href="https://wa.me/79164774044">
541                                        <img src="https://wnfx.ru/wp-content/themes/winfox/images/icon-wapp.svg?v=1" alt="">
542                                    </a>
543                                </li>
544                                                    </ul>
545                    </div>
546                </div>
547                <div class="col-md-m">
548                    <div class="contacts-form call_me">
549                        <form id="" name="formportfolio" method="post" class="form_box">
550                            <input type="hidden" id="winfox_form_nonce" name="winfox_form_nonce" value="142b4f2149" /><input type="hidden" name="_wp_http_referer" value="/portfolio/" />                            <div class="inp-bl">
551                                <span class="label">Имя</span>
552                                <p><input type="text" name="name" required="" value=""></p>
553                            </div>
554                            <div class="inp-bl">
555                                <span class="label">Компания</span>
556                                <p><input type="text" name="company" required="" value=""></p>
557                            </div>
558                            <div class="inp-bl">
559                                <span class="label">E-mail</span>
560                                <p><input type="email" name="email" required="" value=""></p>
561                            </div>
562                            <div class="inp-bl">
563                                <span class="label">Телефон</span>
564                                <p><input type="tel" name="phone" required="" value=""></p>
565                            </div>
566                            <div class="fl-row">
567                                <div class="col">
568                                    <div class="inp-bl">
569                                        <span class="label">Сообщение</span>
570                                        <div class="bl-mobile file-btn-bl"><label class="file-btn"><input type="file" value=""></label></div>
571                                        <p><textarea name="message" required=""></textarea></p>
572                                    </div>
573                                    <div class="files-list"></div>
574                                </div>
575                                <div class="col inFileBox">
576                                    <label class="file-inp">
577                                        <input onchange="window.breakIntoSeparateFiles(this, '#file-list', '#file-preview')" id="filelist" t
577ype="file" name="uploaded_file[]" value="" multiple><span class="lbl name">Прикрепить файл</span>
578                                    </label>
579                                </div>
580                            </div>
581
582                            <div id="file-list" class="mb-2 d-flex"></div>
583
584                            <div class="contact-range focus">
585                                <span class="label">Планируемый бюджет</span>
586                                <div class="range-inf">
587                                    <p>₽ 150 000</p>
588                                    <p>₽ 1 500 000</p>
589                                    <p>₽ 2 500 000</p>
590                                </div>
591                                <div id="slider-range-max"></div>
592                                <input type="hidden" name="budget" id="range-inp" value="">
593                            </div>
594
595                            <input
596                                    id="upload_input"
597                                    type="file"
598                                    name="post[attachments][]"
599                                    style="display: none"
600                                    multiple="multiple"
601                                    onchange="window.breakIntoSeparateFiles(this, '#file-list', '#file-preview')"
602                            />
603
604                            <template id="file-preview">
605                                <div class="position-relative mr-3 text-center file-preview">
606                                    <div style="display: flex;gap: 10px;" class="files-list">
607                                        <img src="/wp-content/uploads/2020/04/Vector.svg">
608                                        <span style="margin-bottom: 0"></span>
609                                        <img src="/wp-content/themes/winfox/images/delete.svg" style="cursor: pointer" class="document_delete" onclick="$(this).closest('.file-preview').remove()"/>
610                                    </div>
611                                    <input class="file-input2" style="display: none" multiple="multiple" type="file" name="post[images][]">
612                                </div>
613                            </template>
614
615                            <style>.btn-disable{
616                                    user-select:none!important;
617                                    background-color:#ccc!important;
618                                    cursor:default!important;
619                                    outline:none!important;
620                                    pointer-events:none!important;
621                                }
622                                .form_box .req:invalid {
623                                    border-bottom: 2px solid red;
624                                }
625                                .form_box .req:valid {
626                                    border-bottom: 2px solid #2EC6DD;
627                                }
628                                .form_box input:focus {
629                                    outline: none;
630                                    border-color: #2EC6DD;
631                                }
632                                #g-recaptcha-response {
633                                    display: block !important;
634                                    position: absolute;
635                                    margin: -78px 0 0 0 !important;
636                                    width: 302px !important;
637                                    height: 76px !important;
638                                    z-index: -999999;
639                                    opacity: 0;
640                                }
641                                .check-input-error{
642                                    font-family: Inter;
643                                    font-style: normal;
644                                    font-weight: normal;
645                                    font-size: 13px;
646                                    line-height: 24px;
647                                    color: #EB5757;
648                                    display: none;
649                                }
650                            </style>
651                            
651<script>
652                                if (typeof waitForSwiperAndJQuery !== 'undefined') {
653                                    waitForSwiperAndJQuery(function() {
654                                    jQuery(function ($) {
655                                    jQuery('.file-input2').on('change', () => {
656                                    })
657
658                                    jQuery(".call_me form").submit(function (e) {
659                                        e.preventDefault();
660                                        // Проверяем, что reCAPTCHA пройдена
661                                        if (localStorage.getItem('capcha') != 1) {
662                                            return false;
663                                        }
664                                        // Проверяем, что кнопка не заблокирована
665                                        if (jQuery('#but').hasClass('btn-disable')) {
666                                            return false;
667                                        }
668                                        jQuery(this).find('input[type="hidden"], input[type="file"], input[type="text"], input[type="tel"], input[type="email"], textarea').each(function () {
669                                            var id = jQuery(this).attr('name');
670
671                                            var value = jQuery(this).val();
672                                            localStorage.setItem(id, value);
673                                        });
674                                        localStorage.setItem('capcha', 0);
675                                        window.location.href = '/kontakty-komanda/';
676
677                                        return false;
678                                    });
679                                    let captcha = false
680                                    jQuery("#slider-range-max").slider({
681                                        range: "max", min: 500000, max: 2500000, value: 1700000,
682                                        slide: function (event, ui) {
683                                            jQuery("#range-inp").val(ui.value);
684                                        }
685                                    });
686
687                                    jQuery("#range-inp").val('');
688                                    jQuery('input[name="uploaded_file[]"]').on('change', async function () {
689
690                                        var name = jQuery(this).attr('name');
691                                        var val = jQuery(this).val();
692                                        if (name == 'uploaded_file[]') {
693                                            let myArr = new Array();
694                                            if(jQuery('input[name="uploaded_file[]"]').get(0).files.length>0){
695                                                var files = jQuery('input[name="uploaded_file[]"]').get(0).files;
696                                                var r = await jQuery.each(files, async function(){
697                                                    const toBase64 = file => new Promise((resolve, reject) => {
698                                                        const reader = new FileReader();
699                                                        reader.readAsDataURL(file);
700                                                        reader.onload = () => resolve(reader.result);
701                                                        reader.onerror = error => reject(error);
702                                                    });
703                                                    var base64 = await toBase64(this);
704                                                    myArr.push(this.name+'~|~|~'+base64);
705                                                    localStorage.setItem('files', JSON.stringify(myArr));
706                                                });
707
708                                            }else{
709                                                localStorage.setItem('files',JSON.stringify(myArr));
710                                            }
711                                        } else {
712                                            localStorage.setItem(jQuery(this).attr('name'), jQuery(this).val());
713                                        }
714
715                                    });
716
717                                    jQuery('#formportfolio *[required]').on('change', function () {
718
719                                            if (window.localStorage.getItem('capcha') == 1) {
720                                                var noDis = true;
721                                                jQuery.each(jQuery('#formportfolio *[required]'), function (index, value) {
722                                                    if (value.value == '' && value.type != "checkbox") {
723                                                        noDis = false;
724                                                        jQuery(value).parent().parent().addClass('error')
725                                                    } else {
726                                                        if (jQuery(value).parent().parent().hasClass('error')) {
727                                                            jQuery(value).parent().parent().removeClass('error')
728                                                        }
729                                                        jQuery(value).parent().parent().addClass('focus')
730                                                    }
731                                                    if (value.type == "checkbox") {
732                                                        if (jQuery(value).prop('checked') != true) {
733                                                            noDis = false;
734                                                            jQuery('.check-input-error').fadeIn();
735                                                        } else {
736                                                            jQuery('.check-input-error').fadeOut();
737                                                        }
738                                                    }
739                                                });
740
741                                                if (noDis == true) {
742                                                    jQuery('#but').removeClass('btn-disable')
743                                                } else {
744                                                    jQuery('#but').addClass('btn-disable')
745                                                }
746                                            }
747                                    });
748
749                                    jQuery(document).ready(function () {
750                                        var pageW = jQuery("body").outerWidth();
751                                        if (pageW <= 640)
752                                        {
753                                            jQuery("#slider-range-max").slider({
754                                                range: "max", min: 500000, max: 1500000, value: 1000000,
755                                                slide: function (event, ui) {
756                                                    jQuery("#range-inp").val(ui.value);
757                                                }
758                                            });
759                                            jQuery("#range-inp").val('');
760                                        }
761                                    });
762                                    jQuery('document').ready(function () {
763                                        jQuery('#but').on('click', function () {
764                                            jQuery('input[required]').addClass('req');
765                                        });
766                                    });
767                                    jQuery('document').ready(function () {
768                                        jQuery('#but').on('click', function () {
769                                            jQuery('textarea[required]').addClass('req');
770                                        });
771                                    });
772                                var but = document.getElementById('but');
773                                if(document.body.contains(document.getElementById('chck'))){
774                                    document.getElementById('chck').onclick = function () {
775                                        // Кнопка может быть активирована только если reCAPTCHA пройдена
776                                        //if (this.checked && localStorage.getItem('capcha') == 1) {
777                                            if (this.checked) {
778                                            // Проверяем все обязательные поля перед активацией
779                                            var noDis = true;
780                                            jQuery.each(jQuery('#formportfolio *[required]'), function (index, value) {
781                                                if (value.value == '' && value.type != "checkbox") {
782                                                    noDis = false;
783                                                    console.log('11')
784                                                }
785                                            });
786                                            if (noDis) {
787                                                but.classList.remove('btn-disable');
788                                            } else {
789                                                but.classList.add('btn-disable');
790                                            }
791                                        } else {
792                                            but.classList.add('btn-disable');
793                                            console.log('22')
794                                            console.log(this.checked)
795                                            console.log(localStorage.getItem('capcha'))
796                                        }
797                                    }
798                                }
799                                function viewdiv(id) {
800                                    var el = document.getElementById(id);
801                                    var link = document.getElementById('toggleLink');
802                                    if (el.style.display == "block") {
803                                        el.style.display = "none";
804                                        link.innerText = link.getAttribute('data-text-hide');
805                                    } else {
806                                        el.style.display = "block";
807                                        link.innerText = link.getAttribute('data-text-show');
808                                    }
809                                }
810
811                                window.onload = function () {
812                                    localStorage.setItem('capcha', 0);
813                                    // Убеждаемся, что кнопка заблокирована при загрузке
814                                    jQuery('#but').addClass('btn-disable');
815                                    var $recaptcha = document.querySelector('#g-recaptcha-response');
816                                    if ($recaptcha) {
817                                        $recaptcha.setAttribute("required", "required");
818                                    }
819                                    //                                const $form = document.querySelector('form');
820                                    //                                $form.addEventListener('submit', (event) = > {
821                                    //                                event.preventDefault();
822                                    //                                console.log('prevented submit by code for demo');
823                                    //                                });
824                                };
825
826                                    function recaptcha_callback() {
827                                        var noDis = true;
828                                        jQuery.each(jQuery('#formportfolio *[required]'), function (index, value) {
829                                            if (value.value == '' && value.type != "checkbox") {
830                                                noDis = false;
831                                                jQuery(value).parent().parent().addClass('error')
832                                            } else {
833                                                if (jQuery(value).parent().parent().hasClass('error')) {
834                                                    jQuery(value).parent().parent().removeClass('error')
835                                                }
836                                                jQuery(value).parent().parent().addClass('focus')
837                                            }
838                                            if (value.type == "checkbox") {
839                                                if (jQuery(value).prop('checked') != true) {
840                                                    noDis = false;
841                                                    jQuery('.check-input-error').fadeIn();
842                                                } else {
843                                                    jQuery('.check-input-error').fadeOut();
844                                                }
845                                            }
846
847                                        });
848                                        if (noDis == true) {
849                                            jQuery('#but').removeClass('btn-disable')
850                                        } else {
851                                            jQuery('#but').addClass('btn-disable')
852                                        }
853                                        localStorage.setItem('capcha', 1);
854                                    }
855                                    window.recaptcha_callback = recaptcha_callback;
856
857                                        jQuery(document).ready(function ($) {
858
859                                            jQuery(document).on('keyup', 'input[type="tel"]', function () {
860
861                                                    let numbers = $(this).val().replace(/\D/g, '');
862
863                                                    // убираем первую 7 или 8
864                                                    if (numbers.startsWith('7')) {
865                                                        numbers = numbers.substring(1);
866                                                    }
867
868                                                    if (numbers.startsWith('8')) {
869                                                        numbers = numbers.substring(1);
870                                                    }
871
872                                                    // максимум 10 цифр
873                                                    numbers = numbers.substring(0, 10);
874
875                                                    let result = '+7';
876
877                                                    if (numbers.length > 0) {
878                                                        result += '(' + numbers.substring(0, 3);
879                                                    }
880
881                                                    if (numbers.length >= 4) {
882                                                        result += ')' + numbers.substring(3, 10);
883                                                    }
884
885                                                    if(numbers.length < 10) {
886                                                        jQuery('#but').addClass('btn-disable')
887                                                        $(this).parent().parent().addClass('error')
888                                                        $(this).val('');
889                                                    } else {
890                                                        jQuery('#but').removeClass('btn-disable')
891                                                        $(this).parent().parent().removeClass('error')
892                                                    }
893
894                                                    $(this).val(result);
895
896
897                                            });
898
899                                            jQuery(document).on('keyup', 'input[type="text"]', function () {
900
901                                                $(this).parent().parent().removeClass('error')
902
903                                            });
904
905                                            jQuery(document).on('keyup', 'textarea', function () {
906
907                                                $(this).parent().parent().removeClass('error')
908
909                                            });
910
911                                            
912
913
914
915
916                                        });
917                                    });
918                                    });
919
920                              
921
922
923                                } else {
924                                    // Fallback: ждем загрузки jQuery
925                                    (function() {
926                                        function loadScripts() {
927                                            if (typeof jQuery !== 'undefined') {
928                                                jQuery(function ($) {
929                                                    // Весь код скрипта здесь (копия выше)
930                                                    $('.file-input2').on('change', () => {
931                                                    });
932                                                    $(".call_me form").submit(function (e) {
933                                                        e.preventDefault();
934                                                        // Проверяем, что reCAPTCHA пройдена
935                                                        if (localStorage.getItem('capcha') != 1) {
936                                                            return false;
937                                                        }
938                                                        // Проверяем, что кнопка не заблокирована
939                                                        if ($('#but').hasClass('btn-disable')) {
940                                                            return false;
941                                                        }
942                                                        $(this).find('input[type="hidden"], input[type="file"], input[type="text"], input[type="tel"], input[type="email"], textarea').each(function () {
943                                                            var id = $(this).attr('name');
944                                                            var value = $(this).val();
945                                                            localStorage.setItem(id, value);
946                                                        });
947                                                        localStorage.setItem('capcha', 0);
948                                                        window.location.href = '/kontakty-komanda/';
949                                                        return false;
950                                                    });
951                                                    let captcha = false;
952                                                    $("#slider-range-max").slider({
953                                                        range: "max", min: 500000, max: 2500000, value: 1700000,
954                                                        slide: function (event, ui) {
955                                                            $("#range-inp").val(ui.value);
956                                                        }
957                                                    });
958                                                    $("#range-inp").val('');
959                                                    $('input[name="uploaded_file[]"]').on('change', async function () {
960                                                        var name = $(this).attr('name');
961                                                        var val = $(this).val();
962                                                        if (name == 'uploaded_file[]') {
963                                                            let myArr = new Array();
964                                                            if($('input[name="uploaded_file[]"]').get(0).files.length>0){
965                                                                var files = $('input[name="uploaded_file[]"]').get(0).files;
966                                                                var r = await $.each(files, async function(){
967                                                                    const toBase64 = file => new Promise((resolve, reject) => {
968                                                                        const reader = new FileReader();
969                                                                        reader.readAsDataURL(file);
970                                                                        reader.onload = () => resolve(reader.result);
971                                                                        reader.onerror = error => reject(error);
972                                                                    });
973                                                                    var base64 = await toBase64(this);
974                                                                    myArr.push(this.name+'~|~|~'+base64);
975                                                                    localStorage.setItem('files', JSON.stringify(myArr));
976                                                                });
977                                                            }else{
978                                                                localStorage.setItem('files',JSON.stringify(myArr));
979                                                            }
980                                                        } else {
981                                                            localStorage.setItem($(this).attr('name'), $(this).val());
982                                                        }
983                                                    });
984                                                    $('#formportfolio *[required]').on('change', function () {
985                                                        if (window.localStorage.getItem('capcha') == 1) {
986                                                            var noDis = true;
987                                                            $.each($('#formportfolio *[required]'), function (index, value) {
988                                                                if (value.value == '' && value.type != "checkbox") {
989                                                                    noDis = false;
990                                                                    $(value).parent().parent().addClass('error')
991                                                                } else {
992                                                                    if ($(value).parent().parent().hasClass('error')) {
993                                                                        $(value).parent().parent().removeClass('error')
994                                                                    }
995                                                                    $(value).parent().parent().addClass('focus')
996                                                                }
997                                                                if (value.type == "checkbox") {
998                                                                    if ($(value).prop('checked') != true) {
999                                                                        noDis = false;
1000                                                                        $('.check-input-error').fadeIn();
1001                                                                    } else {
1002                                                                        $('.check-input-error').fadeOut();
1003                                                                    }
1004                                                                }
1005                                                            });
1006                                                            if (noDis == true) {
1007                                                                $('#but').removeClass('btn-disable')
1008                                                            } else {
1009                                                                $('#but').addClass('btn-disable')
1010                                                            }
1011                                                        }
1012                                                    });
1013                                                    jQuery(document).ready(function () {
1014                                                        var pageW = jQuery("body").outerWidth();
1015                                                        if (pageW <= 640) {
1016                                                            jQuery("#slider-range-max").slider({
1017                                                                range: "max", min: 500000, max: 1500000, value: 1000000,
1018                                                                slide: function (event, ui) {
1019                                                                    jQuery("#range-inp").val(ui.value);
1020                                                                }
1021                                                            });
1022                                                            jQuery("#range-inp").val('');
1023                                                        }
1024                                                    });
1025                                                    jQuery('document').ready(function () {
1026                                                        jQuery('#but').on('click', function () {
1027                                                            jQuery('input[required]').addClass('req');
1028                                                        });
1029                                                    });
1030                                                    jQuery('document').ready(function () {
1031                                                        jQuery('#but').on('click', function () {
1032                                                            jQuery('textarea[required]').addClass('req');
1033                                                        });
1034                                                    });
1035                                                    var but = document.getElementById('but');
1036                                                    if(document.body.contains(document.getElementById('chck'))){
1037                                                        document.getElementById('chck').onclick = function () {
1038                                                            // Кнопка может быть активирована только если reCAPTCHA пройдена
1039                                                            if (this.checked && localStorage.getItem('capcha') == 1) {
1040                                                                // Проверяем все обязательные поля перед активацией
1041                                                                var noDis = true;
1042                                                                jQuery.each(jQuery('#formportfolio *[required]'), function (index, value) {
1043                                                                    if (value.value == '' && value.type != "checkbox") {
1044                                                                        noDis = false;
1045                                                                    }
1046                                                                });
1047                                                                if (noDis) {
1048                                                                    but.classList.remove('btn-disable');
1049                                                                } else {
1050                                                                    but.classList.add('btn-disable');
1051                                                                }
1052                                                            } else {
1053                                                                but.classList.add('btn-disable');
1054                                                            }
1055                                                        }
1056                                                    }
1057                                                    function viewdiv(id) {
1058                                                        var el = document.getElementById(id);
1059                                                        var link = document.getElementById('toggleLink');
1060                                                        if (el.style.display == "block") {
1061                                                            el.style.display = "none";
1062                                                            link.innerText = link.getAttribute('data-text-hide');
1063                                                        } else {
1064                                                            el.style.display = "block";
1065                                                            link.innerText = link.getAttribute('data-text-show');
1066                                                        }
1067                                                    }
1068                                                    window.onload = function () {
1069                                                        localStorage.setItem('capcha', 0);
1070                                                        // Убеждаемся, что кнопка заблокирована при загрузке
1071                                                        jQuery('#but').addClass('btn-disable');
1072                                                        var $recaptcha = document.querySelector('#g-recaptcha-response');
1073                                                        if ($recaptcha) {
1074                                                            $recaptcha.setAttribute("required", "required");
1075                                                        }
1076                                                    };
1077                                                    function recaptcha_callback() {
1078                                                        var noDis = true;
1079                                                        jQuery.each(jQuery('#formportfolio *[required]'), function (index, value) {
1080                                                            if (value.value == '' && value.type != "checkbox") {
1081                                                                noDis = false;
1082                                                                jQuery(value).parent().parent().addClass('error')
1083                                                            } else {
1084                                                                if (jQuery(value).parent().parent().hasClass('error')) {
1085                                                                    jQuery(value).parent().parent().removeClass('error')
1086                                                                }
1087                                                                jQuery(value).parent().parent().addClass('focus')
1088                                                            }
1089                                                            if (value.type == "checkbox") {
1090                                                                if (jQuery(value).prop('checked') != true) {
1091                                                                    noDis = false;
1092                                                                    jQuery('.check-input-error').fadeIn();
1093                                                                } else {
1094                                                                    jQuery('.check-input-error').fadeOut();
1095                                                                }
1096                                                            }
1097                                                        });
1098                                                        if (noDis == true) {
1099                                                            jQuery('#but').removeClass('btn-disable')
1100                                                        } else {
1101                                                            jQuery('#but').addClass('btn-disable')
1102                                                        }
1103                                                        localStorage.setItem('capcha', 1);
1104                                                    }
1105
1106                                                    console.log('ggggg2222')
1107
1108                                                    document.getElementById('phone').addEventListener('input', function () {
1109
1110                                                        console.log('phhhh')
1111
1112                                                        // оставляем только цифры
1113                                                        let numbers = this.value.replace(/\D/g, '');
1114
1115                                                        // убираем первую 7 или 8
1116                                                        if (numbers.startsWith('7')) {
1117                                                            numbers = numbers.substring(1);
1118                                                        }
1119
1120                                                        if (numbers.startsWith('8')) {
1121                                                            numbers = numbers.substring(1);
1122                                                        }
1123
1124                                                        // максимум 10 цифр
1125                                                        numbers = numbers.substring(0, 10);
1126
1127                                                        // форматирование
1128                                                        let result = '+7';
1129
1130                                                        if (numbers.length > 0) {
1131                                                            result += '(' + numbers.substring(0, 3);
1132                                                        }
1133
1134                                                        if (numbers.length >= 4) {
1135                                                            result += ')' + numbers.substring(3, 10);
1136                                                        }
1137
1138                                                        this.value = result;
1139                                                        });
1140                                                });
1141                                            } else {
1142                                                setTimeout(loadScripts, 50);
1143                                            }
1144                                        }
1145                                        loadScripts();
1146                                    })();
1147                                }
1148                            </script>
1148
1149                            <input type="checkbox" value="" required="" id="chck">
1150                            <label for="chck">
1151                                <div class="check">
1152                                    <svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check"><polyline points="20 6 9 17 4 12"></polyline></svg>
1153                                </div>
1154                                <span>Согласен с условиями обработки&nbsp;<a target="_blank" alt="https://wnfx.ru/privacy-policy/" href="https://wnfx.ru/soglasie-na-obrabotku-dannyh-s-ispolzovaniem-cookie-fajlov-i-analogichnyh-tehnologij/">персональных данных</a></span>
1155
1156                                
1157                            </label>
1158                            <p class="check-input-error">Для отправки нажмите чекбокс с условиями</p>
1159                            <div class="btns-bl capcha-row">
1160                                
1161
1162                                <div class="captcha">
1163
1164
1165                                    <!-- <div style="margin-top: -12px;transform: scale(0.7);transform-origin: 0;" class="g-recaptcha" data-callback="recaptcha_callback"  data-sitekey="6LcVbX4sAAAAAH5vImVurortKTlN-TxaoZlfobZg"></div>
1166                                    data-expired-callback="captchaExpired" 
1167                                    -->
1168
1169                                    <div
1170                                        class="smart-captcha"
1171                                        data-sitekey="ysc1_pawzHEVYBamXYiJWXuYpB2fZcDyCtq8HcoXlZ6NF16e39470"
1172                                        data-callback="recaptcha_callback"
1173                                        data-hl="ru">
1174                                    </div>
1175
1176
1177                                </div>
1178
1179                                <button id="but" class="btn btn-disable" style="margin-top:20px;" type="submit">Отправить</button>
1180
1181                                <input type="hidden" name="link" value="https://wnfx.ru/portfolio/">
1182                        </form>
1183                    </div>
1184                </div>
1185            </div>
1186        </div>
1187    </div>
1188    <style>
1189
1190        .lbl.name{
1191            text-transform: uppercase;
1192        }
1193    
1194        .smart-captcha {
1195            width:300px;
1196        }
1197
1198        .capcha-row {
1199            display:flex;
1200            flex-direction:column;
1201        }
1202
1203        .capcha-row #but {
1204            width:300px;
1205        }
1206
1207        @media screen and (max-width:1024px){
1208            .btns-bl.capcha-row{
1209                display: flex;
1210            }
1211            .files-list {
1212                position: relative;
1213                top: 0;
1214            }
1215            .about-s.mg h2 {
1216                width: 30%;
1217            }
1218            .about-s.mg .txt {
1219                width: 70%;
1220            }
1221            #but{
1222                font-weight: 600;
1223                font-size: 12px;
1224                line-height: 14px;
1225                padding: 5px 20px;
1226                min-width: unset;
1227                min-height: unset;
1228                width: 110px;
1229                height: 27px;
1230            }
1231            .captcha{
1232                width: 105px;
1233            }
1234            .g-recaptcha {
1235                margin-top: -25px!important;
1236                transform: scale(0.36) !important;
1237            }
1238      
1239            label[for="chck"] {
1240                display: flex;
1241                align-items: center;
1242                font-size: 13px;
1243            }
1244            label[for="chck"] a{
1245                color: #2F80ED;
1246            }
1247        }
1248        .error textarea {
1249            border-color: red;
1250        }
1251        @media screen and (max-width: 640px) {
1252            .inFileBox .file-inp {
1253                margin: -2rem 0 4rem;
1254            }
1255        }
1256        @media screen and (max-width:576px){
1257            .lbl{
1258                padding-left: 29px;
1259            }
1260            .inFileBox .file-inp .lbl {
1261                padding-left: 0;
1262            }
1263            .btns-bl.capcha-row {
1264                display: flex;
1265                flex-direction: column;
1266            }
1267            #but {
1268                order: 2;
1269                width: 200px;
1270                height: 50px;
1271                font-weight: 600;
1272                font-size: 17px;
1273                line-height: 14px;
1274
1275            }
1276            .g-recaptcha {
1277                margin-top: 0px!important;
1278                transform: scale(.655555) !important;
1279            }
1280            .files-list {
1281                position: relative;
1282                top: -30px;
1283                margin-bottom: 39px;
1284            }
1285            /* .smart-captcha {
1286                margin-top: -25px!important;
1287                transform: scale(0.63) !important;
1288            } */
1289        }
1290		
1291		
1292		
1293				/* блок Расскажите про свой проект - правки */
1294		.project-form .check {
1295			border-color: #000000 !important;
1296		}
1297		input:-internal-autofill-selected {
1298			background-color: none !important;
1299		}
1300		input:-webkit-autofill, 
1301		input:-webkit-autofill:hover,  
1302		input:-webkit-autofill:focus,  
1303		input:-webkit-autofill:active  { 
1304			transition: background-color 5000s ease-in-out 0s; 
1305			-webkit-box-shadow: 0 0 0px 40rem #ffff inset;
1306		}
1307		.file-inp {
1308			color: #2ec6dd;
1309		}
1310		.chck span {
1311			color: #2ec6dd;
1312		}
1313		label[for="chck"] a {
1314			color: #2ec6dd;
1315		}
1316		/* исправление логики для всех полей */
1317		#formportfolio .label_top_blue {
1318			position: absolute;
1319			z-index: 2;
1320			top: 0px;
1321			font-size: 13px;
1322			line-height: 14px;
1323			color: #2ec6dd;
1324		}
1325		#formportfolio .label_bottom_gray {
1326			position: absolute;
1327			top: 16px;
1328			font-size: 18px;
1329			line-height: 24px;
1330			color: rgba(0, 0, 0, 0.54);
1331		}
1332		#formportfolio .label_top_red {
1333			position: absolute;
1334			z-index: 2;
1335			top: 0px;
1336			font-size: 13px;
1337			line-height: 14px;
1338			color: red !important;
1339			opacity: 0.87;
1340		}
1341		#formportfolio .label_bottom_red {
1342			position: absolute;
1343			top: 16px;
1344			font-size: 18px;
1345			line-height: 24px;
1346			color: red;
1347		}
1348		#formportfolio .block_red {
1349			border-bottom: 1px solid red !important;
1350		}
1351		#formportfolio .block_blue {
1352			border-bottom: 1px solid #2ec6dd !important;
1353		}
1354		#formportfolio .input_blue {
1355			border-bottom: 1px solid #2ec6dd !important;
1356			color: rgba(0, 0, 0, 0.54) !important;
1357			-webkit-text-fill-color: rgba(0, 0, 0, 0.54) !important;
1358		}
1359		#formportfolio .input_red {
1360			border-bottom: 1px solid red !important;
1361			color: red !important;
1362			-webkit-text-fill-color: red !important;			
1363		}
1364		#formportfolio .input_gray {
1365			border-bottom: 1px solid rgba(0, 0, 0, 0.54) !important;
1366			-webkit-text-fill-color: rgba(0, 0, 0, 0.54) !important;
1367		}
1368
1369		/*
1370		#formportfolio .p_error {
1371			position: static;
1372		}
1373		#formportfolio .label_error {
1374			color: red;
1375		}*/
1376		
1377		#buyproject_message_label {
1378			padding-top: 12px;
1379		}
1380		/* # исправление логики для всех полей */		
1381	
1382	
1383		@media (max-width: 1169px)
1384		{
1385			/* .project-form .check {
1386				margin-top: -25px;
1387			} */
1388		}
1389		
1390		@media (max-width: 640px)
1391		{
1392			#buyproject_message_label {
1393				padding-top: 10px;
1394			}
1395			.file-btn-bl {
1396				bottom: 10px;
1397			}
1398			.site-footer .h-1 span {
1399				font-size: 36px;
1400			}
1401		}
1402		/* # блок Расскажите про свой проект - правки */
1403    </style>
1404
1405<script>
1406    if (typeof waitForSwiperAndJQuery !== 'undefined') {
1407        waitForSwiperAndJQuery(function() {
1408            var script = document.createElement('script');
1409            script.src = 'https://wnfx.ru/wp-content/themes/winfox/js/footer-buyproject.js';
1410            document.body.appendChild(script);
1411        });
1412    } else {
1413        // Fallback: ждем загрузки jQuery
1414        (function() {
1415            function loadScript() {
1416                if (typeof jQuery !== 'undefined') {
1417                    var script = document.createElement('script');
1418                    script.src = 'https://wnfx.ru/wp-content/themes/winfox/js/footer-buyproject.js';
1419                    document.body.appendChild(script);
1420                } else {
1421                    setTimeout(loadScript, 50);
1422                }
1423            }
1424            loadScript();
1425        })();
1426    }
1427
1428    
1429    document.querySelector('.buy-project').addEventListener('click', function(e) {
1430
1431        e.preventDefault();
1432        e.stopPropagation();
1433        e.stopImmediatePropagation();
1434
1435        const target = document.querySelector('#buy-project');
1436
1437        const offset = 120;
1438
1439        const targetPosition =
1440            target.getBoundingClientRect().top +
1441            window.pageYOffset -
1442            offset;
1443
1444        window.scrollTo({
1445            top: targetPosition,
1446            behavior: 'smooth'
1447        });
1448
1449        });
1450    
1451</script>
1451
1452        </div>
1453    </section>
1454</div>
1455<!-- POPUPS -->
1456<div class="popups-bg"></div>
1457<div class="popups-wrap"></div>
1458<span class="up-link"></span>
1459</div><!-- ./page-width -->
1460<footer class="site-footer">
1461    <div class="page-bl">
1462        <div class="foot-main">
1463            <div class="fl-row">
1464                <div class="col">
1465                    <h2 class="h-1"><span>Есть проект?</span> Напишите нам!</h2>
1466                    <p><a href="mailto:[email protected]">[email protected]</a></p>
1467                    <p><a href="tel:+74993500779">+7 (499) 350-07-79</a></p>
1468                                                                <ul class="soc-nav">
1469                                                                                                                                                                                                                                                                                                                        <li>
1470                                        <a target="_blank" href="https://vk.com/winfoxin ">
1471                                            <img src="https://wnfx.ru/wp-content/uploads/2020/02/soc-3.svg" alt="">
1472                                        </a>
1473                                    </li>
1474                                                                                                                                                                                                                                                                                                                                                                                                                                                    <li>
1475                                        <a target="_blank" href="https://www.behance.net/WINFOX ">
1476                                            <img src="https://wnfx.ru/wp-content/uploads/2020/02/soc-6.svg" alt="">
1477                                        </a>
1478                                    </li>
1479                                                                                                                                                                                </ul>
1480                                    </div>
1481                <div class="col">
1482                    <div class="logo-wrap"><a class="logo" href="/"><img src="https://wnfx.ru/wp-content/themes/winfox/images/logo.png?v=4" alt=""></a></div>
1483                </div>
1484            </div>
1485        </div>
1486        <div class="foot-sub">
1487            <div class="fl-row">
1488                <div class="mobile-bl col">
1489                    <div class="foot-nav-wrap">
1490                        <ul>
1491                            <li id="menu-item-16798" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16798"><a href="https://wnfx.ru/o-kompanii/">О нас</a></li>
1492<li id="menu-item-17679" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17679"><a href="https://wnfx.ru/tekhpodderzhka-mobilnykh-prilozheniy/">Поддержка</a></li>
1493<li id="menu-item-16799" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-16799"><a href="/portfolio" aria-current="page">Портфолио</a></li>
1494                        </ul>
1495                        <ul>
1496                            <li id="menu-item-16802" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-16802"><a href="https://wnfx.ru/blog/">Блог</a></li>
1497<li id="menu-item-16803" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16803"><a href="https://wnfx.ru/contact/">Контакты</a></li>
1498<li id="menu-item-17527" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17527"><a href="/career">Карьера</a></li>
1499                        </ul>
1500                    </div>
1501                </div>
1502                <div class="col">
1503                    <p>ООО «Разумные решения», <br />
1504ИНН: 7725292963,<br />
1505115280, Москва, Ленинская Слобода 19, пом. 62/1</p>
1506                </div>
1507                <div class="col">
1508                    <div class="foot-nav">
1509                        <p>
1510                            <a target="_blank" rel="noopener noreferrer" href="https://wnfx.ru/wp-content/uploads/2026/07/WINFOX-presentation-7-26.pdf">Презентация</a>
1511                        </p>
1512                    </div> 
1513                </div>
1514                <div class="desktop-bl col">
1515                    <div class="foot-nav-wrap">
1516                        <ul>
1517                            <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16798"><a href="https://wnfx.ru/o-kompanii/">О нас</a></li>
1518<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17679"><a href="https://wnfx.ru/tekhpodderzhka-mobilnykh-prilozheniy/">Поддержка</a></li>
1519<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-16799"><a href="/portfolio" aria-current="page">Портфолио</a></li>
1520                        </ul>
1521                        <ul>
1522                            <li class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-16802"><a href="https://wnfx.ru/blog/">Блог</a></li>
1523<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16803"><a href="https://wnfx.ru/contact/">Контакты</a></li>
1524<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17527"><a href="/career">Карьера</a></li>
1525                        </ul>
1526                    </div>
1527                </div>
1528            </div>
1529        </div>
1530
1531        
1532    </div>
1533
1534        <div style="width:100%; margin-top:35px; background:#e2dcdc85; height:50px;">
1535        <div class="par-foot-pol" style="min-width: 260px;
1536                max-width: 1410px;
1537                width: auto;
1538                padding: 0 74px;
1539                margin: 0 auto; ">                    
1540                    <div class="foot-pol" style="display:flex; align-items:center; justify-content:space-between; font-size:13px; ">
1541
1542                    
1543                        <div>
1544                            <a href="https://wnfx.ru/svedeniya-ob-it-deyatelnosti/" target="_blank">Сведения об ИТ-деятельности</a>
1545                        
1546                        </div>
1547
1548                        <div>
1549                        <a href="https://wnfx.ru/privacy-policy/" target="_blank">Политика обработки персональных данных</a>
1550                        
1551                        </div>
1552                        <div>
1553                        <a href="https://wnfx.ru/cookies/" target="_blank">Политика использования cookie-файлов</a>
1554                        </div>
1555                        <div>
1556                        <a href="https://wnfx.ru/soglasie-na-obrabotku-dannyh-s-ispolzovaniem-cookie-fajlov-i-analogichnyh-tehnologij/" target="_blank">Согласие на обработку персональных данных</a>
1557                        </div>
1558                        <div>
1559                        <a href="https://wnfx.ru/rekvizity/" target="_blank">Реквизиты</a>
1560                        </div>
1561
1562                    </div>
1563
1564        </div>
1565    </div>
1566
1567       
1568    
1569
1570</footer>
1571
1572<script type='text/javascript' defer src='https://wnfx.ru/wp-content/themes/winfox/js/main.js?ver=1779977458'></script>
vendor: 1 bytes, line 1572
1572
1573<script type='text/javascript' defer src='https://wnfx.ru/wp-content/themes/winfox/js/MultiClamp.min.js?ver=1.0'></script>
1573
1574<!-- <link rel="stylesheet" media="all" href="https://wnfx.ru/wp-content/themes/winfox/style/fonts.css?v=1" type="text/css" /> -->
1575<script>
1576    if (typeof waitForSwiperAndJQuery !== 'undefined') {
1577        waitForSwiperAndJQuery(function() {
1578    
1579            jQuery(document).ready(function($) {
1580        //var email_mask = /^[a-z0-9_-]+@[a-z0-9-]+\.[a-z]{2,6}$/i;
1581        var email_mask = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
1582        $("input[type='email']").change(function() {
1583            if ( $(this).val().search(email_mask) == 0 ) {
1584                return true;
1585            } else {
1586                $(this).val('');
1587                $(this).closest('.inp-bl').addClass('error');
1588                return false;
1589            }
1590        });
1591        $("input[type='tel']").keypress(function(event){
1592          event = event || window.event;
1593          if (event.charCode!=17 && event.charCode!=91) {
1594              if (event.charCode && event.charCode!=0 && event.charCode!=46 && event.charCode!=43 && event.charCode!=45 && event.charCode!=40 && event.charCode!=41 && event.charCode!=32 && (event.charCode < 48 || event.charCode > 57) )
1595                return false;
1596            }
1597        });
1598        if ($('div').is('#attachment')) {
1599            var buttonfile = $('#attachment');
1600            new AjaxUpload(buttonfile, {
1601                action: '/wp-content/themes/winfox/attachment/attachment.php',
1602                data: {name: buttonfile.data('name')},
1603                name: buttonfile.data('name'),
1604                onSubmit: function(file, ext){
1605                    if (! (ext && /^(doc|docx|pdf|csv|xls|txt|ppt|pptx|xlsx)$/i.test(ext))){
1606                        alert('Ошибка! Недопустимый формат файла');
1607                        return false;
1608                    }
1609                    buttonfile.find('.attach-btn').addClass('as-loading');
1610                    buttonfile.find('.attach-btn').text('Загружаем');
1611                },
1612                onComplete: function(file, response){
1613                    setTimeout(function(){
1614                        response = JSON.parse(response);
1615                        var $val = buttonfile.find('input[name="uploaded_file"]').val();
1616                        buttonfile.find('input[name="uploaded_file"]').val($val+response.file+';');
1617                        var countFiles = buttonfile.find('input[name="uploaded_file"]').val().match(/;/g).length;
1618                        
1619                        buttonfile.find('.attach-btn').removeClass('as-loading');
1620                        buttonfile.find('.attach-btn').text('('+countFiles+') Добавить еще+');
1621                    }, 1000);
1622                }
1623            });
1624        }
1625            });
1626        });
1627    } else {
1628        // Fallback: ждем загрузки jQuery
1629        (function() {
1630            function loadScripts() {
1631                if (typeof jQuery !== 'undefined') {
1632                    // jQuery UI touch-punch больше не используется, так как jQuery UI не загружается
1633                    // var script = document.createElement('script');
1634                    // script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js';
1635                    // document.body.appendChild(script);
1636                    
1637                    jQuery(document).ready(function($) {
1638                        //var email_mask = /^[a-z0-9_-]+@[a-z0-9-]+\.[a-z]{2,6}$/i;
1639                        var email_mask = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
1640                        $("input[type='email']").change(function() {
1641                            if ( $(this).val().search(email_mask) == 0 ) {
1642                                return true;
1643                            } else {
1644                                $(this).val('');
1645                                $(this).closest('.inp-bl').addClass('error');
1646                                return false;
1647                            }
1648                        });
1649                        $("input[type='tel']").keypress(function(event){
1650                          event = event || window.event;
1651                          if (event.charCode!=17 && event.charCode!=91) {
1652                              if (event.charCode && event.charCode!=0 && event.charCode!=46 && event.charCode!=43 && event.charCode!=45 && event.charCode!=40 && event.charCode!=41 && event.charCode!=32 && (event.charCode < 48 || event.charCode > 57) )
1653                                return false;
1654                            }
1655                        });
1656                        if ($('div').is('#attachment')) {
1657                            var buttonfile = $('#attachment');
1658                            new AjaxUpload(buttonfile, {
1659                                action: '/wp-content/themes/winfox/attachment/attachment.php',
1660                                data: {name: buttonfile.data('name')},
1661                                name: buttonfile.data('name'),
1662                                onSubmit: function(file, ext){
1663                                    if (! (ext && /^(doc|docx|pdf|csv|xls|txt|ppt|pptx|xlsx)$/i.test(ext))){
1664                                        alert('Ошибка! Недопустимый формат файла');
1665                                        return false;
1666                                    }
1667                                    buttonfile.find('.attach-btn').addClass('as-loading');
1668                                    buttonfile.find('.attach-btn').text('Загружаем');
1669                                },
1670                                onComplete: function(file, response){
1671                                    setTimeout(function(){
1672                                        response = JSON.parse(response);
1673                                        var $val = buttonfile.find('input[name="uploaded_file"]').val();
1674                                        buttonfile.find('input[name="uploaded_file"]').val($val+response.file+';');
1675                                        var countFiles = buttonfile.find('input[name="uploaded_file"]').val().match(/;/g).length;
1676                                        
1677                                        buttonfile.find('.attach-btn').removeClass('as-loading');
1678                                        buttonfile.find('.attach-btn').text('('+countFiles+') Добавить еще+');
1679                                    }, 1000);
1680                                }
1681                            });
1682                        }
1683                    });
1684                } else {
1685                    setTimeout(loadScripts, 50);
1686                }
1687            }
1688            loadScripts();
1689        })();
1690    }
1691    
1692    // Код языкового переключателя - выполняется всегда, независимо от waitForSwiperAndJQuery
1693    (function() {
1694        function initLanguageSwitcher() {
1695            if (typeof jQuery === 'undefined') {
1696                setTimeout(initLanguageSwitcher, 100);
1697                return;
1698            }
1699            
1700            jQuery(function ($) {
1701                // Обработчик клика на выбор языка
1702                $('body').on('click', '.languages .l-choice span', function (e) {
1703                    e.stopPropagation(); // Предотвращаем всплытие события
1704                    e.preventDefault(); // Предотвращаем стандартное поведение
1705                    let lang = $(this).data('l');
1706                    var currentLang = $('.languages .selected span').text().toLowerCase();
1707                    if(lang != currentLang){
1708                        if(lang == 'ru'){                    
1709                            location.href = location.href.replace('wnfx.tech','wnfx.ru');
1710                        }else{
1711                            location.href = location.href.replace('wnfx.ru','wnfx.tech');
1712                        }
1713                    }else{
1714                        $('.languages .l-choice').fadeOut();
1715                    }            
1716                });
1717                
1718                // Обработчик клика на переключатель языков
1719                $('body').on('click', '.languages .selected', function (e) {
1720                    e.stopPropagation();
1721                    var $lChoice = $('.languages .l-choice');
1722                    var currentDisplay = $lChoice.css('display');
1723                    var isVisible = $lChoice.is(':visible');
1724                    
1725                    if(isVisible && currentDisplay !== 'none'){
1726                        $lChoice.fadeOut();
1727                    }else{
1728                        $lChoice.fadeIn();
1729                    }            
1730                });
1731                
1732                // Закрытие при клике вне элемента
1733                $(document).on('click', function(e) {
1734                    if (!$(e.target).closest('.languages').length) {
1735                        $('.languages .l-choice').fadeOut();
1736                    }
1737                });
1738            });
1739        }
1740        
1741        if (document.readyState === 'loading') {
1742            document.addEventListener('DOMContentLoaded', initLanguageSwitcher);
1743        } else {
1744            initLanguageSwitcher();
1745        }
1746    })();
1747    
1748    // Cookies код - тоже выносим из else
1749    (function() {
1750        function initCookies() {
1751            if (typeof jQuery === 'undefined') {
1752                setTimeout(initCookies, 100);
1753                return;
1754            }
1755            jQuery(function ($) {
1756                if (!window.localStorage.getItem('cookie-yes')) {
1757                    $('body').append('<div class="cookies">' +
1758                            '<div class="page-bl">' +
1759                            '<div class="text">' +
1760                            //'Мы используем cookie-файлы и аналогичные технологии: обязательные — для работы сайта и защиты форм с помощью Yandex SmartCaptcha, аналитические — для анализа посещаемости через Яндекс.Метрику и Вебвизор. Нажимая «Принять все», вы соглашаетесь на использование аналитических cookie. Ссылка на Политику использования cookie-файлов <a target="_blank" href="/cookies">здесь</a>' +
1761                            'Мы обрабатываем сookie
1761s, чтобы сделать наш сайт удобнее и персонализированее для вас. Ссылка на <a target="_blank" href="/cookies">Политику использования cookie-файлов</a>' + 
1762                            '</div>' +
1763                            '<div class="btn">' +
1764                            'Принять' +
1765                            '</div>' +
1766                            '</div>' +
1767                            '</div>');
1768                }
1769
1770                $('body').on('click', '.cookies .btn', function () {
1771                    localStorage.setItem('cookie-yes', 1);
1772                    $('.cookies').fadeOut();
1773                });
1774            });
1775        }
1776        
1777        if (document.readyState === 'loading') {
1778            document.addEventListener('DOMContentLoaded', initCookies);
1779        } else {
1780            initCookies();
1781        }
1782    })();
1783</script>
1783
1784
1785<script>(function() {
1786var _fbq = window._fbq || (window._fbq = []);
1787if (!_fbq.loaded) {
1788
1789}
1790_fbq.push(['addPixelId', '1386553528333806']);
1791})();
1792window._fbq = window._fbq || [];
1793window._fbq.push(['track', 'PixelInitialized', {}]);
1794</script>
1794
1795
1796
1797<div id="fb-root"></div>
1798
1799
1800
1801
1802
1803<script type="text/javascript">
1804    var fired = false;
1805
1806    window.addEventListener('scroll', () => {
1807        if (fired === false) {
1808            fired = true;
1809            
1810            setTimeout(() => {
1811                // Yandex metrika
1812                jQuery('body').append('<noscript><div><img src="https://mc.yandex.ru/watch/25608824" style="position:absolute; left:-9999px;" alt="" /></div></noscript>');
1813                // jQuery('body').append("
1813<script src=\"https://www.google.com/recaptcha/api.js\" async defer><\/script>");
1814                jQuery('body').append("
1814<script src=\"https://smartcaptcha.yandexcloud.net/captcha.js\" defer><\/script>");
1815               (function (d, w, c) {
1816                    (w[c] = w[c] || []).push(function() {
1817                        try {
1818                            w.yaCounter25608824 = new Ya.Metrika2({
1819                                id:25608824,
1820                                clickmap:true,
1821                                trackLinks:true,
1822                                accurateTrackBounce:true,
1823                                webvisor:true
1824                            });
1825                        } catch(e) { }
1826                    });
1827
1828                    var n = d.getElementsByTagName("script")[0],
1829                        s = d.createElement("script"),
1830                        f = function () { n.parentNode.insertBefore(s, n); };
1831                    s.type = "text/javascript";
1832                    s.async = true;
1833                    s.src = "https://mc.yandex.ru/metrika/tag.js";
1834
1835                    if (w.opera == "[object Opera]") {
1836                        d.addEventListener("DOMContentLoaded", f, false);
1837                    } else { f(); }
1838                })(document, window, "yandex_metrika_callbacks2");
1839
1840      
1841            }, 500);
1842         
1843        }
1844    });
1845    
1846</script>
1846
1847
1848<script type="text/javascript">
1849    ; (function (document, window) {
1850        function hidePreloader() {
1851            var page_preloader = document.getElementById('page-preloader');
1852            if (page_preloader) {
1853                page_preloader.style.opacity = 0;
1854                setTimeout(function() {
1855                    if (page_preloader.parentNode) page_preloader.remove();
1856                }, 300); // после окончания transition (250ms)
1857            }
1858        }
1859        // Ждём полной загрузки (включая стили, картинки), затем ещё 500ms — меньше мелькания
1860        if (document.readyState === 'complete') {
1861            setTimeout(hidePreloader, 200);
1862        } else {
1863            window.addEventListener('load', function() { setTimeout(hidePreloader, 200); });
1864        }
1865    }(document, window));
1866</script>
1866
1867
1868
1869</body>
1870</html><!-- WP Fastest Cache file was created in 0.39898204803467 seconds, on 30-09-26 17:13:22 --><!-- via php -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.