PageSourceSearch

https://salakhov-design.ru/projects/wellproducts

html salakhov-design.ru collected 2026-10-06 13:17:23 UTC 63,295 bytes, 1,324 lines download raw bytes

1<!DOCTYPE html>
2<html lang='en'>
3<head>
4<!-- This site was created in Taptop. https://taptop.pro/ -->
5<meta content="Taptop" name="generator"> 
6<meta charset="utf-8">
7<meta name="robots" content="all">
8<title>Wellproducts - разработка дизайна промо страницы</title>
9<!-- assets.top -->
10<meta name="yandex-verification" content="d62cafccd7db0ed2" />
11
12<link rel="icon" href="/favicon.svg" type="image/svg+xml">
13
14
15<meta property="og:type" content="website">
16<meta property="og:url" content="https://salakhov-design.ru/projects/wellproducts">
17<meta name="twitter:card" content="summary">
18<!-- /assets.top -->
19
20<meta name="description" content="Разработка дизайна промо страницы для производителя полезных напитков и батончиков Wellproducts">
21<meta name="keywords" content="">
22<meta name="viewport" content="width=device-width, initial-scale=1">
23<meta name="format-detection" content="telephone=no">
24
25
26<script>
27 var mapKeys = {
28     google: "",
29     yandex: ""
30 };
31 var mosaicDesignId = 30711309;
32 var mosaicDesignPrefix = 'i18df541t-1748959952';
33 var mosaicTimeZone = 'Europe/Moscow';
34</script>
34
35
36
37<link rel="stylesheet" href="/g/s3/mosaic/css/ms_site_default.css">
38<script src="/g/libs/jquery/1.10.2/jquery.min.js"></script>
38
39
40 			<link rel="stylesheet" href="/g/s3/mosaic/css/constructor/redesign/tt_default_styles.css">
41	    
41<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
41
42	
42<script>
43WebFont.load({
44	google: {
45		families: [
46			"&display=swap"
47		]}
48	});
49</script>
49
50<link rel="stylesheet" href="/t/v4089/images/mosaic/designs/shared-design-styles.css">
51<style>@font-face {font-family: 'GT Eesti Pro Display'; font-weight: 400;font-style: normal;src: url('/t/images/mosaic/fonts/GT Eesti Pro Display-400-normal-0.otf') format('opentype');}
52@font-face {font-family: 'GT Eesti Pro Display'; font-weight: 500;font-style: normal;src: url('/t/images/mosaic/fonts/GT Eesti Pro Display-500-normal-0.otf') format('opentype');}
53</style>				
54    
54<script src="/g/s3/mosaic/js/do/redesign/do.js?rnd=1791292643"></script>
54
55
56
57            <!-- 46b9544ffa2e5e73c3c971fe2ede35a5 -->
58            
58<script src='/assets/site/s3/js/lang/en.js'></script>
58
59            
59<script src='/assets/site/s3/js/common.min.js'></script>
59
60        
61<!--s3_require-->
62
63<!--/s3_require-->
64
65
66
67	<style>
68.about-content-image {
69  filter: grayscale(100%);
70  animation: toColor 1.2s ease-out forwards;
71  animation-timeline: view();
72  animation-range: entry 0% cover 85%;
73}
74
75@keyframes toColor {
76  to {
77    filter: grayscale(0%);
78  }
79}
80</style>
81
82
83<style>
84.preloader {
85  position: fixed;
86  inset: 0;
87  width: 100%;
88  height: 100vh;
89  height: 100dvh;
90  overflow: hidden;
91  background: #000;
92  z-index: 9999;
93  touch-action: none;
94}
95</style>
96
97
98<style>
99.split {
100  overflow: visible;
101}
102</style>
103
104<style>
105body > span:last-of-type {
106  display: none !important;
107}
108</style>
109
110
111<style>
112  .animate span {
113    color: #F0196D;
114    transition: color 0.3s ease;
115  }
116  .animate span.fixed {
117    color: #999999;
118  }
119</style>
120
121<style>
122  .split p {
123    text-indent: 1.5em; /* Красная строка */
124  }
125</style>
126
127
128
129<style>
130.allproject_card_item {
131  position: relative;
132  overflow: hidden;
133  background-color: transparent;
134  z-index: 1;
135}
136
137/* Эффект только для экранов больше 768px */
138@media (min-width: 768px) {
139  .allproject_card_item::before {
140    content: '';
141    position: absolute;
142    bottom: 0;
143    left: 0;
144    width: 100%;
145    height: 0;
146    background-color: #D2FA84;
147    transition: height 0.5s ease;
148    z-index: -1;
149  }
150
151  .allproject_card_item:hover::before {
152    height: 100%;
153  }
154}
155</style>
156
157<div id="awwwards" style="position: fixed; z-index: 999; transform: translateY(-50%); top: 50%;  right: 0"><a href="https://www.awwwards.com/sites/roman-salakhov-2" target="_blank"><svg width="53.08" height="171.358"><path class="js-color-bg" fill="white" d="M0 0h53.08v171.358H0z"></path><g class="js-color-text" fill="black"><path d="M20.048 153.585v-2.002l6.752-3.757h-6.752v-1.9h10.23v2.002l-6.752 3.757h6.752v1.9zM29.899 142.382a3.317 3.317 0 0 1-1.359 1.293c-.575.297-1.223.446-1.944.446-.721 0-1.369-.149-1.944-.446a3.317 3.317 0 0 1-1.359-1.293c-.331-.564-.497-1.232-.497-2.003 0-.769.166-1.437.497-2.002a3.332 3.332 0 0 1 1.359-1.294c.575-.297 1.224-.445 1.944-.445.722 0 1.369.148 1.944.445a3.326 3.326 0 0 1 1.359 1.294c.33.565.496 1.233.496 2.002.001.77-.166 1.438-.496 2.003m-1.703-3.348c-.435-.331-.967-.497-1.601-.497s-1.167.166-1.601.497c-.434.332-.65.78-.65 1.345s.217 1.014.65 1.346c.434.33.967.496 1.601.496s1.166-.166 1.601-.496c.434-.332.649-.78.649-1.346.001-.565-.215-1.013-.649-1.345M22.912 134.996v-1.812h1.185c-.43-.283-.752-.593-.973-.929-.219-.336-.329-.732-.329-1.19 0-.479.127-.902.38-1.272.254-.37.635-.633 1.141-.79-.478-.262-.851-.591-1.118-.985a2.221 2.221 0 0 1-.402-1.265c0-.682.2-1.218.599-1.607.4-.391.957-.585 1.668-.585h5.218v1.812H25.37c-.682 0-1.023.303-1.023.907 0 .467.264.85.789 1.146.527.299 1.286.446 2.28.446h2.865v1.813H25.37c-.682 0-1.023.303-1.023.906 0 .468.275.851.826 1.147.551.298 1.352.446 2.404.446h2.704v1.812h-7.369zM21.626 122.457c-.225.224-.502.336-.833.336s-.608-.112-.833-.336a1.128 1.128 0 0 1-.336-.833c0-.331.111-.609.336-.833.225-.225.502-.336.833-.336s.608.111.833.336c.225.224.337.502.337.833 0 .332-.112.608-.337.833m1.286-1.739h7.366v1.813h-7.366v-1.813zM22.912 118.668v-1.812h1.185a3.348 3.348 0 0 1-.951-1.009 2.434 2.434 0 0 1-.351-1.272c0-.681.19-1.229.57-1.644.38-.414.931-.621 1.651-.621h5.263v1.812h-4.722c-.418 0-.727.096-.92.285-.195.19-.293.447-.293.769 0 .302.116.58.351.833.233.254.577.458 1.03.613.453.156.992.234 1.615.234h2.938v1.812h-7.366zM29.833 109.129a3.33 3.33 0 0 1-1.432 1.169 4.535 4.535 0 0 1-1.805.373 4.537 4.537 0 0 1-1.807-.373c-.579-.248-1.057-.638-1.432-1.169s-.563-1.196-.563-1.995c0-.771.183-1.413.549-1.93a3.28 3.28 0 0 1 1.382-1.141 4.221 4.221 0 0 1 1.709-.364h.746v5.071c.447-.02.838-.183 1.168-.49.332-.307.498-.724.498-1.248 0-.41-.093-.754-.277-1.031-.186-.278-.473-.529-.863-.753l.542-1.462c.69.303 1.224.724 1.592 1.265.371.541.556 1.235.556 2.083 0 .799-.188 1.464-.563 1.995m-4.085-3.574c-.41.088-.746.261-1.009.52-.262.258-.395.61-.395 1.06 0 .428.137.784.409 1.067.272.282.604.458.994.525v-3.172zM29.833 100.878c-.375.531-.852.921-1.432 1.169a4.552 4.552 0 0 1-3.612 0c-.579-.248-1.057-.638-1.432-1.169s-.563-1.196-.563-1.995c0-.77.183-1.412.549-1.93a3.278 3.278 0 0 1 1.382-1.14 4.222 4.222 0 0 1 1.709-.365h.746v5.072a1.794 1.794 0 0 0 1.168-.49c.332-.307.498-.724.498-1.249 0-.41-.093-.753-.277-1.031-.186-.277-.473-.528-.863-.753l.542-1.462c.69.302 1.224.724 1.592 1.265.371.541.556 1.234.556 2.083 0 .799-.188 1.464-.563 1.995m-4.085-3.573c-.41.088-.746.261-1.009.519-.262.258-.395.611-.395 1.06 0 .429.137.784.409 1.067.272.282.604.458.994.526v-3.172zM35.481 16.926l-4.782 14.969h-3.266l-2.584-9.682-2.584 9.682h-3.268l-4.781-14.969h3.713l2.673 10.276 2.524-10.276h3.445l2.524 10.276 2.674-10.276zM37.979 27.083c1.426 0 2.495 1.068 2.495 2.495 0 1.425-1.069 2.495-2.495 2.495-1.425 0-2.495-1.07-2.495-2.495-.001-1.427 1.07-2.495 2.495-2.495"></path></g></svg></a></div>
158
159
160
161
162
163<!-- Yandex.Metrika counter -->
164<script type="text/javascript" >
vendor: 406 bytes, lines 164-171
164
165   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
166   m[i].l=1*new Date();
167   for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
168   k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
169   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
170
171   ym(
171101771828
vendor: 123 bytes, lines 171-176
171, "init", {
172        clickmap:true,
173        trackLinks:true,
174        accurateTrackBounce:true,
175        webvisor:true
176   });
177</script>
177
178<noscript><div><img src="https://mc.yandex.ru/watch/101771828" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
179<!-- /Yandex.Metrika counter -->
180
181
182
183</head>
184<body>
185<div class='mosaic-wrap'>
186<div class='root root--u-i18df541t' id='i18df541t_0'>
187<div class='pop-up pop-up--u-ibk6cj3z3' id='ibk6cj3z3_0'>
188<div class='pop-up__overlay' id='i80k0x72b_0'></div>
189<div class='pop-up__outside-close-button' id='i4ws59hcl_0'>
190
191  
192</div>
193<div class='pop-up__content pop-up__content--u-iwwja25if popup_container' id='iwwja25if_0'>
194<div class='pop-up__inside-close-button pop-up__inside-close-button--u-ip41xdiue popup_close_icon' id='ip41xdiue_0'>
195
196    
197</div>
198<div class='form form--u-i28wkxdqk form_content' id='i28wkxdqk_0'>
199<form action='#' class='form__state-default' id='i55m48kdk_0' data-s3-anketa-id='201649913'>
200<div class='text-title text-title--u-isyvq6d9b form_title' id='isyvq6d9b_0'>
201<span class='text-block-wrap-div'>Начать проект</span>
202</div>
203<div data-type-field='checkbox_group' data-field-position class='form__field form__field--u-iko6dkzg5 form__field--s2-iko6dkzg5' id='iko6dkzg5_0'>
204<div class='text-subtitle text-subtitle--u-imaobcxu0 label_input' id='imaobcxu0_0'>
205<span class='text-block-wrap-div'>Чем могу помочь?</span>
206</div>
207<div class='form__widget-group form__widget-group--u-i70rxuhu2' id='i70rxuhu2_0'>
208<label class='form__widget-item form__widget-item--u-i26yff0qp checkbox_item' id='i26yff0qp_0'>
209<input value='Сайт под ключ' type='checkbox' name='checkbox-ilhu29san' readOnly class='form__checkbox form__checkbox--u-ilhu29san' id='ilhu29san_0' >
210<span class='form__checkbox-styled form__checkbox-styled--u-ir06qcamb check' id='ir06qcamb_0'></span>
211<span class='form__label-text form__label-text--u-i0vswk77b checkbox_text' id='i0vswk77b_0'>
212<span class='text-block-wrap-div'>Сайт под ключ</span>
213</span>
214</label>
215<label class='form__widget-item form__widget-item--u-i26yff0qp checkbox_item' id='i26yff0qp_1'>
216<input value='Дизайн без верстки' type='checkbox' name='checkbox-ilhu29san' readOnly class='form__checkbox form__checkbox--u-ilhu29san' id='ilhu29san_1' >
217<span class='form__checkbox-styled form__checkbox-styled--u-ir06qcamb check' id='ir06qcamb_1'></span>
218<span class='form__label-text form__label-text--u-i0vswk77b checkbox_text' id='i0vswk77b_1'>
219<span class='text-block-wrap-div'>Дизайн без верстки</span>
220</span>
221</label>
222<label class='form__widget-item form__widget-item--u-i26yff0qp checkbox_item' id='i26yff0qp_2'>
223<input value='3d иллюстрации' type='checkbox' name='checkbox-ilhu29san' readOnly class='form__checkbox form__checkbox--u-ilhu29san' id='ilhu29san_2' >
224<span class='form__checkbox-styled form__checkbox-styled--u-ir06qcamb check' id='ir06qcamb_2'></span>
225<span class='form__label-text form__label-text--u-i0vswk77b checkbox_text' id='i0vswk77b_2'>
226<span class='text-block-wrap-div'>
2263d иллюстрации</span>
227</span>
228</label>
229</div>
230<div class='form__field-error' id='i8e7a1xqd_0'>
231<span class='text-block-wrap-div'>This field required</span>
232</div>
233</div>
234<div data-type-field='text' data-field-position='1' class='form__field form__field--u-izynmrhor input_group' id='izynmrhor_0'>
235<div class='text-subtitle text-subtitle--u-iyejl1yxu label_input' id='iyejl1yxu_0'>
236<span class='text-block-wrap-div'>Имя или название компании*</span>
237</div>
238<input placeholder='' type='text' class='form__input form__input--u-ieo6p6oex input_field' id='ieo6p6oex_0' >
239<div class='form__field-error form__field-error--u-imsistvfj' id='imsistvfj_0'>
240<span class='text-block-wrap-div'>This field required</span>
241</div>
242</div>
243<div data-type-field='email' data-field-position='2' class='form__field input_group form__field--u-iitu8ll77' id='iitu8ll77_0'>
244<div class='text-subtitle text-subtitle--u-ifg6qix0e label_input' id='ifg6qix0e_0'>
245<span class='text-block-wrap-div'>E-mail*</span>
246</div>
247<input placeholder='' type='email' class='form__input form__input--u-ick9dll68 input_field' id='ick9dll68_0' >
248<div class='form__field-error form__field-error--u-ijotx9gq1' id='ijotx9gq1_0'>
249<span class='text-block-wrap-div'>This field required</span>
250</div>
251</div>
252<div data-type-field='textarea' data-field-position='3' class='form__field input_group form__field--u-io9p32pjf' id='io9p32pjf_0'>
253<div class='text-subtitle text-subtitle--u-inltk3hss label_input' id='inltk3hss_0'>
254<span class='text-block-wrap-div'>Сообщение*</span>
255</div>
256<textarea placeholder='' class='form__textarea form__textarea--u-i6szhbnzl input_field text_area' id='i6szhbnzl_0'></textarea>
257<div class='form__field-error form__field-error--u-iwmo3chww' id='iwmo3chww_0'>
258<span class='text-block-wrap-div'>This field required</span>
259</div>
260</div>
261<button type='submit' class='submit_button submit_button--u-ieefr2ref form_button' id='ieefr2ref_0'>
262<span class='text-button text-button--u-i2rn2luts body_14-regular green_text' id='i2rn2luts_0'>
263<span class='text-block-wrap-div'>Отправить</span>
264</span>
265</button>
266<smart-captcha data-captcha="smart_captcha"
267     data-name="captcha"
268     data-sitekey="ysc1_cXzPM6RBdqTOJ6ay3nfp7e4Tgfpf19fHdtgoa1YGb29cf34e"
269     data-lang="en"
270     data-hide-shield="0"
271     data-invisible="1"></smart-captcha></form>
272<div class='form__state-success' id='iq1505ngs_0'>
273<div class='text text--u-i2378wyqr' id='i2378wyqr_0'>
274<span class='text-block-wrap-div'>Thank you!</span>
275</div>
276</div>
277<div class='form__state-error form__state-error--u-impngmqs8' id='impngmqs8_0'>
278<div class='form__text-error form__text-error--u-iqn2rfndc' id='iqn2rfndc_0'>
279<span class='text-block-wrap-div'>Something wrong.<br>Try again later</span>
280</div>
281</div>
282</div>
283</div>
284</div><nav class='div navbar div--u-i6jutdxee' id='i6jutdxee_0'>
285<div class='div div--u-iopmhwx7q navbar-container' id='iopmhwx7q_0'>
286<a href='/' data-action-element='' class='link-block logo' id='i3sdeglfp_0'>
287<div class='image header_logo image--u-isyt54jah' id='isyt54jah_0'>
288<img src='/thumb/2/KF-dkV_-swe1b8MkIMDkrw/640r480/d/belyi_logo.svg' alt='Белый лого' title='' data-size='0x0' data-origin-src='/thumb/2/KF-dkV_-swe1b8MkIMDkrw/640r480/d/belyi_logo.svg' class='image__img' id='ieh1xbig2_0' >
289</div>
290</a>
291<a href='https://t.me/+jBtkxCurjUYyMmM6' data-action-element='' target='_blank' class='link-block link-block--u-ibov5thq2' id='ibov5thq2_0'>
292<h1 class='text link_text-small' id='ij0cjfn7v_0'>
293<span class='text-block-wrap-div'>Мокапы </span>
294</h1>
295<div class='div tag' id='ifqh9frdn_0'>
296<div class='text tag_text' id='i9s6cg02q_0'>
297<span class='text-block-wrap-div'>Free</span>
298</div>
299</div>
300</a>
301<div class='div nav_right_content div--u-issldihgz' id='issldihgz_0'>
302<div class='menu menu--u-icuooib0t menu--s2-icuooib0t' id='icuooib0t_0'>
303<div class='menu__fixed-wrapper menu__fixed-wrapper--s2-ipp2sq07z' id='ipp2sq07z_0'>
304<div class='menu__scroll-wrapper menu__scroll-wrapper--u-i2nli5c0o menu__scroll-wrapper--s2-i2nli5c0o' id='i2nli5c0o_0'>
305<div class='menu__wrapper-lvl1 menu__wrapper-lvl1--u-i2a7s8fkm menu__wrapper-lvl1--s2-i2a7s8fkm' id='i2a7s8fkm_0'>
306<div class='menu__list-lvl1 menu__list-lvl1--u-i2ipxgtfm menu__list-lvl1--s2-i2ipxgtfm' id='i2ipxgtfm_0'>
307<div class='menu__item-lvl1 menu__item-lvl1--u-i3kzndju3 menu-item menu__item-lvl1--s2-i3kzndju3 ' id='i3kzndju3_0'>
308<a href='/main' target='' rel='' class='menu__link-lvl1 menu_link menu__link-lvl1--u-ihjdkk9ar' id='ihjdkk9ar_0'>
309<div class='menu__link-text link_text-m menu__link-text--u-iblq1q1es' id='iblq1q1es_0'>
310<span class='text-block-wrap-div'>Главная</span>
311</div>
312</a>
313</div>
314<div class='menu__item-lvl1 menu__item-lvl1--u-i3kzndju3 menu-item menu__item-lvl1--s2-i3kzndju3 ' id='i3kzndju3_1'>
315<a href='/all-projects' target='' rel='' class='menu__link-lvl1 menu_link menu__link-lvl1--u-ihjdkk9ar' id='ihjdkk9ar_1'>
316<div class='menu__link-text link_text-m menu__link-text--u-iblq1q1es' id='iblq1q1es_1'>
317<span class='text-block-wrap-div'>Мои работы</span>
318</div>
319</a>
320</div>
321<div class='menu__item-lvl1 menu__item-lvl1--u-i3kzndju3 menu-item menu__item-lvl1--s2-i3kzndju3 ' id='i3kzndju3_2'>
322<a href='https://salakhov-design.ru/#i2emq9ecu_0' target='' rel='' class='menu__link-lvl1 menu_link menu__link-lvl1--u-ihjdkk9ar' id='ihjdkk9ar_2'>
323<div class='menu__link-text link_text-m menu__link-text--u-iblq1q1es' id='iblq1q1es_2'>
324<span class='text-block-wrap-div'>Услуги и цены</span>
325</div>
326</a>
327</div>
328<div class='menu__item-lvl1 menu__item-lvl1--u-i3kzndju3 menu-item menu__item-lvl1--s2-i3kzndju3 ' id='i3kzndju3_3'>
329<a href='https://salakhov-design.ru/#i3r68emkg_0' target='' rel='' class='menu__link-lvl1 menu_link menu__link-lvl1--u-ihjdkk9ar' id='ihjdkk9ar_3'>
330<div class='menu__link-text link_text-m menu__link-text--u-iblq1q1es' id='iblq1q1es_3'>
331<span class='text-block-wrap-div'>Этапы разработки</span>
332</div>
333</a>
334</div>
335<div class='menu__item-lvl1 menu__item-lvl1--u-i3kzndju3 menu-item menu__item-lvl1--s2-i3kzndju3 ' id='i3kzndju3_4'>
336<a href='#io2r5gwnm_0' target='' rel='' class='menu__link-lvl1 menu_link menu__link-lvl1--u-ihjdkk9ar' id='ihjdkk9ar_4'>
337<div class='menu__link-text link_text-m menu__link-text--u-iblq1q1es' id='iblq1q1es_4'>
338<span class='text-block-wrap-div'>Контакты</span>
339</div>
340</a>
341</div>
342</div>
343<div class='text body_12-medium text--u-i664o4jp2' id='i664o4jp2_0'>
344<span class='text-block-wrap-div'>&#xA9; 2025 SalakhovDesign</span>
345</div>
346<div class='div social_buttons_wrapper div--u-ivlv9mlf1 div--u-i8k1s5u9a mobile' id='i8k1s5u9a_0'>
347<a href='https://www.behance.net/romansalakhov' data-action-element='' target='_blank' class='link-block social_button link-block--u-imkgeujnk' id='idczpk1ij_0'>
348<div class='text social_button_text text--u-ixn6awos3 text--u-ioo1rqbff' id='ioo1rqbff_0'>
349<span class='text-block-wrap-div'>Be</span>
350</div>
351</a>
352<a href='https://t.me/Roman_Salakhov' data-action-element='' target='_blank' class='link-block social_button link-block--u-ivg2jqcdv' id='ipwkxyb5e_0'>
353<div class='text social_button_text text--u-i8wb6djn0' id='ijggvawwj_0'>
354<span class='text-block-wrap-div'>Tg</span>
355</div>
356</a>
357<a href='https://dprofile.ru/romansalakhov' data-action-element='' target='_blank' class='link-block social_button link-block--u-iljj6srgz' id='i6p33k4n9_0'>
358<div class='text social_button_text text--u-isktshk32' id='iajk33iz6_0'>
359<span class='text-block-wrap-div'>Dp</span>
360</div>
361</a>
362</div>
363</div>
364</div>
365<div role='button' class='menu__close-button menu__close-button--u-iaj3agg85 menu__close-button--s2-iaj3agg85' id='iaj3agg85_0'></div>
366</div>
367<div role='button' class='menu__burger-button menu__burger-button--u-ivx8y78n6 menu_button-mobile menu__burger-button--s2-ivx8y78n6' id='ivx8y78n6_0'></div>
368<div class='menu__overlay' id='izgx5ueb2_0'></div>
369</div>
370<div class='div social_buttons_wrapper div--u-ivlv9mlf1' id='ivlv9mlf1_0'>
371<a href='https://www.behance.net/romansalakhov' data-action-element='' target='_blank' class='link-block social_button link-block--u-imkgeujnk' id='imkgeujnk_0'>
372<div class='text social_button_text text--u-ixn6awos3' id='ixn6awos3_0'>
373<span class='text-block-wrap-div'>Be</span>
374</div>
375</a>
376<a href='https://t.me/Roman_Salakhov' data-action-element='' target='_blank' class='link-block social_button link-block--u-ivg2jqcdv' id='ivg2jqcdv_0'>
377<div class='text social_button_text text--u-i8wb6djn0' id='i8wb6djn0_0'>
378<span class='text-block-wrap-div'>Tg</span>
379</div>
380</a>
381<a href='https://www.instagram.com/salakhov.webdesign' data-action-element='' target='_blank' class='link-block social_button link-block--u-iljj6srgz' id='iljj6srgz_0'>
382<div class='text social_button_text text--u-isktshk32' id='isktshk32_0'>
383<span class='text-block-wrap-div'>Inst</span>
384</div>
385</a>
386</div>
387<div href='https://t.me/Roman_Salakhov' data-action-element='ibk6cj3z3_0' role='button' class='link-block button_size-s link-block--u-iur25hvjb' id='iur25hvjb_0'>
388<div class='image image--u-ip9ip9366 btn-arrow' id='ip9ip9366_0'>
389<img src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' alt='clarity_child-arrow-line' title='' data-size='0x0' data-origin-src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' class='image__img' id='id65flo3x_0' >
390</div>
391<h1 class='text button_text-m text--u-ig2cmgeha' id='ig2cmgeha_0'>
392<span class='text-block-wrap-div'>Написать</span>
393</h1>
394</div>
395<div class='div new-button' id='inw976t1z_0'>
396<h1 class='text button_text-m text--u-i2luikkjl' id='i2luikkjl_0'>
397<span class='text-block-wrap-div'>Написать</span>
398</h1>
399<div class='div button-dot div--u-iolhbztfq' id='iolhbztfq_0'></div>
400<div class='div button-dot div--u-izn75timl' id='izn75timl_0'></div>
401<div class='div button-dot div--u-i9b1srn0r' id='i9b1srn0r_0'></div>
402<div class='div button-dot div--u-in2oh713v' id='in2oh713v_0'></div>
403</div>
404</div>
405</div>
406</nav><div class='div page_wrapper' id='iux7mcsty_0'>
407<div class='div div--u-i0dshpqmi section_project_page' id='i0dshpqmi_0'>
408<div class='div big_image_container' id='iwb5s7nkj_0'>
409<div class='image big_project_image image--u-ivgu0ajpz' id='ivgu0ajpz_0'>
410<img src='/d/8.webp' alt='' title='' class='image__img' id='iho43yf48_0' />
411</div>
412<div class='image marquee image--u-iespvs05y' id='iespvs05y_0'>
413<img src='/thumb/2/CmJ6CRPTKEMMJ0wd3WiWWA/640r480/d/scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scrol.svg' alt='SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL _ SCROLL' title='' data-size='0x0' data-origin-src='/thumb/2/CmJ6CRPTKEMMJ0wd3WiWWA/640r480/d/scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scroll_scrol.svg' class='image__img' id='i881dok4m_0' />
414</div>
415</div>
416<div class='div project_content' id='it5w8ejwo_0'>
417<div class='div left_project_content' id='i18i7d950_0'>
418<div class='div div--u-ig1pq6kk2 about_project_description' id='ig1pq6kk2_0'>
419<div class='div tags_container ' id='ifqr5qbqg_0'>
420<div class='div  tag' id='ijptyp73z_0'>
421<div class='text  tag_text' id='id8qjiat7_0'>
422<span class='text-block-wrap-div'>UI/UX</span>
423</div>
424</div>
425<div class='div  tag' id='ixnamlod5_0'>
426<div class='text  tag_text' id='ic03hl48f_0'>
427<span class='text-block-wrap-div'>WEB</span>
428</div>
429</div>
430</div>
431<div class='div about_project_text div--u-iosy5sm8m' id='iosy5sm8m_0'>
432<h2 class='text text--u-igmf0y3zv heading-2 large' id='igmf0y3zv_0'>
433<span class='text-block-wrap-div'>Wellproducts</span>
434</h2>
435<h1 class='text text--u-ih82z5p9s body_16-regular gray' id='ih82z5p9s_0'>
436<span class='text-block-wrap-div'>Разработка дизайна промо страницы для производителя полезных напитков и батончиков Wellproducts</span>
437</h1>
438</div>
439<div class='div about_project_bottom_content' id='iuebbfrsp_0'>
440<a href='https://www.behance.net/gallery/229328719/WellProducts-promo-page-for-drinks-and-bars' data-action-element='' target='_blank' class='link-block button_size-s  link-block--u-il22bsz6k' id='il22bsz6k_0'>
441<div class='image  image--u-ig948t01r' id='ig948t01r_0'>
442<img src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' alt='clarity_child-arrow-line' title='' data-size='0x0' data-origin-src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' class='image__img' id='irrq2d7st_0' />
443</div>
444<h1 class='text  button_text-m text--u-iifgr32d7' id='iifgr32d7_0'>
445<span class='text-block-wrap-div'>Web</span>
446</h1>
447</a>
448<a href='https://www.behance.net/gallery/229328719/WellProducts-promo-page-for-drinks-and-bars' data-action-element='' target='_blank' class='link-block button_size-s  link-block--u-i139ljshk' id='i139ljshk_0'>
449<div class='image  image--u-inbgrm86n' id='inbgrm86n_0'>
450<img src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' alt='clarity_child-arrow-line' title='' data-size='0x0' data-origin-src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' class='image__img' id='irjt2xc75_0' />
451</div>
452<h1 class='text  button_text-m text--u-iq8eha1ar' id='iq8eha1ar_0'>
453<span class='text-block-wrap-div'>Смотреть на Behance</span>
454</h1>
455</a>
456</div>
457</div>
458</div>
459<div class='div div--u-ib5jhjo1c right_project_content' id='ib5jhjo1c_0'>
460<div class='div div--u-iy5ov1yz3 about_project_images' id='iy5ov1yz3_0'>
461<div class='image image--u-iu16l0mbx about_project_image' id='iu16l0mbx_0'>
462<img src='/d/wellproducts_1.webp' alt='' title='' class='image__img' id='i241m6sep_0' />
463</div>
464</div>
465<div class='div div--u-i1ixa7d29 about_project_images' id='i1ixa7d29_0'>
466<div class='image image--u-i4l88x2gr about_project_image' id='i4l88x2gr_0'>
467<img src='/d/wellproducts_2.webp' alt='' title='' class='image__img image__img--s2-ibti119jg' id='ibti119jg_0' />
468</div>
469<div class='image image--u-i4xlo0pcg about_project_image' id='i4xlo0pcg_0'>
470<img src='/d/wellproducts_3.webp' alt='' title='' class='image__img' id='iqb3cco4b_0' />
471</div>
472</div>
473<div class='div div--u-ivprqo6rx about_project_images' id='ivprqo6rx_0'>
474<div class='image image--u-isseducov about_project_image' id='isseducov_0'>
475<img src='/d/wellproducts_4.webp' alt='' title='' class='image__img' id='i2javvpra_0' />
476</div>
477</div>
478<div class='div div--u-i1b4rtjz5 about_project_images' id='i1b4rtjz5_0'>
479<div class='image image--u-ignbp1soi about_project_image' id='ignbp1soi_0'>
480<img src='/d/wellproducts_5.webp' alt='' title='' class='image__img' id='ibh9ab272_0' />
481</div>
482</div>
483<div class='div div--u-ix77w669x about_project_images' id='ix77w669x_0'>
484<div class='image image--u-iu05b3s5b about_project_image' id='iu05b3s5b_0'>
485<img src='/d/wellproducts_6.webp' alt='' title='' class='image__img' id='iojuh9g28_0' />
486</div>
487</div>
488</div>
489</div>
490</div>
491</div>
492<footer class='div section_footer div--u-io2r5gwnm' id='io2r5gwnm_0'>
493<div class='image footer_logo image--u-iabzx6xhv' id='iabzx6xhv_0'>
494<img src='/thumb/2/LEC3aWI5St3v8k7WOFOktw/3000r3000/d/2026_retouch2.png' alt='2026 retouch2' title='' data-size='3000x3000' data-origin-src='/thumb/2/LEC3aWI5St3v8k7WOFOktw/3000r3000/d/2026_retouch2.png' class='image__img image__img--s2-ip02cinbg' id='ip02cinbg_0' >
495</div>
496<div class='div footer_container div--u-i8bj0jawn' id='i8bj0jawn_0'>
497<div class='div footer_top_content div--u-icw7eauot' id='icw7eauot_0'>
498<div class='div left_footer_content div--u-itq2iaw03' id='itq2iaw03_0'>
499<div class='text heading-3 text--u-im6fkdhn6 text-pink split' id='im6fkdhn6_0'>
500<span class='text-block-wrap-div'><span style="font-family:&quot;GT Eesti Pro Display&quot;"><span style="font-style:normal"><span style="font-weight:500"><span style="white-space:normal">Есть вопросы </span><span style="white-space:pre">
500или идея для сайта?</span><span style="white-space:normal"> Напишите мне - </span><span style="white-space:pre">я помогу</span><span style="white-space:normal"> реализовать ваш проект</span></span></span></span></span>
501</div>
502<div href='https://t.me/Roman_Salakhov' data-action-element='ibk6cj3z3_0' role='button' class='link-block button_size-s link-block--u-igxff8rna' id='igxff8rna_0'>
503<div class='image image--u-ipitcrw4p btn-arrow' id='ipitcrw4p_0'>
504<img src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' alt='clarity_child-arrow-line' title='' data-size='0x0' data-origin-src='/thumb/2/oLmtTm7eF-35IykN39-o9g/640r480/d/clarity_child-arrow-line.svg' class='image__img' id='ierhdnwb2_0' >
505</div>
506<h1 class='text button_text-m text--u-i8ci5nc03' id='i8ci5nc03_0'>
507<span class='text-block-wrap-div'>Обсудить проект</span>
508</h1>
509</div>
510</div>
511<div class='div right_footer_content div--u-i52y4d9jl' id='i52y4d9jl_0'>
512<div class='div footer_links_container div--u-ii0i9mmuy' id='ii0i9mmuy_0'>
513<a href='https://t.me/Roman_Salakhov' data-action-element='' target='_blank' class='link-block link_button-s link-block--u-i2j4i83i0' id='i2j4i83i0_0'>
514<h1 class='text link_text-small text--u-i0e54rszt' id='i0e54rszt_0'>
515<span class='text-block-wrap-div'>Telegram</span>
516</h1>
517<div class='image link_icon image--u-ijazvgp5x' id='ijazvgp5x_0'>
518<img src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' alt='icons8_up-arrow' title='' data-size='0x0' data-origin-src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' class='image__img' id='ifdtkiltk_0' >
519</div>
520</a>
521<a href='https://wa.clck.bar/79189400017' data-action-element='' target='_blank' class='link-block link_button-s link-block--u-i4bd4lna0' id='i4bd4lna0_0'>
522<h1 class='text link_text-small text--u-i0gzd6wgl' id='i0gzd6wgl_0'>
523<span class='text-block-wrap-div'>WhatsApp</span>
524</h1>
525<div class='image link_icon image--u-i4jfo9bp3' id='i4jfo9bp3_0'>
526<img src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' alt='icons8_up-arrow' title='' data-size='0x0' data-origin-src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' class='image__img' id='id3veuj4i_0' >
527</div>
528</a>
529<a href='https://www.instagram.com/salakhov.webdesign' data-action-element='' target='_blank' class='link-block link_button-s' id='ieoqkpzyj_0'>
530<h1 class='text link_text-small' id='ie5mb34mh_0'>
531<span class='text-block-wrap-div'>Instagr*m</span>
532</h1>
533<div class='image link_icon' id='iyijguog4_0'>
534<img src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' alt='icons8_up-arrow' title='' data-size='0x0' data-origin-src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' class='image__img' id='i4qu5zo24_0' >
535</div>
536</a>
537<a href='https://www.behance.net/romansalakhov' data-action-element='' target='_blank' class='link-block link_button-s link-block--u-i2ow6e3og' id='i2ow6e3og_0'>
538<h1 class='text link_text-small text--u-iziy8f6kf' id='iziy8f6kf_0'>
539<span class='text-block-wrap-div'>Behance</span>
540</h1>
541<div class='image link_icon image--u-i89b1ccsr' id='i89b1ccsr_0'>
542<img src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' alt='icons8_up-arrow' title='' data-size='0x0' data-origin-src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' class='image__img' id='ixlv04c2x_0' >
543</div>
544</a>
545<a href='https://dprofile.ru/romansalakhov' data-action-element='' target='_blank' class='link-block link_button-s link-block--u-ijydfws9t' id='ijydfws9t_0'>
546<h1 class='text link_text-small text--u-i0j7mp0en' id='i0j7mp0en_0'>
547<span class='text-block-wrap-div'>Dprofile</span>
548</h1>
549<div class='image link_icon image--u-i9hak54xi' id='i9hak54xi_0'>
550<img src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' alt='icons8_up-arrow' title='' data-size='0x0' data-origin-src='/thumb/2/1HzsXyRBoA2XI8ztNJpYAA/640r480/d/icons8_up-arrow.svg' class='image__img' id='i1a3rnej8_0' >
551</div>
552</a>
553</div>
554</div>
555</div>
556<div class='div div--u-i3uil0y80 footer_botom_content' id='i3uil0y80_0'>
557<div class='div left_footer_content div--u-ip864yxym bottom-footer-content' id='ip864yxym_0'>
558<div class='text body_12-medium text--u-i74wvodbj' id='i74wvodbj_0'>
559<span class='text-block-wrap-div'>&#xA9; 2026 SalakhovDesign</span>
560</div>
561<div class='div div--u-iancqbeun language_button_wrapper' id='iancqbeun_0'>
562<a href='https://salakhov-design.ru/en' data-action-element='' class='link-block link-block--u-i3g1qsujh language-button' id='i3g1qsujh_0'>
563<div class='div language_button-dot div--u-igwfcl5rg absolute' id='igwfcl5rg_0'></div>
564<div class='div social-button-text-wrapper active' id='i2fgmxnm3_0'>
565<div class='text text--u-i0d272xyr language-button-text' id='i0d272xyr_0'>
566<span class='text-block-wrap-div'>ru</span>
567</div>
568</div>
569<div class='div social-button-text-wrapper' id='ivknz05xo_0'>
570<div class='text text--u-i3hirvh4o language-button-text' id='i3hirvh4o_0'>
571<span class='text-block-wrap-div'>en</span>
572</div>
573</div>
574</a>
575</div>
576</div>
577<div class='div right_footer_content div--u-igt2ys45w bottom-footer-content right' id='igt2ys45w_0'>
578<a href='https://taptop.pro/' data-action-element='' target='_blank' class='link body_12-medium link--u-ibgy4hdql footer-link' id='ibgy4hdql_0'>
579<span class='text-block-wrap-div'>Сделано в Taptop</span>
580</a>
581<a href='/f/brif_na_razrabotku_saita_roman_salahov.docx?dl=1' data-action-element='' target='_blank' class='link body_12-medium link--u-iyagiad88 footer-link' id='iyagiad88_0'>
582<span class='text-block-wrap-div'>Скачать бриф</span>
583</a>
584<a href='/policy' data-action-element='' target='_blank' class='link body_12-medium link--u-i73c9yzs5 footer-link' id='i73c9yzs5_0'>
585<span class='text-block-wrap-div'>Конфиденциальность</span>
586</a>
587</div>
588</div>
589</div>
590</footer></div>
591</div>
592	
592<script src="https://unpkg.com/@studio-freight/lenis@latest"></script>
592
593    
593<script>
594        const lenis = new Lenis({
595            smooth: true
596        });
597
598        function raf(time) {
599            lenis.raf(time);
600            requestAnimationFrame(raf);
601        }
602
603        requestAnimationFrame(raf);
604    </script>
604
605    
606 
607
608
609  
609<script src="https://unpkg.com/@barba/core"></script>
609
610  
610<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js"></script>
610
611  
611<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrambleTextPlugin.min.js"></script>
611
612  
612<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/SplitText.min.js"></script>
612
613  
613<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollSmoother.min.js"></script>
613
614  
614<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollTrigger.min.js"></script>
614
615  
616  <!-- Splitting.js -->
617<script src="https://unpkg.com/splitting/dist/splitting.min.js"></script>
617
618
619<!-- Инициализация Splitting -->
620<script>Splitting();</script>
620
621  
622
623
624
625
626<script>
627  gsap.registerPlugin(SplitText);
628
629  document.addEventListener('DOMContentLoaded', () => {
630    const targets = document.querySelectorAll(".hex-animate");
631
632    const hexChars = "0123456789ABCDEF";
633
634    function randomHex() {
635      return hexChars[Math.floor(Math.random() * hexChars.length)];
636    }
637
638    function animateHexDecode(chars) {
639      chars.forEach((char, i) => {
640        let original = char.textContent;
641        let iterations = Math.floor(gsap.utils.random(10, 20));
642        let current = 0;
643
644        const scramble = setInterval(() => {
645          char.textContent = randomHex();
646          current++;
647
648          if (current >= iterations) {
649            clearInterval(scramble);
650            char.textContent = original;
651          }
652        }, gsap.utils.random(20, 50));
653      });
654    }
655
656    const observer = new IntersectionObserver((entries, obs) => {
657      entries.forEach(entry => {
658        if (entry.isIntersecting) {
659          const el = entry.target;
660          const split = new SplitText(el, { type: "chars" });
661          animateHexDecode(split.chars);
662          obs.unobserve(el);
663        }
664      });
665    }, {
666      threshold: 0.4
667    });
668
669    targets.forEach(el => observer.observe(el));
670  });
671</script>
671
672
673
674<script>
675  // Проверяем, является ли устройство мобильным (ширина меньше 480px)
676  const isMobileDevice = window.matchMedia("(max-width: 479px)").matches;
677  
678  // Если это не мобильное устройство, выполняем анимацию скролла
679  if (!isMobileDevice) {
680    const menuItems = document.querySelectorAll('.menu-item');
681    let lastScroll = 0;
682    let isScrollingDown = false;
683
684    // Инициализация: задаём начальные свойства
685    gsap.set(menuItems, { opacity: 1, y: 0 });
686
687    window.addEventListener('scroll', () => {
688      const currentScroll = window.scrollY || window.pageYOffset;
689      
690      if (currentScroll > lastScroll && !isScrollingDown) {
691        // Скролл вниз → скрываем меню
692        isScrollingDown = true;
693        hideMenuItems();
694      } else if (currentScroll < lastScroll && isScrollingDown) {
695        // Скролл вверх → показываем меню
696        isScrollingDown = false;
697        showMenuItems();
698      }
699      
700      lastScroll = currentScroll;
701    });
702
703    function hideMenuItems() {
704      gsap.to(menuItems, {
705        opacity: 0,
706        y: -20,
707        duration: 0.5,
708        stagger: 0.1, // задержка между элементами
709        ease: "power2.out"
710      });
711    }
712
713    function showMenuItems() {
714      gsap.to(menuItems, {
715        opacity: 1,
716        y: 0,
717        duration: 0.5,
718        stagger: 0.1,
719        ease: "power2.out"
720      });
721    }
722  }
723</script>
723
724
725
726
727<canvas id="networkCanvas"></canvas>
728
729<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
vendor: 1 bytes, line 729
729
730<script>
731  const canvas = document.getElementById('networkCanvas');
732  const ctx = canvas.getContext('2d');
733
734  let width = window.innerWidth;
735  let height = window.innerHeight;
736  canvas.width = width;
737  canvas.height = height;
738
739  const nodeDistance = 120;
740  const nodes = [];
741
742  for (let x = 0; x < width; x += nodeDistance) {
743    for (let y = 0; y < height; y += nodeDistance) {
744      nodes.push({ x, y, alpha: 0, pulse: 0 });
745    }
746  }
747
748  function dist(a, b) {
749    return Math.sqrt((a.x - b.x)**2 + (a.y - b.y)**2);
750  }
751
752  const maxLineDist = nodeDistance * 1.5;
753
754  const mouse = { x: -9999, y: -9999 };
755
756  function updateMousePos(e) {
757    mouse.x = e.pageX;
758    mouse.y = e.pageY;
759  }
760
761  window.addEventListener('mousemove', updateMousePos);
762
763  let pulseTime = 0;
764
765  function animate() {
766    ctx.clearRect(0, 0, width, height);
767
768    pulseTime += 0.025;
769
770    nodes.forEach(node => {
771      const dx = node.x - (mouse.x - window.pageXOffset);
772      const dy = node.y - (mouse.y - window.pageYOffset);
773      const distanceToMouse = Math.sqrt(dx * dx + dy * dy);
774
775      if (distanceToMouse < nodeDistance) {
776        node.alpha = Math.min(1, node.alpha + 0.05);
777        node.pulse = 0.75 + 0.25 * Math.sin(pulseTime * 2.5);
778      } else {
779        node.alpha = Math.max(0, node.alpha - 0.02);
780        node.pulse = 0;
781      }
782    });
783
784    for (let i = 0; i < nodes.length; i++) {
785      for (let j = i + 1; j < nodes.length; j++) {
786        const a = nodes[i];
787        const b = nodes[j];
788        const d = dist(a, b);
789        if (d < maxLineDist && a.alpha > 0 && b.alpha > 0) {
790          const lineAlpha = Math.min(a.alpha, b.alpha) * (1 - d / maxLineDist);
791          ctx.strokeStyle = `rgba(240, 25, 109, ${lineAlpha.toFixed(2)})`;
792          ctx.lineWidth = 1;
793          ctx.beginPath();
794          ctx.moveTo(a.x, a.y);
795          ctx.lineTo(b.x, b.y);
796          ctx.stroke();
797        }
798      }
799    }
800
801    nodes.forEach(node => {
802      if (node.alpha > 0) {
803        const intensity = node.alpha * node.pulse;
804        ctx.fillStyle = `rgba(240, 25, 109, ${intensity.toFixed(2)})`;
805        ctx.beginPath();
806        ctx.arc(node.x, node.y, 3, 0, Math.PI * 2);
807        ctx.fill();
808      }
809    });
810
811    requestAnimationFrame(animate);
812  }
813
814  animate();
815
816  window.addEventListener('resize', () => {
817    width = window.innerWidth;
818    height = window.innerHeight;
819    canvas.width = width;
820    canvas.height = height;
821  });
822</script>
822
823
824<style>
825  #networkCanvas {
826    position: fixed;
827    top: 0;
828    left: 0;
829    width: 100vw;
830    height: 100vh;
831    pointer-events: none;
832    z-index: 0;
833    background: transparent;
834  }
835</style>
836
837
838<script>
839  document.querySelectorAll('.product-card').forEach(card => {
840    let currentX = 50;
841    let currentY = 50;
842    let targetX = 50;
843    let targetY = 50;
844
845    const update = () => {
846      currentX += (targetX - currentX) * 0.1;
847      currentY += (targetY - currentY) * 0.1;
848
849      const rotateX = (currentY - 50) / -6; // меньше — мягче
850      const rotateY = (currentX - 50) / -6;
851      card.style.setProperty('--x', `${currentX}%`);
852      card.style.setProperty('--y', `${currentY}%`);
853      card.style.transform = `perspective(1200px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(1.02)`;
854
855      requestAnimationFrame(update);
856    };
857    update();
858
859    card.addEventListener('mousemove', e => {
860      const rect = card.getBoundingClientRect();
861      targetX = ((e.clientX - rect.left) / rect.width) * 100;
862      targetY = ((e.clientY - rect.top) / rect.height) * 100;
863    });
864
865    card.addEventListener('mouseleave', () => {
866      targetX = 50;
867      targetY = 50;
868      card.style.transform = 'perspective(800px) rotateX(0deg) rotateY(0deg) scale(1.4)';
869    });
870  });
871</script>
871
872
873
874<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
vendor: 1 bytes, line 874
874
875<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
875
876
877<script>
878gsap.registerPlugin(ScrollTrigger);
879
880if (window.innerWidth >= 480) {
881  document.querySelectorAll('.services_cards_container').forEach((container) => {
882    const cards = container.querySelectorAll('.product-card');
883
884    // Стартовое состояние
885    gsap.set(cards, {
886      x: '-120vw',
887      opacity: 0,
888      scale: 0.9
889    });
890
891    // Анимация появления (при входе в зону 10%)
892    ScrollTrigger.create({
893      trigger: container,
894      start: 'top 10%',
895      toggleActions: 'play none none none',
896      onEnter: () => {
897        gsap.to(cards, {
898          x: 0,
899          opacity: 1,
900          scale: 1,
901          duration: 1.2,
902          stagger: 0.1,
903          ease: 'power4.out'
904        });
905      }
906    });
907
908    // Анимация исчезновения (при обратной прокрутке вверх — на 30% раньше)
909    ScrollTrigger.create({
910      trigger: container,
911      start: 'top 10',
912      toggleActions: 'none none play none',
913      onLeaveBack: () => {
914        gsap.to(cards, {
915          x: '-120vw',
916          opacity: 0,
917          scale: 0.9,
918          duration: 1.2,
919          stagger: 0.1,
920          ease: 'power4.inOut'
921        });
922      }
923    });
924  });
925}
926</script>
926
927
928
929
930<script>
931  document.addEventListener("DOMContentLoaded", () => {
932    const el = document.querySelector(".animate");
933    if (!el) return;
934
935    const allSpans = [];
936
937    function wrapTextNodeWords(node) {
938      if (node.nodeType === Node.TEXT_NODE) {
939        const text = node.textContent;
940        const parts = text.split(/(\s+)/);
941
942        const fragment = document.createDocumentFragment();
943
944        parts.forEach(part => {
945          if (part.trim() === "") {
946            fragment.appendChild(document.createTextNode(part));
947          } else {
948            const span = document.createElement("span");
949            span.textContent = part;
950            fragment.appendChild(span);
951            allSpans.push(span);
952          }
953        });
954
955        node.parentNode.replaceChild(fragment, node);
956
957      } else if (node.nodeType === Node.ELEMENT_NODE) {
958        [...node.childNodes].forEach(child => wrapTextNodeWords(child));
959      }
960    }
961
962    // Чтобы не повторять анимацию при повторном появлении
963    let animated = false;
964
965    function animateWords() {
966      if (animated) return;
967      animated = true;
968
969      const shuffled = allSpans.slice().sort(() => Math.random() - 0.5);
970
971      const totalDuration = 1500;  // 1.5 секунды
972      const perWordMaxDelay = 500;
973
974      shuffled.forEach((span, i) => {
975        const baseDelay = (i / shuffled.length) * (totalDuration - perWordMaxDelay);
976        const randomDelay = Math.random() * perWordMaxDelay;
977        const delay = baseDelay + randomDelay;
978
979        setTimeout(() => {
980          span.classList.add("fixed");
981        }, delay);
982      });
983    }
984
985    wrapTextNodeWords(el);
986
987    // Создаем IntersectionObserver, чтобы запустить анимацию при появлении в viewport
988    const observer = new IntersectionObserver(entries => {
989      entries.forEach(entry => {
990        if (entry.isIntersecting) {
991          animateWords();
992          observer.disconnect(); // больше не нужно наблюдать
993        }
994      });
995    }, { threshold: 0.1 }); // Запускается, когда 10% элемента видимы
996
997    observer.observe(el);
998  });
999</script>
999
1000
1001
1002
1003
1004
1005
1006<script>
1007  gsap.registerPlugin(ScrollTrigger);
1008
1009  gsap.utils.toArray(".project-card").forEach((card) => {
1010    const image = card.querySelector(".project_card_image");
1011
1012    // Включить GPU-ускорение и задать начальные стили
1013    gsap.set(image, { scale: 1, willChange: "transform" });
1014    gsap.set(card, { willChange: "transform, opacity" });
1015
1016   
1017
1018    // Анимация карточки после залипания
1019    gsap.to(card, {
1020      scale: 0.7,
1021      opacity: 0.4,
1022      
1023      ease: "power1.out",
1024      scrollTrigger: {
1025        trigger: card,
1026        start: "top top",
1027        end: "bottom top",
1028        scrub: 1,
1029      }
1030    });
1031  });
1032</script>
1032
1033
1034
1035<script>
1036document.addEventListener('DOMContentLoaded', function() {
1037  document.querySelectorAll('.split').forEach(element => {
1038    SplitText.create(element, {
1039      type: "lines, words",
1040      mask: "lines", // можно оставить, если нужен эффект
1041      autoSplit: true,
1042      onSplit(self) {
1043        return gsap.from(self.words, {
1044          duration: 1.2,
1045          y: 50, // уменьшили
1046          x: () => gsap.utils.random(-10, 10),
1047          rotation: () => gsap.utils.random(-3, 3),
1048          scale: 0.95,
1049          autoAlpha: 0,
1050          stagger: 0.02,
1051          ease: "back.out(1.5)",
1052          scrollTrigger: {
1053            trigger: element,
1054            start: "top 80%",
1055            toggleActions: "play none none none"
1056          }
1057        });
1058      }
1059    });
1060  });
1061});
1062</script>
1062
1063
1064
1065
1066<script type="module">
1067import { gsap } from "https://cdn.skypack.dev/gsap";
1068
1069window.addEventListener('DOMContentLoaded', () => {
1070  const preloader = document.querySelector('.preloader');
1071  const mainContent = document.querySelector('#main-content');
1072
1073  // === Настройки пикселей ===
1074  const pixels = [];
1075  const total = 40;
1076  const pixelSpacing = 4;
1077  const pixelWidth = (window.innerWidth / total) - pixelSpacing;
1078  const initialHeight = 4;
1079  const initialFilled = 8;
1080
1081  const fragment = document.createDocumentFragment();
1082  for (let i = 0; i < total; i++) {
1083    const p = document.createElement('div');
1084    Object.assign(p.style, {
1085      position: 'absolute',
1086      bottom: '0px',
1087      left: `${i * (pixelWidth + pixelSpacing)}px`,
1088      width: `${pixelWidth}px`,
1089      height: `${initialHeight}px`,
1090      background: '#D9FF9D',
1091      opacity: i < initialFilled ? 1 : 0,
1092      transform: 'scaleY(1)',
1093      transformOrigin: 'bottom'
1094    });
1095    fragment.appendChild(p);
1096    pixels.push(p);
1097  }
1098  preloader.appendChild(fragment);
1099
1100  // === Прогресс бар ===
1101  function animateProgressBar(onComplete) {
1102    let index = initialFilled;
1103    const step = () => {
1104      if (index >= pixels.length) {
1105        onComplete && onComplete();
1106        return;
1107      }
1108      gsap.to(pixels[index], {
1109        opacity: 1,
1110        duration: 0.05,
1111        ease: "power1.inOut",
1112        onComplete: () => {
1113          index++;
1114          requestAnimationFrame(step);
1115        }
1116      });
1117    };
1118    requestAnimationFrame(step);
1119  }
1120
1121  // === После полной загрузки ===
1122  window.addEventListener('load', () => {
1123    animateProgressBar(() => {
1124      gsap.to(pixels, {
1125        duration: 0.4,
1126        scaleY: window.innerHeight / initialHeight,
1127        stagger: { each: 0.01, from: "start" },
1128        ease: "sine.inOut",
1129        onComplete: () => {
1130          gsap.to(preloader, {
1131            duration: 0.9,
1132            y: '100%',
1133            ease: "power3.inOut",
1134            delay: 0.2,
1135            onComplete: () => {
1136              preloader.style.display = 'none';
1137              mainContent.style.display = 'block';
1138            }
1139          });
1140        }
1141      });
1142    });
1143  });
1144});
1145</script>
1145
1146
1147<script type="module">
1148import { gsap } from "https://cdn.skypack.dev/gsap";
1149
1150window.addEventListener('DOMContentLoaded', () => {
1151  const loadingText = document.querySelector('.preloader-text');
1152  if (!loadingText) return;
1153
1154  // Разбиваем текст по буквам
1155  const text = loadingText.textContent.trim();
1156  loadingText.innerHTML = "";
1157  const letters = text.split("").map(char => {
1158    const span = document.createElement("span");
1159    span.textContent = char;
1160    span.style.display = "inline-block";
1161    span.style.color = "#D9FF9D";
1162    loadingText.appendChild(span);
1163    return span;
1164  });
1165
1166  // Волновая анимация (запускается сразу)
1167  gsap.to(letters, {
1168    color: "#F0196D",
1169    y: -4,
1170    duration: 0.5,
1171    ease: "sine.inOut",
1172    stagger: {
1173      each: 0.07,
1174      yoyo: true,
1175      repeat: -1,
1176      from: "start"
1177    },
1178    yoyo: true,
1179    repeat: -1
1180  });
1181});
1182</script>
1182
1183
1184
1185
1186<script>
1187document.addEventListener('DOMContentLoaded', () => {
1188  const buttons = document.querySelectorAll('[class*="button_size-"]');
1189
1190  buttons.forEach((btn) => {
1191    const btnText = btn.querySelector('[class*="button_text-"]');
1192    const btnArrow = btn.querySelector('.btn-arrow');
1193    if (!btnText || !btnArrow) return;
1194
1195    const splitText = new SplitText(btnText, { type: 'chars' });
1196    const chars = splitText.chars;
1197    chars.forEach(c => c.style.display = 'inline-block');
1198
1199    gsap.set(chars, { color: '#fff' });
1200    gsap.set(btnArrow, { x: 0 });
1201
1202    btn.addEventListener('mouseenter', () => {
1203      const tl = gsap.timeline();
1204
1205      // Резкий толчок стрелки вправо и плавный возврат
1206      tl.to(btnArrow, {
1207        x: 4,                // смещение вправо на 4px
1208        duration: 0.12,      // быстрый резкий толчок
1209        ease: 'power1.out'
1210      })
1211      .to(btnArrow, {
1212        x: 0,                // плавное возвращение
1213        duration: 0.4,
1214        ease: 'power3.out'
1215      }, '+=0');             // сразу после толчка
1216
1217      // Анимация блика по буквам
1218      chars.forEach((char, i) => {
1219        const duration = 0.15 + i * 0.003;
1220        gsap.to(char, {
1221          color: '#F0196D',
1222          duration: duration,
1223          ease: 'sine.out',
1224          delay: i * 0.03
1225        });
1226        gsap.to(char, {
1227          color: '#fff',
1228          duration: duration,
1229          ease: 'sine.in',
1230          delay: i * 0.03 + 0.1
1231        });
1232      });
1233    });
1234
1235    btn.addEventListener('mouseleave', () => {
1236      gsap.to(btnArrow, {
1237        x: 0,
1238        duration: 0.25,
1239        ease: 'power2.inOut'
1240      });
1241    });
1242  });
1243});
1244</script>
1244
1245
1246
1247
1248
1249
1250<script>
1251  gsap.registerPlugin(ScrollTrigger, SplitText);
1252
1253  const split = new SplitText(".services-word", { type: "chars" });
1254  const chars = split.chars;
1255
1256  gsap.set(chars, { y: 30, opacity: 0 });
1257
1258  gsap.to(chars, {
1259    y: 0,
1260    opacity: 1,
1261    duration: 0.6,
1262    ease: "power3.out",
1263    stagger: 0.1,
1264    scrollTrigger: {
1265      trigger: ".services-word",
1266      start: "top 60%",    // анимация начнётся когда верх блока на 60% экрана
1267      end: "top 0%",       // закончится когда верх блока дойдёт до верха экрана
1268      scrub: 1.5,          // плавное привязка к скроллу, можно увеличить
1269    }
1270  });
1271</script>
1271
1272
1273
1274
1275<!-- assets.bottom -->
1276<!-- </noscript></script>
1276</style> -->
1277<script src="/assets/site/main.min.js?1791276656" ></script>
vendor: 1 bytes, line 1277
1277
1278<script >/*<![CDATA[*/
1279var megacounter_key="c2830a912de55aa467b70f88487ad0ad";
1280(function(d){
1281    var s = d.createElement("script");
1282    s.src = "//counter.megagroup.ru/loader.js?"+new Date().getTime();
1283    s.async = true;
1284    d.getElementsByTagName("head")[0].appendChild(s);
1285})(document);
1286/*]]>*/</script>
vendor: 1 bytes, line 1286
1286
1287<script >/*<![CDATA[*/
1288$ite.start({"sid":6746786,"vid":6822589,"aid":5024752,"stid":27,"cp":21,"active":true,"domain":"salakhov-design.ru","lang":"en","trusted":false,"debug":false,"captcha":4,"onetap":[{"provider":"vkontakte","provider_id":"53543634","code_verifier":"smmKKMDxGeXGTKgnhFk8YsgPKMiOtG6skQjZbrpaH49PyshYJurJrM8JLQbQzOQlr7Kya7SQr7RMacwKH3ZclTO_KMJWJOQRMgUqYcKW5lTyAKeENe"}]});
1289/*]]>*/</script>
1289
1290<!-- /assets.bottom -->
1291</body>
1292<script type='application/json' id='data_do_json'>
1293{"data":{"tt_link_universal":{"il22bsz6k":"2262851596","i139ljshk":"2262851596","i3sdeglfp":"2318580973","ibov5thq2":"2262851596","idczpk1ij":"2262851596","ipwkxyb5e":"2262851596","i6p33k4n9":"2262851596","imkgeujnk":"2262851596","ivg2jqcdv":"2262851596","iljj6srgz":"2262851596","iur25hvjb":"540367937","igxff8rna":"540367937","i2j4i83i0":"2262851596","i4bd4lna0":"2262851596","ieoqkpzyj":"2262851596","i2ow6e3og":"2262851596","ijydfws9t":"2262851596","i3g1qsujh":"2318580973","ibgy4hdql":"2262851596","iyagiad88":"2262851596","i73c9yzs5":"93719356"},"tt_image":{"ig948t01r":"4226276507","isseducov":"2153201508","i4l88x2gr":"637842386","i4xlo0pcg":"2136264675","iu16l0mbx":"2153201508","inbgrm86n":"4226276507","ivgu0ajpz":"3906203336","ignbp1soi":"2153201508","iu05b3s5b":"2153201508","iespvs05y":"4226276507","isyt54jah":"4226276507","ip9ip9366":"4226276507","iabzx6xhv":"3451433236","ipitcrw4p":"4226276507","ijazvgp5x":"4226276507","i4jfo9bp3":"4226276507","iyijguog4":"4226276507","i89b1ccsr":"4226276507","i9hak54xi":"4226276507"},"tt_animation":{"iespvs05y":"2639807811","ij0cjfn7v":"730602724","issldihgz":"1845662127","iblq1q1es":"2038236754","iabzx6xhv":"956016656","igwfcl5rg":"3047831952"},"tt_menu":{"icuooib0t":"1677249857"},"tt_modal":{"ibk6cj3z3":"953365152"},"tt_form":{"i28wkxdqk":"3670885118"},"tt_form_checkbox_group":{"iko6dkzg5":"2723265586"},"tt_form_input":{"izynmrhor":"4039395888","iitu8ll77":"1905957598"},"tt_form_textarea":{"io9p32pjf":"1831041182"},"tt_badge":{"iulo2bdrq":"3971710226"}},"params":{"2262851596":"{\"screen\":{\"type\":\"link\",\"eventName\":\"click\",\"eventElement\":\"self\",\"eventAction\":\"\",\"displayType\":\"\",\"selectedTag\":\"\",\"linkType\":\"link\",\"blank\":true}}","4226276507":"{\"screen\":{\"objectFit\":\"cover\",\"lockRatio\":true}}","2153201508":"{\"screen\":{\"objectFit\":\"cover\",\"lockRatio\":true,\"maxWidth\":\"1184\",\"maxHeight\":\"896\"}}","637842386":"{\"screen\":{\"objectFit\":\"contain\",\"lockRatio\":true,\"maxWidth\":\"1024\",\"maxHeight\":\"1536\"}}","2136264675":"{\"screen\":{\"objectFit\":\"cover\",\"lockRatio\":true,\"maxWidth\":\"1536\",\"maxHeight\":\"1024\"}}","3906203336":"{\"screen\":{\"objectFit\":\"cover\",\"lockRatio\":true,\"maxWidth\":\"4000\",\"maxHeight\":\"2506\"}}","2639807811":"{\"animations\":{\"animation-isrjsveoc\":{\"id\":\"animation-isrjsveoc\",\"triggerName\":\"APPEAR_ON_SCREEN\",\"mediaParams\":{\"screen\":{\"disabled\":false,\"effectIds\":[\"effect-ikswfxu74\"],\"preset\":\"FADE_IN\",\"iterations\":\"Infinity\",\"stageOfAppear\":\"top\",\"loop\":\"yoyo\"}}}},\"effects\":{\"effect-ikswfxu74\":{\"screen\":{\"id\":\"effect-ikswfxu74\",\"name\":\"MOVE\",\"disabled\":false,\"keyframes\":[{\"x\":\"0px\",\"y\":\"0px\",\"z\":\"0px\"},{\"x\":\"-20em\",\"y\":\"0px\",\"z\":\"0px\"}],\"options\":{\"ease\":\"none\",\"delay\":0,\"duration\":20}}}}}","2318580973":"{\"screen\":{\"type\":\"link\",\"eventName\":\"click\",\"eventElement\":\"self\",\"eventAction\":\"\",\"displayType\":\"\",\"selectedTag\":\"\",\"linkType\":\"link\",\"blank\":false}}","730602724":"{\"animations\":{\"animation-i2sxcdo0x\":{\"id\":\"animation-i2sxcdo0x\",\"triggerName\":\"HOVER\",\"mediaParams\":{\"screen\":{\"disabled\":false,\"effectIds\":[\"effect-iwqm94moz\"],\"preset\":\"FADE_IN\",\"loop\":\"none\",\"triggerElement\":\"#ibov5thq2_0\"}}}},\"effects\":{\"effect-iwqm94moz\":{\"screen\":{\"id\":\"effect-iwqm94moz\",\"name\":\"COLOR\",\"disabled\":false,\"keyframes\":[{\"color\":\"rgba(255, 255, 255, 1)\"},{\"color\":\"rgba(240, 25, 109, 1)\"}],\"options\":{\"ease\":\"0.645, 0.045, 0.355, 1\",\"delay\":0,\"duration\":0.3}}}}}","1845662127":"{\"animations\":{\"animation-is4212xj1\":{\"id\":\"animation-is4212xj1\",\"triggerName\":\"SCROLL_TRANSFORM\",\"mediaParams\":{\"screen\":{\"disabled\":true,\"effectIds\":[\"effect-ignhtqonz\"],\"preset\":\"FADE_IN\",\"triggerElement\":\"#i8z5xo3zc_0\",\"startPosition\":\"top\",\"endPosition\":\"center\",\"startOffset\":\"0%\",\"endOffset\":\"0%\",\"scrollerStartOffset\":\"100%\",\"scrollerEndOffset\":\"0%\",\"smoothing\":0,\"markers\":true}}}},\"effects\":{\"effect-ignhtqonz\":{\"screen\":{\"id\":\"effect-ignhtqonz\",\"name\":\"MOVE\",\"disabled\":false,\"keyframes\":[{\"x\":\"0px\",\"y\":\"0px\",\"z\":\"0px\"},{\"x\":\"0px\",\"y\":\"-100%\",\"z\":\"0px\"}],\"options\":{\"ease\":\"power1.inOut\",\"startKeyframe\":0,\"endKeyframe\":100}}}}}","1677249857":"{\"levels\":[{\"desktop\":{\"layout\":\"vertical\",\"appearance\":\"default\",\"triggerEvent\":\"hover\",\"effect\":\"fade\",\"open\":{\"easing\":\"linear\",\"duration\":200},\"close\":{\"easing\":\"linear\",\"duration\":200},\"hideEmptyMenu\":false,\"showNextMenu\":false,\"columns\":3},\"mobile\":{\"layout\":\"vertical\",\"appearance\":\"slide\",\"triggerEvent\":\"click\",\"effect\":\"left\",\"open\":{\"easing\":\"cubic-bezier(0.445, 0.05, 0.55, 0.95)\",\"duration\":1000},\"close\":{\"easing\":\"cubic-bezier(0.645, 0.045, 0.355, 1)\",\"duration\":1000},\"hideEmptyMenu\":false,\"showNextMenu\":true}}],\"anchorDuration\":\"1000\",\"mobileBreakPoint\":\"(max-width: 479px)\",\"mobileMenuPosition\":\"left\",\"scrollLock\":false}","2038236754":"{\"animations\":{\"animation-i62ywkyr8\":{\"id\":\"animation-i62ywkyr8\",\"triggerName\":\"HOVER\",\"mediaParams\":{\"screen\":{\"disabled\":false,\"effectIds\":[\"effect-i7b47zh2z\"],\"preset\":\"FADE_IN\",\"loop\":\"none\",\"triggerElement\":\"#ihjdkk9ar_0\"}}}},\"effects\":{\"effect-i7b47zh2z\":{\"screen\":{\"id\":\"effect-i7b47zh2z\",\"name\":\"COLOR\",\"disabled\":false,\"keyframes\":[{\"color\":\"rgba(255, 255, 255, 1)\"},{\"color\":\"rgba(240, 25, 109, 1)\"}],\"options\":{\"ease\":\"0.645, 0.045, 0.355, 1\",\"delay\":0,\"duration\":0.3}}}}}","540367937":"{\"screen\":{\"type\":\"button\",\"eventName\":\"click\",\"eventElement\":\"select\",\"eventAction\":\"show\",\"displayType\":\"\",\"selectedTag\":\"\",\"linkType\":\"link\",\"blank\":true}}","953365152":"{\"screen\":{\"closeOnOverlay\":true,\"scrollLock\":false,\"effect\":\"fade\",\"open\":{\"easing\":\"ease-in-out\",\"duration\":200},\"close\":{\"easing\":\"ease-in-out\",\"duration\":200}}}","3670885118":"{\"screen\":{\"mode\":\"main\",\"anketa_id\":\"201649913\",\"name\":\"Email Form\",\"
1293initial_state\":\"{\\\"anketa_id\\\":\\\"201649913\\\",\\\"name\\\":\\\"Email Form\\\",\\\"submit_name\\\":\\\"Отправить\\\",\\\"success_note\\\":\\\"Thank you!\\\",\\\"tag_id\\\":\\\"i28wkxdqk\\\",\\\"symbol_id\\\":\\\"symbol-ibk6cj3z3\\\",\\\"change\\\":false,\\\"dictionaries\\\":{\\\"iko6dkzg5\\\":{\\\"dictionary_id\\\":1242257313,\\\"name\\\":\\\"Checkbox group\\\",\\\"type_id\\\":5,\\\"required\\\":false,\\\"alias\\\":\\\"field_1242257313\\\",\\\"note\\\":\\\"\\\",\\\"variants\\\":[\\\"Сайт под ключ\\\",\\\"Дизайн без верстки\\\",\\\"3d иллюстрации\\\"],\\\"params_value\\\":\\\"\\\",\\\"validator\\\":\\\"\\\",\\\"change\\\":false},\\\"izynmrhor\\\":{\\\"dictionary_id\\\":1242257513,\\\"name\\\":\\\"Website or Company Name*\\\",\\\"type_id\\\":1,\\\"required\\\":true,\\\"alias\\\":\\\"field_1242257513\\\",\\\"note\\\":\\\"\\\",\\\"variants\\\":[],\\\"params_value\\\":\\\"\\\",\\\"validator\\\":\\\"\\\",\\\"change\\\":false},\\\"iitu8ll77\\\":{\\\"dictionary_id\\\":1242257713,\\\"name\\\":\\\"Email address\\\",\\\"type_id\\\":13,\\\"required\\\":true,\\\"alias\\\":\\\"email\\\",\\\"note\\\":\\\"\\\",\\\"variants\\\":[],\\\"params_value\\\":\\\"\\\",\\\"validator\\\":\\\"\\\",\\\"change\\\":false},\\\"io9p32pjf\\\":{\\\"dictionary_id\\\":1242257913,\\\"name\\\":\\\"Textarea\\\",\\\"type_id\\\":2,\\\"required\\\":true,\\\"alias\\\":\\\"field_1242257913\\\",\\\"note\\\":\\\"\\\",\\\"variants\\\":[],\\\"params_value\\\":\\\"\\\",\\\"validator\\\":\\\"\\\",\\\"change\\\":false}},\\\"redirect_url\\\":\\\"/success-submition\\\"}\",\"nativeStyle\":false,\"disabledNativeStyleSelect\":true,\"redirectAction\":\"page\",\"redirectPage\":\"/success-submition\"}}","2723265586":"{\"screen\":{\"name\":\"Checkbox group\",\"type_id\":5,\"required\":false,\"dictionary_id\":1242257313,\"alias\":\"field_1242257313\"}}","4039395888":"{\"screen\":{\"type_id\":1,\"type_code\":\"text\",\"name\":\"Website or Company Name*\",\"required\":true,\"maxlength\":256,\"dictionary_id\":1242257513,\"alias\":\"field_1242257513\"}}","1905957598":"{\"screen\":{\"type_id\":13,\"type_code\":\"email\",\"name\":\"Email address\",\"required\":true,\"maxlength\":256,\"dictionary_id\":1242257713,\"alias\":\"email\"}}","1831041182":"{\"screen\":{\"name\":\"Textarea\",\"type_id\":2,\"type_field\":\"textarea\",\"required\":true,\"dictionary_id\":1242257913,\"alias\":\"field_1242257913\"}}","3451433236":"{\"screen\":{\"objectFit\":\"cover\",\"lockRatio\":true,\"maxWidth\":\"4000\",\"maxHeight\":\"2500\"}}","956016656":"{\"animations\":{\"animation-i14yre8pc\":{\"id\":\"animation-i14yre8pc\",\"triggerName\":\"APPEAR_ON_SCREEN\",\"mediaParams\":{\"screen\":{\"effectIds\":[\"effect-iewgynmx7\"],\"preset\":\"SLIDE_IN_LEFT\",\"iterations\":1,\"stageOfAppear\":\"top\",\"loop\":\"none\"},\"(min-width: 1440px)\":{}}}},\"effects\":{\"effect-iewgynmx7\":{\"screen\":{\"id\":\"effect-iewgynmx7\",\"name\":\"MOVE\",\"disabled\":false,\"keyframes\":[{\"x\":\"0px\",\"y\":\"20em\",\"z\":\"0px\"},{\"x\":\"0px\",\"y\":\"0px\",\"z\":\"0px\"}],\"options\":{\"ease\":\"0.785, 0.135, 0.15, 0.86\",\"delay\":0,\"duration\":1.2}}}}}","3047831952":"{\"animations\":{\"animation-ikwgk0qxk\":{\"id\":\"animation-ikwgk0qxk\",\"triggerName\":\"CLICK\",\"mediaParams\":{\"screen\":{\"disabled\":true,\"effectIds\":[\"effect-icfs6lkee\"],\"preset\":\"FADE_IN\",\"secondClick\":\"reverse\",\"loop\":\"none\",\"triggerElement\":\"#i3g1qsujh_0\"}}}},\"effects\":{\"effect-icfs6lkee\":{\"screen\":{\"id\":\"effect-icfs6lkee\",\"name\":\"MOVE\",\"disabled\":false,\"keyframes\":[{\"x\":\"0px\",\"y\":\"0px\",\"z\":\"0px\"},{\"x\":\"11px\",\"y\":\"0px\",\"z\":\"0px\"}],\"options\":{\"ease\":\"0.455, 0.03, 0.515, 0.955\",\"delay\":0,\"duration\":0.3}}}}}","93719356":"{\"screen\":{\"type\":\"link\",\"eventName\":\"click\",\"eventElement\":\"self\",\"eventAction\":\"\",\"displayType\":\"\",\"selectedTag\":\"\",\"linkType\":\"page\",\"blank\":true}}","3971710226":"{\"screen\":{\"speed\":600}}"}}
1294</script>
1294
1295<span style='font-size:14px;' class='copyright'><style>
1296  .tt_copyright {
1297    display: inline-block;
1298  }
1299
1300  .tt_badge__small {
1301    display: inline-flex;
1302    align-items: center;
1303    min-height: 35px;
1304    padding: 8px 8px 8px 32px;
1305    background-image: url('/g/s3/mosaic/images/widgets/badge-small-light.svg'), linear-gradient(#0c0c0c, #0c0c0c);
1306    background-position: 8px center, center;
1307    background-repeat: no-repeat;
1308    text-decoration: none;
1309    font-weight: 500;
1310    font-size: 14px;
1311    border-radius: 5px;
1312    color: #ffffff;
1313  }
1314
1315  @media (max-width: 767px) {
1316    .tt_badge__small {
1317      font-size: 10px;
1318      min-height: 28px;
1319    }
1320  }
1321</style>
1322<div class="tt_copyright tt_badge">
1323  <a target="_blank" href="https://taptop.pro/?utm_source=taptop_pro&utm_medium=embed&utm_campaign=badge&utm_content=icon" class="tt_badge__small">Made in Taptop</a>
1324</div></span></html>

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.