PageSourceSearch

https://personaltourskmv.ru/

html personaltourskmv.ru collected 2026-10-07 02:54:14 UTC 487,912 bytes, 11,725 lines download raw bytes

1<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="yandex-verification" content="9f8ffd6089ce524f" /> <!--metatextblock--> <title>Экскурсии по Кавказу, Домбай, Эльбрус, Архыз, Осетия, Чегемские водопады, Джилы-Су, Поезки на море</title> <meta name="description" content="Экскурсии по Кавказу, Домбай, Эльбрус, Архыз, Осетия, Чегемские водопады, Джилы-Су, поездки на Чёрное море, в Крым, из Кавказских Минеральных Вод на легковой машине" /> <meta name="keywords" content="Экскурсии по Кавказу, Экскурсия в Домбай из Ессентуков, Экскурсия в Домбай из Кисловодска, Экскурсия в Домбай из Пятигорска, Экскурсии Эльбрус из Ессентуков, Экскурсии Эльбрус из Кисловодска, Экскурсии Эльбрус из Пятигорска, Экскурсии в Джилы-Су из Ессент" /> <meta property="og:url" content="https://personaltourskmv.ru" /> <meta property="og:title" content="Экскурсии по Кавказу, Домбай, Эльбрус, Архыз, Осетия, Чегемские водопады, Джилы-Су, ПОЕЗДКИ НА МОРЕ" /> <meta property="og:description" content="Экскурсии по Кавказу, Домбай, Эльбрус, Архыз, Осетия, Чегемские водопады, Джилы-Су, поездки на Чёрное море, в Крым, из Кавказских Минеральных Вод на легковой машине" /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://static.tildacdn.com/tild3764-6666-4638-b631-323065333635/logo.jpg" /> <link rel="canonical" href="https://personaltourskmv.ru"> <!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <!--favicons--> <link rel="shortcut icon" href="https://static.tildacdn.com/tild3031-3130-4563-b365-353832663264/favicon.ico" type="image/x-icon"/> <link rel="apple-touch-icon" href="https://static.tildacdn.com/tild3063-6231-4238-a331-626264613636/android-chrome-192x1.png"> <link rel="apple-touch-icon" sizes="76x76" href="https://static.tildacdn.com/tild3063-6231-4238-a331-626264613636/android-chrome-192x1.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://static.tildacdn.com/tild3063-6231-4238-a331-626264613636/android-chrome-192x1.png"> <link rel="apple-touch-startup-image" href="https://static.tildacdn.com/tild3063-6231-4238-a331-626264613636/android-chrome-192x1.png"> <meta name="msapplication-TileColor" content="#000000"> <meta name="msapplication-TileImage" content="https://static.tildacdn.com/tild3437-3737-4537-a635-303761663962/apple-touch-icon.png"> <!--/favicons--> <link rel="alternate" type="application/rss+xml" title="ANDRE TOUR" href="https://personaltourskmv.ru/rss.xml" /> <!-- Assets --> 
1<script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script>
1 <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project6804315/tilda-blocks-page36946793.min.css?t=1790942278" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-catalog-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-catalog-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-forms-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-catalog-filters-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-cart-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-menu-widgeticons-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zero-gallery-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/fonts-tildasans.css" type="text/css" media="all" onerror="this.loaderr='y';" /> 
1<script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script>
1 
1<script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
2function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t_throttle(fn,threshhold,scope) {return function() {fn.apply(scope||this,arguments);};}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,l=[],n,r=i.getAttribute("data-artboard-screens");if(r){r=r.split(",");for(var o=0;o<r.length;o++)l[o]=parseInt(r[o],10)}else l=[320,480,640,960,1200];for(var o=0;o<l.length;o++){var _=l[o];a>=_&&(n=_)}var d="edit"===window.allrecords.getAttribute("data-tilda-mode"),s="center"===t396_scaleInitial__getFieldValue(i,"valign",n,l),c="grid"===t396_scaleInitial__getFieldValue(i,"upscale",n,l),u=t396_scaleInitial__getFieldValue(i,"height_vh",n,l),g=t396_scaleInitial__getFieldValue(i,"height",n,l),w=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!d&&s&&!c&&!u&&g&&!w){var f=parseFloat((a/n).toFixed(3)),h=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*f)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<h.length;o++)h[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i,n,l).forEach((function(t){t.style.zoom=f}))}}}}function t396_scaleInitial__getElementsToScale(t,e,i){return t?Array.prototype.slice.call(t.children).filter((function(t){if(!t)return!1;if(!t.classList.contains("t396__elem")&&!t.classList.contains("t396__group"))return!1;if(!t.querySelector(".tn-molecule, .tn-atom"))return!1;var a=!t.getAttribute("data-elem-type")&&t.classList.contains("tn-group"),l=t396_scaleInitial__getFieldValue(t,"container",e,i);return!l&&a&&(l="grid"),"grid"===l})):[]}function t396_scaleInitial__getFieldValue(t,e,i,a){if(!t)return null;var l=a[a.length-1],n=t.getAttribute(t396_scaleInitial__getFieldAttribute(t,e,i,l));if(null===n)for(var r=0;r<a.length;r++){var o=a[r];if(!(o<=i)&&null!==(n=t.getAttribute(t396_scaleInitial__getFieldAttribute(t,e,o,l))))break}return n}function t396_scaleInitial__getFieldAttribute(t,e,i,a){var l=["widthmode","heightmode","flex"],n=t.classList.contains("t396__artboard"),r=!n&&t.classList.contains("tn-group"),o="data-field-";n&&(o="data-artboard-"),r&&(o="data-group-");var _="-value",d;return(n||r&&-1!==l.indexOf(e))&&(_=""),o+e+(i===a?"":"-res-"+i)+_}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script>
2 
2<script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/ws/project6804315/tilda-blocks-page36946793.min.js?t=1790942278" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zero-1.2.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-slds-1.4.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-products-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-catalog-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-cart-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-widget-positions-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-menu-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-menu-widgeticons-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zero-gallery-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zero-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-animation-ext-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-animation-sbs-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zoom-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-zero-fixed-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-skiplink-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 
2<script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script>
2 <!-- nominify begin --><meta name="yandex-verification" content="f1b260b2bf7ff781" /> <!-- Yandex.Metrika counter --> 
2<script type="text/javascript" >
vendor: 406 bytes, lines 2-9
2
3   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
4   m[i].l=1*new Date();
5   for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
6   k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
7   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
8
9   ym(
994209232
vendor: 154 bytes, lines 9-15
9, "init", {
10        clickmap:true,
11        trackLinks:true,
12        accurateTrackBounce:true,
13        webvisor:true,
14        ecommerce:"dataLayer"
15   });
16</script>
16 <noscript><div><img src="https://mc.yandex.ru/watch/94209232" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> 
16<script src="https://api.proofwall.ru/api/public/snippet.js?project=6c649fe6-8fc1-4179-bfda-d8b14aa004bb" async></script>
16 <!-- nominify end -->
16<script type="text/javascript">window.dataLayer=window.dataLayer||[];</script>
16 
16<script type="text/javascript">(function() {var ttt='cebo';var tt='oog';var re=new RegExp("bot|g" + tt + "le|yandex|baidu|bing|msn|duckduckbot|teoma|slurp|crawler|spider|robot|crawling|fa" + ttt + "ok","i");if((re.test(navigator.userAgent))===false&&typeof(sessionStorage)!='undefined'&&sessionStorage.getItem('visited')!=='y'&&document.visibilityState){var style=document.createElement('style');style.type='text/css';style.innerHTML='@media screen and (min-width: 980px) {.t-records {opacity: 0;}.t-records_animated {-webkit-transition: opacity ease-in-out .2s;-moz-transition: opacity ease-in-out .2s;-o-transition: opacity ease-in-out .2s;transition: opacity ease-in-out .2s;}.t-records.t-records_visible {opacity: 1;}}';document.getElementsByTagName('head')[0].appendChild(style);function t_setvisRecs(){var alr=document.querySelectorAll('.t-records');Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_animated");});setTimeout(function() {Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_visible");});sessionStorage.setItem("visited","y");},400);}
17document.addEventListener('DOMContentLoaded',t_setvisRecs);}})();</script>
17</head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="6804315" data-tilda-page-id="36946793" data-tilda-formskey="667f45b9dcc28fb788688f89c6804315" data-tilda-lazy="yes" data-tilda-project-lang="RU" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-project-country="RU"> <!--header--> <header id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="6804315" data-tilda-page-id="154104196" data-tilda-formskey="667f45b9dcc28fb788688f89c6804315" data-tilda-lazy="yes" data-tilda-project-lang="RU" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-project-country="RU"> <div id="rec4130297901" class="r t-rec t-screenmin-980px" style=" " data-animationappear="off" data-record-type="396" data-screen-min="980px"> <!-- T396 --> <style>#rec4130297901 .t396__artboard{position:absolute;width:100%;z-index:990;}#rec4130297901 .t396__artboard{height:89px;}#rec4130297901 .t396__filter{height:89px;}#rec4130297901 .t396__carrier{height:89px;background-position:center center;background-attachment:fixed;transform:translate3d(0,0,0);-moz-transform:unset;background-size:cover;background-repeat:no-repeat;}@media screen and (min-width:1199px){#rec4130297901 .t396__carrier-wrapper{position:absolute;width:100%;height:100%;top:0;left:0;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}#rec4130297901 .t396__carrier{position:fixed;display:block;width:100%;height:100% !important;top:0;left:0;background-size:cover;background-position:center center;transform:translateZ(0);will-change:transform;pointer-events:none;}}@media screen and (max-width:1199px){#rec4130297901 .t396__carrier-wrapper{position:absolute;width:100%;height:100%;top:0;left:0;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}}@media screen and (max-width:1199px){#rec4130297901 .t396__artboard,#rec4130297901 .t396__filter,#rec4130297901 .t396__carrier{}#rec4130297901 .t396__filter{}#rec4130297901 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:959px){#rec4130297901 .t396__artboard,#rec4130297901 .t396__filter,#rec4130297901 .t396__carrier{}#rec4130297901 .t396__filter{}#rec4130297901 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:639px){#rec4130297901 .t396__artboard,#rec4130297901 .t396__filter,#rec4130297901 .t396__carrier{}#rec4130297901 .t396__filter{}#rec4130297901 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:479px){#rec4130297901 .t396__artboard,#rec4130297901 .t396__filter,#rec4130297901 .t396__carrier{}#rec4130297901 .t396__filter{}#rec4130297901 .t396__carrier{background-attachment:scroll;}}#rec4130297901 .tn-elem[data-elem-id="1685783091087"]{z-index:3;top:0px;left:calc(50% - 600px + -166px);width:1534px;height:89px;}#rec4130297901 .tn-elem[data-elem-id="1685783091087"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0.8;background-color:#ffffff;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);box-shadow:0px 10px 20px 0px rgba(0,11,48,0.25);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091087"]{display:table;left:calc(50% - 480px + -166px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091087"]{display:table;left:calc(50% - 320px + -166px);}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091087"]{display:table;left:calc(50% - 240px + -166px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091087"]{display:table;left:calc(50% - 160px + -166px);}}#rec4130297901 .tn-elem[data-elem-id="1685783091093"]{z-index:3;top:0px;left:calc(50% - 600px + 20px);width:125px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091093"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec4130297901 .tn-elem[data-elem-id="1685783091093"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091093"]{display:table;left:calc(50% - 480px + 20px);height:auto;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091093"]{display:table;left:calc(50% - 320px + 20px);height:auto;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091093"]{display:table;left:calc(50% - 240px + 20px);height:auto;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091093"]{display:table;left:calc(50% - 160px + 20px);height:auto;}}#rec4130297901 .tn-elem[data-elem-id="1685783091099"]{color:#000000;z-index:3;
17top:27px;left:calc(50% - 600px + 224px);width:107px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091099"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091099"]{display:table;left:calc(50% - 480px + 224px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091099"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091099"]{display:table;left:calc(50% - 320px + 224px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091099"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091099"]{display:table;left:calc(50% - 240px + 224px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091099"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091099"]{display:table;left:calc(50% - 160px + 224px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091099"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1685783091103"]{color:#000000;z-index:3;top:27px;left:calc(50% - 600px + 371px);width:107px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091103"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091103"]{display:table;left:calc(50% - 480px + 371px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091103"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091103"]{display:table;left:calc(50% - 320px + 371px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091103"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091103"]{display:table;left:calc(50% - 240px + 371px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091103"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091103"]{display:table;left:calc(50% - 160px + 371px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091103"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1685783091110"]{color:#000000;z-index:3;top:27px;left:calc(50% - 600px + 518px);width:107px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091110"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091110"]{display:table;left:calc(50% - 480px + 518px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091110"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091110"]{display:table;left:calc(50% - 320px + 518px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091110"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091110"]{display:table;left:calc(50% - 240px + 518px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091110"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091110"]{display:table;left:calc(50% - 160px + 518px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091110"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1685783091115"]{color:#000000;z-index:3;
17top:27px;left:calc(50% - 600px + 665px);width:107px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091115"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1685783091115"]{display:table;left:calc(50% - 480px + 665px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091115"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1685783091115"]{display:table;left:calc(50% - 320px + 665px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091115"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1685783091115"]{display:table;left:calc(50% - 240px + 665px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091115"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1685783091115"]{display:table;left:calc(50% - 160px + 665px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1685783091115"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1688304329265"]{z-index:3;top:67px;left:calc(50% - 600px + 195px);width:100px;height:4px;}#rec4130297901 .tn-elem.t396__elem--anim-hidden[data-elem-id="1688304329265"]{opacity:0;}#rec4130297901 .tn-elem[data-elem-id="1688304329265"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#f2931d;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1688304329265"]{display:table;top:84px;left:calc(50% - 480px + 221px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1688304329265"]{display:table;top:-35px;left:calc(50% - 320px + 221px);}#rec4130297901 .tn-elem[data-elem-id="1688304329265"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1688304329265"]{display:table;left:calc(50% - 240px + 221px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1688304329265"]{display:table;left:calc(50% - 160px + 221px);}}#rec4130297901 .tn-elem[data-elem-id="1688304465011"]{z-index:3;top:66px;left:calc(50% - 600px + 348px);width:100px;height:4px;}#rec4130297901 .tn-elem.t396__elem--anim-hidden[data-elem-id="1688304465011"]{opacity:0;}#rec4130297901 .tn-elem[data-elem-id="1688304465011"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#fc9f17;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1688304465011"]{display:table;top:84px;left:calc(50% - 480px + 221px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1688304465011"]{display:table;top:-35px;left:calc(50% - 320px + 221px);}#rec4130297901 .tn-elem[data-elem-id="1688304465011"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1688304465011"]{display:table;left:calc(50% - 240px + 221px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1688304465011"]{display:table;left:calc(50% - 160px + 221px);}}#rec4130297901 .tn-elem[data-elem-id="1688304476447"]{z-index:3;top:66px;left:calc(50% - 600px + 501px);width:100px;height:4px;}#rec4130297901 .tn-elem.t396__elem--anim-hidden[data-elem-id="1688304476447"]{opacity:0;}#rec4130297901 .tn-elem[data-elem-id="1688304476447"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#fc9f17;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1688304476447"]{display:table;top:84px;left:calc(50% - 480px + 221px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1688304476447"]{display:table;top:-35px;left:calc(50% - 320px + 221px);}#rec4130297901 .tn-elem[data-elem-id="1688304476447"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1688304476447"]{display:table;left:calc(50% - 240px + 221px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1688304476447"]{display:table;left:calc(50% - 160px + 221px);}}#rec4130297901 .tn-elem[data-elem-id="1688304490336"]{z-index:3;top:66px;left:calc(50% - 600px + 656px);width:100px;height:4px;}#rec4130297901 .tn-elem.t396__elem--anim-hidden[data-elem-id="1688304490336"]{opacity:0;}#rec4130297901 .tn-elem[data-elem-id="1688304490336"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#fc9f17;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1688304490336"]{display:table;top:84px;left:calc(50% - 480px + 221px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1688304490336"]{display:table;top:-35px;left:calc(50% - 320px + 221px);}#rec4130297901 .tn-elem[data-elem-id="1688304490336"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1688304490336"]{display:table;left:calc(50% - 240px + 221px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1688304490336"]{display:table;left:calc(50% - 160px + 221px);}}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"]{color:#000000;z-index:3;
17top:27px;left:calc(50% - 600px + 806px);width:117px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"]{display:table;left:calc(50% - 480px + 806px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"]{display:table;left:calc(50% - 320px + 806px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"]{display:table;left:calc(50% - 240px + 806px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"]{display:table;left:calc(50% - 160px + 806px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000001"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"]{z-index:3;top:66px;left:calc(50% - 600px + 804px);width:120px;height:4px;}#rec4130297901 .tn-elem.t396__elem--anim-hidden[data-elem-id="1790105031406000002"]{opacity:0;}#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#fc9f17;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"]{display:table;top:94px;left:calc(50% - 480px + 231px);}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"]{display:table;top:-25px;left:calc(50% - 320px + 231px);}#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"]{display:table;left:calc(50% - 240px + 231px);}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1790105031406000002"]{display:table;left:calc(50% - 160px + 231px);}}#rec4130297901 .tn-elem[data-elem-id="1790105570801"]{color:#000000;z-index:3;top:12px;left:calc(50% - 600px + 981px);width:171px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105570801"] .tn-atom{vertical-align:middle;color:#000000;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1790105570801"]{display:table;left:calc(50% - 480px + 981px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105570801"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1790105570801"]{display:table;left:calc(50% - 320px + 981px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105570801"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1790105570801"]{display:table;left:calc(50% - 240px + 981px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105570801"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1790105570801"]{display:table;left:calc(50% - 160px + 981px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790105570801"] .tn-atom{white-space:normal;background-size:cover;}}#rec4130297901 .tn-elem[data-elem-id="1790611918464"]{color:#ff8562;z-index:3;top:43px;left:calc(50% - 600px + 976px);width:175px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790611918464"] .tn-atom{vertical-align:middle;color:#ff8562;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec4130297901 .tn-elem[data-elem-id="1790611918464"]{display:table;left:calc(50% - 480px + 976px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790611918464"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec4130297901 .tn-elem[data-elem-id="1790611918464"]{display:table;left:calc(50% - 320px + 976px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790611918464"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec4130297901 .tn-elem[data-elem-id="1790611918464"]{display:table;left:calc(50% - 240px + 976px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790611918464"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec4130297901 .tn-elem[data-elem-id="1790611918464"]{display:table;left:calc(50% - 160px + 976px);width:px;height:auto;}#rec4130297901 .tn-elem[data-elem-id="1790611918464"] .tn-atom{white-space:normal;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="4130297901" data-artboard-screens="320,480,640,960,1200" data-artboard-height="89" data-artboard-valign="center" data-artboard-upscale="window" data-artboard-pos="absolute" data-artboard-fixed-need-js="y"> <div class="t396__carrier-wrapper"> <div class="t396__carrier" data-artboard-recid="4130297901"></div> </div> <div class="t396__filter" data-artboard-recid="4130297901"></div> <div class='t396__elem tn-elem tn-elem__41302979011685783091087' data-elem-id='1685783091087' data-elem-type='shape' data-field-top-value="0" data-field-left-value="-166" data-field-height-value="89" data-field-width-value="1534" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__41302979011685783091093' data-elem-id='1685783091093' data-elem-type='image' data-field-top-value="0" data-field-left-value="20" data-field-height-value="89" data-field-width-value="125" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="1280" data-field-fileheight-value="907" data-field-heightmode-value="hug" data-field-height-res-320-value="89" data-field-height-res-480-value="89" data-field-height-res-640-value="89" data-field-height-res-960-value="89"> <a class='tn-atom'
18href="/"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3530-6666-4931-a337-323766656532/logo.jpg'
19src='https://thb.tildacdn.com/tild3530-6666-4931-a337-323766656532/-/resize/20x/logo.jpg'
20alt='ИНДИВИДУАЛЬНЫЕ ЭКСКУРСИИ Ессентуки, Пятигорск, Кисловодск' imgfield='tn_img_1685783091093'
21/> </a> </div> <div class='t396__elem tn-elem tn-elem__41302979011685783091099' data-elem-id='1685783091099' data-elem-type='text' data-field-top-value="27" data-field-left-value="224" data-field-height-value="31" data-field-width-value="107" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'><a style="color: inherit" href="#rec599877685">Туры</a></div> </div> <div class='t396__elem tn-elem tn-elem__41302979011685783091103' data-elem-id='1685783091103' data-elem-type='text' data-field-top-value="27" data-field-left-value="371" data-field-height-value="31" data-field-width-value="107" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'><a style="color: inherit" href="#rec596853556">О нас</a></div> </div> <div class='t396__elem tn-elem tn-elem__41302979011685783091110' data-elem-id='1685783091110' data-elem-type='text' data-field-top-value="27" data-field-left-value="518" data-field-height-value="31" data-field-width-value="107" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-prx="scroll" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'><a style="color: inherit" href="#rec4183257101">Отзывы</a></div> </div> <div class='t396__elem tn-elem tn-elem__41302979011685783091115' data-elem-id='1685783091115' data-elem-type='text' data-field-top-value="27" data-field-left-value="665" data-field-height-value="31" data-field-width-value="107" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'><a style="color: inherit" href="#popup:myform">Контакты</a></div> </div> <div class='t396__elem tn-elem tn-elem__41302979011688304329265 t396__elem--anim-hidden' data-elem-id='1688304329265' data-elem-type='shape' data-field-top-value="67" data-field-left-value="195" data-field-height-value="4" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-mobile="y" data-animate-sbs-event="hover" data-animate-sbs-trgels="1609977250872,1685783091099" data-animate-sbs-opts="[{'ti':0,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':0,'ro':0,'bl':'0','ea':'easeOut','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':200,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'easeOut','dt':0}]" data-field-top-res-640-value="-35" data-field-left-res-640-value="221" data-field-top-res-960-value="84" data-field-left-res-960-value="221"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__41302979011688304465011 t396__elem--anim-hidden' data-elem-id='1688304465011' data-elem-type='shape' data-field-top-value="66" data-field-left-value="348" data-field-height-value="4" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-mobile="y" data-animate-sbs-event="hover" data-animate-sbs-trgels="1609977250872,1685783091103" data-animate-sbs-opts="[{'ti':0,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':0,'ro':0,'bl':'0','ea':'easeOut','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':200,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'easeOut','dt':0}]" data-field-top-res-640-value="-35" data-field-left-res-640-value="221" data-field-top-res-960-value="84" data-field-left-res-960-value="221"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__41302979011688304476447 t396__elem--anim-hidden' data-elem-id='1688304476447' data-elem-type='shape' data-field-top-value="66" data-field-left-value="501" data-field-height-value="4" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-mobile="y" data-animate-sbs-event="hover" data-animate-sbs-trgels="1609977250872,1685783091110" data-animate-sbs-opts="[{'ti':0,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':0,'ro':0,'bl':'0','ea':'easeOut','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':200,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'easeOut','dt':0}]" data-field-top-res-640-value="-35" data-field-left-res-640-value="221" data-field-top-res-960-value="84" data-field-left-res-960-value="221"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__41302979011688304490336 t396__elem--anim-hidden' data-elem-id='1688304490336' data-elem-type='shape' data-field-top-value="66" data-field-left-value="656" data-field-height-value="4" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-mobile="y" data-animate-sbs-event="hover" data-animate-sbs-trgels="1609977250872,1685783091115" data-animate-sbs-opts="[{'ti':0,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':0,'ro':0,'bl':'0','ea':'easeOut','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':200,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'easeOut','dt':0}]" data-field-top-res-640-value="-35" data-field-left-res-640-value=
21"221" data-field-top-res-960-value="84" data-field-left-res-960-value="221"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tour-search-slot tn-elem__41302979011790105031406000001' data-elem-id='1790105031406000001' data-elem-type='text' data-field-top-value="27" data-field-left-value="806" data-field-height-value="31" data-field-width-value="117" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'field='tn_text_1790105031406000001'>Найти услугу</div> </div> <div class='t396__elem tn-elem tn-elem__41302979011790105031406000002 t396__elem--anim-hidden' data-elem-id='1790105031406000002' data-elem-type='shape' data-field-top-value="66" data-field-left-value="804" data-field-height-value="4" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-animate-mobile="y" data-animate-sbs-event="hover" data-animate-sbs-trgels="1609977250872,1790105031406000001" data-animate-sbs-opts="[{'ti':0,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':0,'ro':0,'bl':'0','ea':'easeOut','dt':0},{'ti':0,'mx':0,'my':0,'sx':0,'sy':0,'op':1,'ro':0,'bl':'0','ea':'','dt':0},{'ti':200,'mx':0,'my':0,'sx':1,'sy':1,'op':1,'ro':0,'bl':'0','ea':'easeOut','dt':0}]" data-field-widthmode-value="fixed" data-field-top-res-640-value="-25" data-field-left-res-640-value="231" data-field-top-res-960-value="94" data-field-left-res-960-value="231"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__41302979011790105570801' data-elem-id='1790105570801' data-elem-type='text' data-field-top-value="12" data-field-left-value="981" data-field-height-value="31" data-field-width-value="171" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'field='tn_text_1790105570801'>По всем вопросам:</div> </div> <div class='t396__elem tn-elem tn-elem__41302979011790611918464' data-elem-id='1790611918464' data-elem-type='text' data-field-top-value="43" data-field-left-value="976" data-field-height-value="31" data-field-width-value="175" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'field='tn_text_1790611918464'>+7 (928) 316-55-66</div> </div> </div> </div> 
21<script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('4130297901');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('4130297901');});});</script>
21 <!-- /T396 --> </div> <div id="rec4093499001" class="r t-rec t-rec_pt_0 t-rec_pb_0 t-screenmax-980px" style="padding-top:0px;padding-bottom:0px; " data-animationappear="off" data-record-type="450" data-screen-max="980px"> <div class="t450__menu__content "
22style="top:15px; " data-menu="yes" data-appearoffset="" data-hideoffset=""> <div class="t450__burger_container t450__small "> <div class="t450__burger_bg t450__burger_cirqle"
23style="background-color:#f2931d; opacity:1;"> </div> <button type="button"
24class="t-menuburger t-menuburger_first t-menuburger__small"
25aria-label="Навигационное меню"
26aria-expanded="false"> <span style="background-color:#ffffff;"></span> <span style="background-color:#ffffff;"></span> <span style="background-color:#ffffff;"></span> <span style="background-color:#ffffff;"></span> </button> 
26<script>function t_menuburger_init(recid) {var rec=document.querySelector('#rec' + recid);if(!rec) return;var burger=rec.querySelector('.t-menuburger');if(!burger) return;var isSecondStyle=burger.classList.contains('t-menuburger_second');if(isSecondStyle&&!window.isMobile&&!('ontouchend' in document)) {burger.addEventListener('mouseenter',function() {if(burger.classList.contains('t-menuburger-opened')) return;burger.classList.remove('t-menuburger-unhovered');burger.classList.add('t-menuburger-hovered');});burger.addEventListener('mouseleave',function() {if(burger.classList.contains('t-menuburger-opened')) return;burger.classList.remove('t-menuburger-hovered');burger.classList.add('t-menuburger-unhovered');setTimeout(function() {burger.classList.remove('t-menuburger-unhovered');},300);});}
27burger.addEventListener('click',function() {if(!burger.closest('.tmenu-mobile')&&!burger.closest('.t450__burger_container')&&!burger.closest('.t3112__burger_container')&&!burger.closest('.t466__container')&&!burger.closest('.t204__burger')&&!burger.closest('.t199__js__menu-toggler')) {burger.classList.toggle('t-menuburger-opened');burger.classList.remove('t-menuburger-unhovered');}});var menu=rec.querySelector('[data-menu="yes"]');if(!menu) return;var menuLinks=menu.querySelectorAll('.t-menu__link-item');var submenuClassList=['t978__menu-link_hook','t978__tm-link','t966__tm-link','t794__tm-link','t-menusub__target-link'];Array.prototype.forEach.call(menuLinks,function(link) {link.addEventListener('click',function() {var isSubmenuHook=submenuClassList.some(function(submenuClass) {return link.classList.contains(submenuClass);});if(isSubmenuHook) return;burger.classList.remove('t-menuburger-opened');});});menu.addEventListener('clickedAnchorInTooltipMenu',function() {burger.classList.remove('t-menuburger-opened');});}
28t_onReady(function() {t_onFuncLoad('t_menuburger_init',function(){t_menuburger_init('4093499001');});});</script>
28 <style>.t-menuburger{position:relative;flex-shrink:0;width:28px;height:20px;padding:0;border:none;background-color:transparent;outline:none;-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:transform .5s ease-in-out;cursor:pointer;z-index:999;}.t-menuburger span{display:block;position:absolute;width:100%;opacity:1;left:0;-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:.25s ease-in-out;height:3px;background-color:#000;}.t-menuburger span:nth-child(1){top:0px;}.t-menuburger span:nth-child(2),.t-menuburger span:nth-child(3){top:8px;}.t-menuburger span:nth-child(4){top:16px;}.t-menuburger__big{width:42px;height:32px;}.t-menuburger__big span{height:5px;}.t-menuburger__big span:nth-child(2),.t-menuburger__big span:nth-child(3){top:13px;}.t-menuburger__big span:nth-child(4){top:26px;}.t-menuburger__small{width:22px;height:14px;}.t-menuburger__small span{height:2px;}.t-menuburger__small span:nth-child(2),.t-menuburger__small span:nth-child(3){top:6px;}.t-menuburger__small span:nth-child(4){top:12px;}.t-menuburger-opened span:nth-child(1){top:8px;width:0%;left:50%;}.t-menuburger-opened span:nth-child(2){-webkit-transform:rotate(45deg);transform:rotate(45deg);}.t-menuburger-opened span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg);}.t-menuburger-opened span:nth-child(4){top:8px;width:0%;left:50%;}.t-menuburger-opened.t-menuburger__big span:nth-child(1){top:6px;}.t-menuburger-opened.t-menuburger__big span:nth-child(4){top:18px;}.t-menuburger-opened.t-menuburger__small span:nth-child(1),.t-menuburger-opened.t-menuburger__small span:nth-child(4){top:6px;}@media (hover),(min-width:0\0){.t-menuburger_first:hover span:nth-child(1){transform:translateY(1px);}.t-menuburger_first:hover span:nth-child(4){transform:translateY(-1px);}.t-menuburger_first.t-menuburger__big:hover span:nth-child(1){transform:translateY(3px);}.t-menuburger_first.t-menuburger__big:hover span:nth-child(4){transform:translateY(-3px);}}.t-menuburger_second span:nth-child(2),.t-menuburger_second span:nth-child(3){width:80%;left:20%;right:0;}@media (hover),(min-width:0\0){.t-menuburger_second.t-menuburger-hovered span:nth-child(2),.t-menuburger_second.t-menuburger-hovered span:nth-child(3){animation:t-menuburger-anim 0.3s ease-out normal forwards;}.t-menuburger_second.t-menuburger-unhovered span:nth-child(2),.t-menuburger_second.t-menuburger-unhovered span:nth-child(3){animation:t-menuburger-anim2 0.3s ease-out normal forwards;}}.t-menuburger_second.t-menuburger-opened span:nth-child(2),.t-menuburger_second.t-menuburger-opened span:nth-child(3){left:0;right:0;width:100%!important;}.t-menuburger_third span:nth-child(4){width:70%;left:unset;right:0;}@media (hover),(min-width:0\0){.t-menuburger_third:not(.t-menuburger-opened):hover span:nth-child(4){width:100%;}}.t-menuburger_third.t-menuburger-opened span:nth-child(4){width:0!important;right:50%;}.t-menuburger_fourth{height:12px;}.t-menuburger_fourth.t-menuburger__small{height:8px;}.t-menuburger_fourth.t-menuburger__big{height:18px;}.t-menuburger_fourth span:nth-child(2),.t-menuburger_fourth span:nth-child(3){top:4px;opacity:0;}.t-menuburger_fourth span:nth-child(4){top:8px;}.t-menuburger_fourth.t-menuburger__small span:nth-child(2),.t-menuburger_fourth.t-menuburger__small span:nth-child(3){top:3px;}.t-menuburger_fourth.t-menuburger__small span:nth-child(4){top:6px;}.t-menuburger_fourth.t-menuburger__small span:nth-child(2),.t-menuburger_fourth.t-menuburger__small span:nth-child(3){top:3px;}.t-menuburger_fourth.t-menuburger__small span:nth-child(4){top:6px;}.t-menuburger_fourth.t-menuburger__big span:nth-child(2),.t-menuburger_fourth.t-menuburger__big span:nth-child(3){top:6px;}.t-menuburger_fourth.t-menuburger__big span:nth-child(4){top:12px;}@media (hover),(min-width:0\0){.t-menuburger_fourth:not(.t-menuburger-opened):hover span:nth-child(1){transform:translateY(1px);}.t-menuburger_fourth:not(.t-menuburger-opened):hover span:nth-child(4){transform:translateY(-1px);}.t-menuburger_fourth.t-menuburger__big:not(.t-menuburger-opened):hover span:nth-child(1){transform:translateY(3px);}.t-menuburger_fourth.t-menuburger__big:not(.t-menuburger-opened):hover span:nth-child(4){transform:translateY(-3px);}}.t-menuburger_fourth.t-menuburger-opened span:nth-child(1),.t-menuburger_fourth.t-menuburger-opened span:nth-child(4){top:4px;}.t-menuburger_fourth.t-menuburger-opened span:nth-child(2),.t-menuburger_fourth.t-menuburger-opened span:nth-child(3){opacity:1;}@keyframes t-menuburger-anim{0%{width:80%;left:20%;right:0;}50%{width:100%;left:0;right:0;}100%{width:80%;left:0;right:20%;}}@keyframes t-menuburger-anim2{0%{width:80%;left:0;}50%{width:100%;right:0;left:0;}100%{width:80%;left:20%;right:0;}}</style> </div> </div> <!-- t450 --> <div id="nav4093499001marker"></div> <div class="t450__overlay"> <div class="t450__overlay_bg"
29style=" "> </div> </div> <div id="nav4093499001" class="t450 " data-tooltip-hook="#menuopen"
30style="max-width: 260px;background-color: #ffffff;"> <button type="button"
31class="t450__close-button t450__close t450_opened "
32style="background-color: #ffffff;" aria-label="Close menu"> <div class="t450__close_icon" style="color:#000000;"> <span></span> <span></span> <span></span> <span></span> </div> </button> <div class="t450__container t-align_left"> <div class="t450__top"> <div class="t450__logowrapper"> <img class="t450__logoimg"
33src="https://static.tildacdn.com/tild3530-6666-4931-a337-323766656532/logo.jpg"
34imgfield="img"
35alt="Экскурсии по Кавказу по КМВ, Ессентуки, Пятигорск, Кисловодск, Москава"> </div> <nav class="t450__menu"> <ul role="list" class="t450__list t-menu__list"> <li class="t450__list_item"> <a class="t-menu__link-item "
36href="#rec599877685" data-menu-submenu-hook="" data-menu-item-number="1">
37Туры
38</a> </li> <li class="t450__list_item"> <a class="t-menu__link-item "
39href="#rec596853556" data-menu-submenu-hook="" data-menu-item-number="2">
40О нас
41</a> </li> <li class="t450__list_item"> <a class="t-menu__link-item "
42href="#rec4183257101" data-menu-submenu-hook="" data-menu-item-number="3">
43Отзывы
44</a> </li> <li class="t450__list_item"> <a class="t-menu__link-item "
45href="#popup:myform" data-menu-submenu-hook="" data-menu-item-number="4">
46Контакты
47</a> </li> <li class="t450__list_item"> <a class="t-menu__link-item "
48href="#tour-search-mobile" data-menu-submenu-hook="" data-menu-item-number="5">
49Найти услугу
50</a> </li> </ul> </nav> </div> <div class="t450__rightside"> <div class="t450__rightcontainer"> <div class="t450__right_descr t-descr t-descr_xs" field="descr"><a href="tel:+7 (928) 316-55-66">+7 (928) 316-55-66</a></div> </div> </div> </div> </div> 
50<script>t_onReady(function() {var rec=document.querySelector('#rec4093499001');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t450_initMenu',function() {t450_initMenu('4093499001');});t_onFuncLoad('t_menuWidgets__init',function() {t_menuWidgets__init('4093499001');});});</script>
50 <style>#rec4093499001 .t-menu__link-item{}@supports (overflow:-webkit-marquee) and (justify-content:inherit){#rec4093499001 .t-menu__link-item,#rec4093499001 .t-menu__link-item.t-active{opacity:1 !important;}}</style> <style>#rec4093499001 a.t-menu__link-item{font-size:24px;color:#000000;}</style> <style>#rec4093499001 .t450__right_langs_lang a{color:#000000;}</style> </div> </header> <!--/header--> <div id="rec596844935" class="r t-rec t-rec_pt_90 t-rec_pt-res-480_0 t-rec_pb_0" style="padding-top:90px;padding-bottom:0px; " data-record-type="396"> <!-- T396 --> <style>#rec596844935 .t396__artboard{height:650px;background-color:#ffffff;}#rec596844935 .t396__filter{height:650px;}#rec596844935 .t396__carrier{height:650px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px){#rec596844935 .t396__artboard,#rec596844935 .t396__filter,#rec596844935 .t396__carrier{height:600px;}#rec596844935 .t396__filter{}#rec596844935 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:959px){#rec596844935 .t396__artboard,#rec596844935 .t396__filter,#rec596844935 .t396__carrier{height:800px;}#rec596844935 .t396__filter{}#rec596844935 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:639px){#rec596844935 .t396__artboard,#rec596844935 .t396__filter,#rec596844935 .t396__carrier{height:810px;}#rec596844935 .t396__filter{}#rec596844935 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:479px){#rec596844935 .t396__artboard,#rec596844935 .t396__filter,#rec596844935 .t396__carrier{height:730px;}#rec596844935 .t396__filter{}#rec596844935 .t396__carrier{background-attachment:scroll;}}#rec596844935 .tn-elem[data-elem-id="1685181166703"]{text-align:center;z-index:3;top:111px;left:calc(50% - 600px + 548px);width:637px;height:460px;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .tn-atom{font-size:14px;font-family:'Arial',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1));background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .t-slds__main{border-radius:calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1)) calc(15px * var(--zoom,1));border-style:solid;transition:box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596844935 .tn-elem[data-elem-id="1685181166703"]{display:table;top:45px;left:calc(50% - 480px + 443px);width:507px;height:489px;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .tn-atom__slds-img{background-size:cover;}}@media screen and (max-width:959px){#rec596844935 .tn-elem[data-elem-id="1685181166703"]{display:table;top:9px;left:calc(50% - 320px + 52px);width:536px;height:314px;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .tn-atom__slds-img{background-size:cover;}}@media screen and (max-width:639px){#rec596844935 .tn-elem[data-elem-id="1685181166703"]{display:table;top:13px;left:calc(50% - 240px + 17px);width:447px;height:309px;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .tn-atom__slds-img{background-size:cover;}}@media screen and (max-width:479px){#rec596844935 .tn-elem[data-elem-id="1685181166703"]{display:table;top:7px;left:calc(50% - 160px + 10px);width:300px;height:246px;}#rec596844935 .tn-elem[data-elem-id="1685181166703"] .tn-atom__slds-img{background-size:cover;}}#rec596844935 .tn-elem[data-elem-id="1685179299994"]{color:#000000;z-index:3;top:102px;left:calc(50% - 600px + 20px);width:498px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179299994"] .tn-atom{vertical-align:middle;color:#000000;font-size:42px;font-family:var(--t-text-font,Arial);line-height:1.3;font-weight:700;text-transform:capitalize;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596844935 .tn-elem[data-elem-id="1685179299994"]{dis
50play:table;top:49px;left:calc(50% - 480px + 10px);width:460px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179299994"] .tn-atom{vertical-align:middle;white-space:normal;font-size:35px;background-size:cover;}}@media screen and (max-width:959px){#rec596844935 .tn-elem[data-elem-id="1685179299994"]{display:table;top:368px;left:calc(50% - 320px + 34px);width:564px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179299994"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596844935 .tn-elem[data-elem-id="1685179299994"]{display:table;top:373px;left:calc(50% - 240px + 14px);width:453px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179299994"] .tn-atom{vertical-align:middle;white-space:normal;font-size:28px;background-size:cover;}}@media screen and (max-width:479px){#rec596844935 .tn-elem[data-elem-id="1685179299994"]{display:table;top:293px;left:calc(50% - 160px + 10px);width:310px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179299994"] .tn-atom{white-space:normal;font-size:19px;background-size:cover;}}#rec596844935 .tn-elem[data-elem-id="1685179614986"]{color:#000000;z-index:3;top:219px;left:calc(50% - 600px + 20px);width:400px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179614986"] .tn-atom{vertical-align:middle;color:#000000;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.3;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596844935 .tn-elem[data-elem-id="1685179614986"]{display:table;top:144px;left:calc(50% - 480px + 10px);width:318px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179614986"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec596844935 .tn-elem[data-elem-id="1685179614986"]{display:table;top:416px;left:calc(50% - 320px + 33px);width:562px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179614986"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596844935 .tn-elem[data-elem-id="1685179614986"]{display:table;top:419px;left:calc(50% - 240px + 16px);width:424px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179614986"] .tn-atom{vertical-align:middle;white-space:normal;font-size:16px;background-size:cover;}}@media screen and (max-width:479px){#rec596844935 .tn-elem[data-elem-id="1685179614986"]{display:table;top:326px;left:calc(50% - 160px + 10px);width:298px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179614986"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}#rec596844935 .tn-elem[data-elem-id="1685179747156"]{z-index:3;top:328px;left:calc(50% - 600px + 20px);width:437px;height:auto;}#rec596844935 .tn-elem[data-elem-id="1685179747156"] .tn-atom{background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596844935 .tn-elem[data-elem-id="1685179747156"]{display:table;top:294px;left:calc(50% - 480px + 11px);width:366px;height:auto;}}@media screen and (max-width:959px){#rec596844935 .tn-elem[data-elem-id="1685179747156"]{display:table;top:511px;left:calc(50% - 320px + 106px);width:429px;height:auto;}}@media screen and (max-width:639px){#rec596844935 .tn-elem[data-elem-id="1685179747156"]{display:table;top:519px;left:calc(50% - 240px + 20px);width:441px;height:auto;}}@media screen and (max-width:479px){#rec596844935 .tn-elem[data-elem-id="1685179747156"]{display:table;top:418px;left:calc(50% - 160px + 10px);width:300px;height:auto;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="596844935" data-artboard-screens="320,480,640,960,1200" data-artboard-height="650" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="730" data-artboard-upscale-res-320="window" data-artboard-height-res-480="810" data-artboard-upscale-res-480="grid" data-artboard-height-res-640="800" data-artboard-height-res-960="600"> <div class="t396__carrier" data-artboard-recid="596844935"></div> <div class="t396__filter" data-artboard-recid="596844935"></div> <div class='t396__elem tn-elem tn-elem__5968449351685181166703' data-elem-id='1685181166703' data-elem-type='gallery' data-field-top-value="111" data-field-left-value="548" data-field-height-value="460" data-field-width-value="637" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-fontsize-value="14" data-field-top-res-320-value="7" data-field-left-res-320-value="10" data-field-height-res-320-value="246" data-field-width-res-320-value="300" data-field-top-res-480-value="13" data-field-left-res-480-value="17" data-field-height-res-480-value="309" data-field-width-res-480-value="447" data-field-top-res-640-value="9" data-field-left-res-640-value="52" data-field-height-res-640-value="314" data-field-width-res-640-value="536" data-field-top-res-960-value="45" data-field-left-res-960-value="443" data-field-height-res-960-value="489" data-field-width-res-960-value="507" data-field-imgs-value="[{&quot;lid&quot;:&quot;tild3537-3764-4234-b334-373839353136&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild6137-3837-4334-b264-363662393761/ChatGPT_Image_Sep_28.png&quot;,&quot;li_imgalt&quot;:&quot;&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;,&quot;li_webm&quot;:&quot;&quot;,&quot;li_mp4&quot;:&quot;&quot;,&quot;li_rutube&quot;:&quot;&quot;,&quot;li_vkvideo&quot;:&quot;&quot;,&quot;li_kinescope&quot;:&quot;&quot;,&quot;li_iframe&quot;:&quot;&quot;,&quot;li_hash&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;
50tild3535-3432-4365-b961-353134366330&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3535-3432-4365-b961-353134366330/ChatGPT_Image_Sep_28.png&quot;,&quot;li_imgalt&quot;:&quot;&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;,&quot;li_webm&quot;:&quot;&quot;,&quot;li_mp4&quot;:&quot;&quot;,&quot;li_rutube&quot;:&quot;&quot;,&quot;li_vkvideo&quot;:&quot;&quot;,&quot;li_kinescope&quot;:&quot;&quot;,&quot;li_iframe&quot;:&quot;&quot;,&quot;li_hash&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3261-3432-4962-b565-633533396130&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3261-3432-4962-b565-633533396130/___.jpg&quot;,&quot;li_imgalt&quot;:&quot;\u043f\u043e\u0435\u0437\u043a\u0438 \u0432 \u0433\u043e\u0440\u044b \u042d\u043b\u044c\u0431\u0440\u0443\u0441, \u0414\u043e\u043c\u0431\u0430\u0439, \u0410\u0440\u0445\u044b\u0437&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3962-3033-4664-b964-333765633236&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3962-3033-4664-b964-333765633236/ChatGPT_Image_Sep_28.png&quot;,&quot;li_imgalt&quot;:&quot;&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;,&quot;li_webm&quot;:&quot;&quot;,&quot;li_mp4&quot;:&quot;&quot;,&quot;li_rutube&quot;:&quot;&quot;,&quot;li_vkvideo&quot;:&quot;&quot;,&quot;li_kinescope&quot;:&quot;&quot;,&quot;li_iframe&quot;:&quot;&quot;,&quot;li_hash&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3134-6437-4232-b465-363538633964&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3134-6437-4232-b465-363538633964/ChatGPT_Image_Sep_28.png&quot;,&quot;li_imgalt&quot;:&quot;&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;,&quot;li_webm&quot;:&quot;&quot;,&quot;li_mp4&quot;:&quot;&quot;,&quot;li_rutube&quot;:&quot;&quot;,&quot;li_vkvideo&quot;:&quot;&quot;,&quot;li_kinescope&quot;:&quot;&quot;,&quot;li_iframe&quot;:&quot;&quot;,&quot;li_hash&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3534-3937-4739-b663-343239373261&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3534-3937-4739-b663-343239373261/5905af05-a608-404a-a.webp&quot;,&quot;li_imgalt&quot;:&quot;&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;,&quot;li_webm&quot;:&quot;&quot;,&quot;li_mp4&quot;:&quot;&quot;,&quot;li_rutube&quot;:&quot;&quot;,&quot;li_vkvideo&quot;:&quot;&quot;,&quot;li_kinescope&quot;:&quot;&quot;,&quot;li_iframe&quot;:&quot;&quot;,&quot;li_hash&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3166-3264-4861-b837-626634363935&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3166-3264-4861-b837-626634363935/IMG_20221030_112029.jpg&quot;,&quot;li_imgalt&quot;:&quot;\u042d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438 \u043f\u043e \u041a\u041c\u0412 \u0438 \u0415\u0441\u0441\u0435\u043d\u0442\u0443\u043a\u043e\u0432, \u041f\u044f\u0442\u0438\u0433\u043e\u0440\u0441\u043a\u0430, \u041a\u0438\u0441\u043b\u043e\u0432\u043e\u0434\u0441\u043a\u0430&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild6565-3337-4633-b762-623163613666&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild6565-3337-4633-b762-623163613666/IMG-20221008-WA0029.jpg&quot;,&quot;li_imgalt&quot;:&quot;\u042d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438 \u043f\u043e \u041a\u0430\u0432\u043a\u0430\u0437\u0443. \u041a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0421\u0435\u0432\u0435\u0440\u043d\u043e\u043c \u043a\u0430\u0432\u043a\u0430\u0437\u0435&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;},{&quot;lid&quot;:&quot;tild3965-3863-4364-b062-653033646431&quot;,&quot;li_img&quot;:&quot;https://static.tildacdn.com/tild3965-3863-4364-b062-653033646431/___.jpg&quot;,&quot;li_imgalt&quot;:&quot;\u041f\u043e\u0435\u0437\u0434\u043a\u0438 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u043d\u0430 \u0447\u0435\u0440\u043d\u043e\u0435 \u043c\u043e\u0440\u0435&quot;,&quot;li_imgtitle&quot;:&quot;&quot;,&quot;li_imgurl&quot;:&quot;&quot;,&quot;li_imgtarget&quot;:&quot;&quot;,&quot;li_imgnofollow&quot;:&quot;&quot;,&quot;li_youtube&quot;:&quot;&quot;,&quot;li_vimeo&quot;:&quot;&quot;}]" data-field-slds_dotsbgcolor-value="#999999" data-field-slds_dotsbgcoloractive-value="#f2931d" data-field-slds_speed-value="none" data-field-slds_autoplay-value="5" data-field-slds_playiconcolor-value="#fff" data-field-slds_stretch-value="cover" data-field-slds_imgposition-value="center center" data-field-slds_loop-value="loop" data-field-slds_arrowalign-value="center" data-field-slds_arrowbetweenmargin-value="10" data-field-slds_playiconsize-value="70" data-field-slds_dotssize-value="8" data-field-slds_dotscontrol
50s-value="near" data-field-slds_arrowcontrols-value="none" data-field-slds_arrowsize-value="s" data-field-slds_arrowlinesize-value="1" data-field-slds_captiontopmargin-value="20" data-field-slds_dotsvmargin-value="10" data-field-slds_captionwidth-value="80" data-field-slds_arrowhmargin-value="20" data-field-slds_dotshmargin-value="15" data-field-slds_arrowvmargin-value="10" data-field-borderstyle-value="solid"> <div class='tn-atom tn-atom__gallery'></div> </div> <div class='t396__elem tn-elem tn-elem__5968449351685179299994' data-elem-id='1685179299994' data-elem-type='text' data-field-top-value="102" data-field-left-value="20" data-field-height-value="110" data-field-width-value="498" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="42" data-field-top-res-320-value="293" data-field-left-res-320-value="10" data-field-width-res-320-value="310" data-field-fontsize-res-320-value="19" data-field-top-res-480-value="373" data-field-left-res-480-value="14" data-field-height-res-480-value="36" data-field-width-res-480-value="453" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-fontsize-res-480-value="28" data-field-top-res-640-value="368" data-field-left-res-640-value="34" data-field-height-res-640-value="46" data-field-width-res-640-value="564" data-field-top-res-960-value="49" data-field-left-res-960-value="10" data-field-height-res-960-value="92" data-field-width-res-960-value="460" data-field-container-res-960-value="grid" data-field-heightunits-res-960-value="px" data-field-textfit-res-960-value="autoheight" data-field-fontsize-res-960-value="35"> <div class='tn-atom'field='tn_text_1685179299994'>ИНДИВИДУАЛЬНЫЕ ЭКСКУРСИИ</div> </div> <div class='t396__elem tn-elem tn-elem__5968449351685179614986' data-elem-id='1685179614986' data-elem-type='text' data-field-top-value="219" data-field-left-value="20" data-field-height-value="92" data-field-width-value="400" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="326" data-field-left-res-320-value="10" data-field-width-res-320-value="298" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="419" data-field-left-res-480-value="16" data-field-height-res-480-value="42" data-field-width-res-480-value="424" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-fontsize-res-480-value="16" data-field-top-res-640-value="416" data-field-left-res-640-value="33" data-field-width-res-640-value="562" data-field-top-res-960-value="144" data-field-left-res-960-value="10" data-field-height-res-960-value="69" data-field-width-res-960-value="318" data-field-container-res-960-value="grid" data-field-heightunits-res-960-value="px" data-field-textfit-res-960-value="autoheight"> <h2 class='tn-atom'field='tn_text_1685179614986'>Экскурсии по Кавказу, поездки на Чёрное море, в Крым из Кавказских Минеральных Вод на легковой машине. Оставляйте заявку и успейте забронировать лучшие даты в сезон!</h2> </div> <div class='t396__elem tn-elem tn-elem__5968449351685179747156' data-elem-id='1685179747156' data-elem-type='form' data-field-top-value="328" data-field-left-value="20" data-field-height-value="277" data-field-width-value="437" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="hug" data-field-top-res-320-value="418" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-top-res-480-value="519" data-field-left-res-480-value="20" data-field-width-res-480-value="441" data-field-top-res-640-value="511" data-field-left-res-640-value="106" data-field-width-res-640-value="429" data-field-top-res-960-value="294" data-field-left-res-960-value="11" data-field-width-res-960-value="366" data-field-version-value="2" data-field-inputpos-value="v" data-field-inputfontfamily-value="Arial" data-field-inputfontsize-value="16" data-field-inputfontweight-value="400" data-field-inputcolor-value="#000000" data-field-inputbgcolor-value="#dedede" data-field-inputbordercolor-value="#d1d1d1" data-field-inputbordersize-value="1" data-field-inputradius-value="10" data-field-inputheight-value="50" data-field-inputmargbottom-value="20" data-field-inputmargright-value="20" data-field-inputtitlefontsize-value="16" data-field-inputtitlefontweight-value="400" data-field-inputtitlecolor-value="#000000" data-field-inputtitlemargbottom-value="5" data-field-inputelsfontweight-value="400" data-field-inputelsfontsize-value="14" data-field-buttontitle-value="ОТПРАВИТЬ" data-field-buttoncolor-value="#ffffff" data-field-buttonbgcolor-value="#f2931d" data-field-buttonradius-value="10" data-field-buttonwidth-value="160" data-field-buttonwidthstretch-value="n" data-field-buttonheight-value="50" data-field-buttonfontsize-value="14" data-field-buttonfontweight-value="600" data-field-receivers-value="db44e47e746f78b5644c6551a0777971,6380486f3b28b35680f9f0a3dda0c8e1,a2180241862c90aa2166b1589a2e2af3" data-field-form_btn_iconposition-value="left" data-field-form_btn_iconsize-value="20" data-field-form_btn_iconmargin-value="10" data-field-togglefontfamily-value="Arial" data-field-togglelabelcolor-value="#000000" data-field-uploadbuttonbgcolor-value="#f2931d" data-field-uploadbuttontextcolor-value="#ffffff" data-field-inputpos-res-320-value="v" data-field-inputfontsize-res-320-value="13" data-field-buttonalign-res-320-value="center" data-field-buttonwidth-res-320-value="300" data-field-buttonfontsize-res-320-value="12" data-field-buttonalign-res-480-value="" data-field-buttonwidthstretch-res-480-value="n" data-field-buttonalign-res-640-value="" data-field-buttonwidthstretch-res-640-value="n" data-field-buttonalign-res-960-value="" data-field-buttonwidthstretch-res-960-value="n"> <div class='tn-atom tn-atom__form'></div> <!--googleoff: all--> <!--noindex--> <div data-nosnippet="true" class="tn-atom__inputs-wrapp" style="display:none;"> <div class="tn-atom__inputs-data" data-value="[{&quot;lid&quot;:&quot;1790521600723&quot;,&quot;ls&quot;:&quot;10&quot;,&quot;loff&quot;:&quot;&quot;,&quot;li_parent_id&quot;:&quot;&quot;,&quot;li_type&quot;:&quot;da&quot;,&quot;li_title&quot;:&quot;\u0414\u0430\u0442\u0430 \u043f\u043e\u0435\u0437\u0434\u043a\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)&quot;,&quot;li_dateformat&quot;:&quot;DD-MM-YYYY&quot;,&quot;li_datediv&quot;:&quot;dash&quot;,&quot;li_nm&quot;:&quot;\u0414\u0430\u0442\u0430 \u043f\u043e\u0435\u0437\u0434\u043a\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)&quot;,&quot;li_datemask&quot;:&quot;99-99-9999&quot;},{&quot;lid&quot;:&quot;1531306243545&quot;,&quot;ls&quot;:&quot;20&quot;,&quot;loff&quot;:&quot;&quot;,&quot;li_parent_id&quot;:&quot;&quot;,&quot;li_type&quot;:&quot;ph&quot;,&quot;li_title&quot;:&quot;\u0412\u0430\u0448 \u0442\u0435\u043b\u0435\u0444\u043e\u043d&quot;,&quot;li_masktype&quot;:&quot;a&quot;,&quot;li_maskcountry&quot;:&quot;RU&quot;,&quot;li_req&quot;:&quot;y&quot;,&quot;li_nm&quot;:&quot;Phone&quot;},{&quot;lid&quot;:&quot;1790522660966&quot;,&quot;ls&quot;:&quot;30&quot;,&quot;loff&quot;:&quot;&quot;,&quot;li_parent_id&quot;:&quot;&quot;,&quot;li_type&quot;:&quot;cb&quot;,&quot;li_label&quot;:&quot;&lt;div style=\&quot;font-size: 14px;\&quot; data-customstyle=\&quot;yes\&quot;&gt;
50\u042f \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 &lt;a href=\&quot;#popup:infoblock\&quot; style=\&quot;color: rgb(255, 133, 98); box-shadow: none; text-decoration: none; border-bottom: 2px solid rgb(255, 133, 98);\&quot; rel=\&quot;nofollow\&quot;&gt;\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438&lt;\/a&gt;&lt;\/div&gt;&quot;,&quot;li_req&quot;:&quot;y&quot;,&quot;li_nm&quot;:&quot;Checkbox&quot;}]"></div> </div> <!-- Form export deps: https://static.tildacdn.com/css/tilda-zero-form-errorbox.min.css https://static.tildacdn.com/css/tilda-zero-form-horizontal.min.css https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js https://static.tildacdn.com/css/tilda-date-picker-1.0.min.css https://static.tildacdn.com/js/tilda-date-picker-1.0.min.js https://static.tildacdn.com/js/tilda-calc-1.0.min.js https://static.tildacdn.com/js/tilda-upwidget-1.1.min.js https://static.tildacdn.com/js/uploadcare-3.x.full.min.js https://static.tildacdn.com/js/uploadcare-3.x.min.js https://static.tildacdn.com/js/tilda-range-1.0.min.js https://static.tildacdn.com/css/tilda-range-1.0.min.css https://static.tildacdn.com/js/tilda-img-select-1.0.min.js https://static.tildacdn.com/css/tilda-img-select-1.0.min.css https://static.tildacdn.com/js/tilda-conditional-form-1.0.min.js --> <!--/noindex--> <!--googleon: all--> </div> </div> </div> 
50<script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('596844935');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('596844935');});});</script>
50 <!-- /T396 --> </div> <div id="rec599919015" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_center"> <div class="t-col t-col_10 t-prefix_1"> <h2 class="t050__title t-title t-title_xxl" field="title">ИНДИВИДУАЛЬНЫЕ ЭКСКУРСИИ ПО КАВКАЗУ ИЗ ГОРОДОВ КМВ</h2> </div> </div> </div> <style>#rec599919015 .t050__uptitle{text-transform:uppercase;}@media screen and (min-width:900px){#rec599919015 .t050__title{font-size:50px;}}</style> </div> <div id="rec4329582001" class="r t-rec" style=" " data-record-type="215"> <a name="tours" style="font-size:0;"></a> </div> <div id="rec599877685" class="r t-rec t-rec_pt_60 t-rec_pb_60" style="padding-top:60px;padding-bottom:60px; " data-animationappear="off" data-record-type="778"> <!-- t778 --> <!-- @classes: t-text t-text_xxs t-name t-name_xs t-name_md t-name_xl t-descr t-descr_xxs t-btn t-btn_xs t-btn_sm t-animate data-zoomable="yes" t-uptitle t-uptitle_xxl t-align_center t-align_left --> <div class="t778"> <!-- grid container start --> <div class="t-store js-store"> <div class="js-store-parts-select-container t-store__grid-cont t-container"></div> <!-- preloader els --> <div class="js-store-grid-cont-preloader t-store__grid-cont t-store__grid-cont-preloader_hidden t-container t-store__grid-cont_mobile-grid"> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-clear t-store__grid-separator"></div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> </div> <!-- preloader els end --> <div class="js-store-grid-cont t-store__grid-cont t-container t-store__grid-cont_mobile-grid"></div> </div> <!-- grid container end --></div> <!-- catalog setup start --> <style>#rec599877685 .t-slds__bullet_active .t-slds__bullet_body{background-color:#222 !important;}#rec599877685 .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}#rec599877685 .t-store__parts-switch-btn{}#rec599877685 .t-store__parts-sublist .t-store__parts-switch-btn{}</style> <style>#rec599877685 .t-store__card .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-store__card .t-typography__title{font-size:26px;}}#rec599877685 .t-store__relevants__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-store__relevants__title{font-size:26px;}}#rec599877685 .t-store__card .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-store__card .t-typography__descr{font-size:20px;}}#rec599877685 .t-store__card .t-store__card__price{font-size:26px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-store__card .t-store__card__price{font-size:26px;}}#rec599877685 .t-store__card .t-store__card__price_old{font-weight:400;}</style> <style>#rec599877685 .t-popup .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-popup .t-typography__title{font-size:26px;}}#rec599877685 .t-popup .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-popup .t-typography__descr{font-size:20px;}}#rec599877685 .t-popup .t-store__prod-popup__price{font-size:26px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-popup .t-store__prod-popup__price{font-size:26px;}}#rec599877685 .t-popup .t-store__prod-popup__price_old{font-weight:400;}</style> <style>#rec599877685 .t-store__pagination__item{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599877685 .t-store__pagination__item{font-size:20px;}}</style> <style>#rec599877685 .t-store__parts-switch-btn{font-size:20px;}#rec599877685 .t-store__parts-item-arrow{font-size:20px;}#rec599877685 .t-store__parts-tree-expander-icon{font-size:20px;}</style> <div class="js-store-tpl-slider-arrows" style="display: none;"> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-left" data-sli
50de-direction="left"> <button
51type="button"
52class="t-slds__arrow t-slds__arrow-left t-slds__arrow-withbg"
53aria-controls="carousel_599877685"
54aria-disabled="false"
55aria-label="Предыдущий слайд"
56style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-left" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
57fill="none"
58stroke="#000000"
59stroke-linejoin="butt"
60stroke-linecap="butt"
61stroke-width="1"
62points="0.5,0.5 6.5,6.5 0.5,12.5"
63/> </svg> </div> </button> </li> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-right" data-slide-direction="right"> <button
64type="button"
65class="t-slds__arrow t-slds__arrow-right t-slds__arrow-withbg"
66aria-controls="carousel_599877685"
67aria-disabled="false"
68aria-label="Следующий слайд"
69style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-right" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
70fill="none"
71stroke="#000000"
72stroke-linejoin="butt"
73stroke-linecap="butt"
74stroke-width="1"
75points="0.5,0.5 6.5,6.5 0.5,12.5"
76/> </svg> </div> </button> </li></div> 
76<script>t_onReady(function(){var prodcard_optsObj={blockId:'',hasWrap:'true',txtPad:'',bgColor:'',borderRadius:'',shadow:'',shadowSize:'10px',shadowOpacity:'',shadowHover:'',shadowSizeHover:'15px',shadowOpacityHover:'',shadowShiftyHover:'sm',btnTitle1:'',btnLink1:'popup',btnTitle2:'',btnLink2:'popup',showOpts:false,style:'',hasImg:true,hasDescr:true,hasSeparator:true};var price_optsObj={color:'',colorOld:'',position:'',priceRange:''};var popup_optsObj={popupContainer:'',columns:'6',columns2:'6',isVertical:'',align:'',btnTitle:'Заказать',closeText:'вернуться',iconColor:'#000000',containerBgColor:'#ffffff',overlayBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',popupStat:'',tabsPosition:'',fixedButton:false,mobileGalleryStyle:''};var slider_optsObj={anim_speed:'',videoPlayerIconColor:'',cycle:'',controls:'arrowsthumbs',bgcolor:'#ebebeb'};var slider_dotsOptsObj={size:'',bgcolor:'',bordersize:'',bgcoloractive:''};var slider_slidesOptsObj={zoomable:true,bgsize:'cover',ratio:'1'};var typography_optsObj={descrColor:'',titleColor:'',optionsColor:''};var default_sort={default:null,in_stock:false};var options={recid:'599877685',storepart:'842398693471',previewmode:'yes',prodCard:prodcard_optsObj,popup_opts:popup_optsObj,defaultSort:default_sort,galleryStyle:'',slider_opts:slider_optsObj,slider_dotsOpts:slider_dotsOptsObj,slider_slidesOpts:slider_slidesOptsObj,typo:typography_optsObj,price:price_optsObj,blocksInRow:'3',colClass:'t-col t-col_4',sidebar:false,colWidth:'360',colClassFullWidth:'t-col t-col_12',imageHover:true,imageHeight:'300px',imageWidth:'',imageRatio:'1',imageRatioClass:'',align:'left',vindent:'',isHorizOnMob:false,itemsAnim:'fadeinup',hasOriginalAspectRatio:false,size:8,markColor:'#ffffff',markBgColor:'#ff4a4a',currencySide:'r',currencyTxt:'р.',currencySeparator:',',currencyDecimal:'',btnSize:'xs',buttonRadius:'5px',buttonBgColor:'#f2931d',isFlexCols:'',hideStoreParts:true,verticalAlignButtons:true,hideFilters:true,titleRelevants:'Смотрите также',showRelevants:'743690276281',showPagination:'',tabs:'tabs',relevants_slider:true,relevants_quantity:'100',sliderthumbsside:'',showStoreBtnQuantity:'',verticalAlign:'',rightColumnWidth:'',isTitleClip:false,horizontalScrollHint:'hand'};t_onFuncLoad('t_store_init',function() {t_store_init('599877685',options);});});</script>
76 <template id="button_buy_599877685"> <a
77class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs t-store__prod-popup__btn"
78href="#order"><span class="t-btnflex__text js-store-prod-popup-buy-btn-txt">Заказать</span> <style>#rec599877685 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599877685 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599877685 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></a> </template> <template id="button_loadmore_599877685"> <button
79class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs js-store-load-more-btn t-store__load-more-btn"
80type="button"><span class="t-btnflex__text js-store-load-more-btn-text">Load more</span> <style>#rec599877685 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599877685 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599877685 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></button> </template> <!-- catalog setup end --> <style>#rec599877685 .t-menu__link-item{}@supports (overflow:-webkit-marquee) and (justify-content:inherit){#rec599877685 .t-menu__link-item,#rec599877685 .t-menu__link-item.t-active{opacity:1 !important;}}</style> <style>#rec599877685 .t-col .t-store__card__wrap_all:hover{box-shadow:0px 10px 15px 0px rgba(0,0,0,0.3) !important;}</style> <style>#rec599877685 .t778__wrapper:not(.t-popup__container .t778__wrapper),#rec599877685 .t-store__card__wrap_all,#rec599877685 .t-store__card__imgwrapper,#rec599877685 .t778__imgwrapper{border-radius:30px;}</style> <style>#rec599877685 .t778 .t-popup__container{border-radius:0px;}</style> </div> <div id="rec599938611" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_center"> <div class="t-col t-col_10 t-prefix_1"> <h2 class="t050__title t-title t-title_xxl" field="title">ИНДИВИДУАЛЬНЫЕ ОБЗОРНЫЕ ЭКСКУРСИИ ПО КМВ</h2> </div> </div> </div> <style>#rec599938611 .t050__uptitle{text-transform:uppercase;}@media screen and (min-width:900px){#rec599938611 .t050__title{font-size:50px;}}</style> </div> <div id="rec599938737" class="r t-rec t-rec_pt_60 t-rec_pb_60" style="padding-top:60px;padding-bottom:60px; " data-animationappear="off" data-record-type="778"> <!-- t778 --> <!-- @classes: t-text t-text_xxs t-name t-name_xs t-name_md t-name_xl t-descr t-descr_xxs t-btn t-btn_xs t-btn_sm t-animate data-zoomable="yes" t-uptitle t-uptitle_xxl t-align_center t-align_left --> <div class="t778"> <!-- grid container start --> <div class="t-store js-store"> <div class="js-store-parts-select-container t-store__grid-cont t-container"></div> <!-- preloader els --> <div class="js-store-grid-cont-preloader t-store__grid-cont t-store__grid-cont-preloader_hidden t-container t-store__grid-cont_mobile-grid"> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-clear t-store__grid-separator"></div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> </div> <!-- preloader els end --> <div class="js-store-grid-cont t-store__grid-cont t-container t-store__grid-cont_mobile-grid"></div> </div> <!-- grid container end --></div> <!-- catalog setup start --> <style>#rec599938737 .t-slds__bullet_active .t-slds__bullet_body{background-color:#222 
80!important;}#rec599938737 .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}#rec599938737 .t-store__parts-switch-btn{}#rec599938737 .t-store__parts-sublist .t-store__parts-switch-btn{}</style> <style>#rec599938737 .t-store__card .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-store__card .t-typography__title{font-size:26px;}}#rec599938737 .t-store__relevants__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-store__relevants__title{font-size:26px;}}#rec599938737 .t-store__card .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-store__card .t-typography__descr{font-size:20px;}}#rec599938737 .t-store__card .t-store__card__price{font-size:26px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-store__card .t-store__card__price{font-size:26px;}}#rec599938737 .t-store__card .t-store__card__price_old{font-weight:400;}</style> <style>#rec599938737 .t-popup .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-popup .t-typography__title{font-size:26px;}}#rec599938737 .t-popup .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-popup .t-typography__descr{font-size:20px;}}#rec599938737 .t-popup .t-store__prod-popup__price{font-size:26px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-popup .t-store__prod-popup__price{font-size:26px;}}#rec599938737 .t-popup .t-store__prod-popup__price_old{font-weight:400;}</style> <style>#rec599938737 .t-store__pagination__item{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599938737 .t-store__pagination__item{font-size:20px;}}</style> <div class="js-store-tpl-slider-arrows" style="display: none;"> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-left" data-slide-direction="left"> <button
81type="button"
82class="t-slds__arrow t-slds__arrow-left t-slds__arrow-withbg"
83aria-controls="carousel_599938737"
84aria-disabled="false"
85aria-label="Предыдущий слайд"
86style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-left" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
87fill="none"
88stroke="#000000"
89stroke-linejoin="butt"
90stroke-linecap="butt"
91stroke-width="1"
92points="0.5,0.5 6.5,6.5 0.5,12.5"
93/> </svg> </div> </button> </li> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-right" data-slide-direction="right"> <button
94type="button"
95class="t-slds__arrow t-slds__arrow-right t-slds__arrow-withbg"
96aria-controls="carousel_599938737"
97aria-disabled="false"
98aria-label="Следующий слайд"
99style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-right" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
100fill="none"
101stroke="#000000"
102stroke-linejoin="butt"
103stroke-linecap="butt"
104stroke-width="1"
105points="0.5,0.5 6.5,6.5 0.5,12.5"
106/> </svg> </div> </button> </li></div> 
106<script>t_onReady(function(){var prodcard_optsObj={blockId:'',hasWrap:'true',txtPad:'',bgColor:'',borderRadius:'',shadow:'',shadowSize:'10px',shadowOpacity:'',shadowHover:'',shadowSizeHover:'15px',shadowOpacityHover:'',shadowShiftyHover:'sm',btnTitle1:'',btnLink1:'popup',btnTitle2:'',btnLink2:'popup',showOpts:false,style:'',hasImg:true,hasDescr:true,hasSeparator:true};var price_optsObj={color:'',colorOld:'',position:'',priceRange:''};var popup_optsObj={popupContainer:'',columns:'6',columns2:'6',isVertical:'',align:'',btnTitle:'Заказать',closeText:'вернуться',iconColor:'#000000',containerBgColor:'#ffffff',overlayBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',popupStat:'',tabsPosition:'',fixedButton:false,mobileGalleryStyle:''};var slider_optsObj={anim_speed:'',videoPlayerIconColor:'',cycle:'',controls:'arrowsthumbs',bgcolor:'#ebebeb'};var slider_dotsOptsObj={size:'',bgcolor:'',bordersize:'',bgcoloractive:''};var slider_slidesOptsObj={zoomable:true,bgsize:'cover',ratio:'1'};var typography_optsObj={descrColor:'',titleColor:'',optionsColor:''};var default_sort={default:null,in_stock:false};var options={recid:'599938737',storepart:'764927021671',previewmode:'yes',prodCard:prodcard_optsObj,popup_opts:popup_optsObj,defaultSort:default_sort,galleryStyle:'',slider_opts:slider_optsObj,slider_dotsOpts:slider_dotsOptsObj,slider_slidesOpts:slider_slidesOptsObj,typo:typography_optsObj,price:price_optsObj,blocksInRow:'3',colClass:'t-col t-col_4',sidebar:false,colWidth:'360',colClassFullWidth:'t-col t-col_12',imageHover:true,imageHeight:'300px',imageWidth:'',imageRatio:'1',imageRatioClass:'',align:'left',vindent:'',isHorizOnMob:false,itemsAnim:'fadeinup',hasOriginalAspectRatio:false,size:4,markColor:'#ffffff',markBgColor:'#ff4a4a',currencySide:'r',currencyTxt:'р.',currencySeparator:',',currencyDecimal:'',btnSize:'xs',buttonRadius:'5px',buttonBgColor:'#f2931d',isFlexCols:'',hideStoreParts:true,verticalAlignButtons:true,hideFilters:true,titleRelevants:'Смотрите также',showRelevants:'743690276281',showPagination:'',tabs:'tabs',relevants_slider:true,relevants_quantity:'1000',sliderthumbsside:'',showStoreBtnQuantity:'',verticalAlign:'',rightColumnWidth:'',isTitleClip:false,horizontalScrollHint:'hand'};t_onFuncLoad('t_store_init',function() {t_store_init('599938737',options);});});</script>
106 <template id="button_buy_599938737"> <a
107class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs t-store__prod-popup__btn"
108href="#order"><span class="t-btnflex__text js-store-prod-popup-buy-btn-txt">Заказать</span> <style>#rec599938737 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599938737 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599938737 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></a> </template> <template id="button_loadmore_599938737"> <button
109class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs js-store-load-more-btn t-store__load-more-btn"
110type="button"><span class="t-btnflex__text js-store-load-more-btn-text">Load more</span> <style>#rec599938737 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599938737 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599938737 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></button> </template> <!-- catalog setup end --> <style>#rec599938737 .t-menu__link-item{}@supports (overflow:-webkit-marquee) and (justify-content:inherit){#rec599938737 .t-menu__link-item,#rec599938737 .t-menu__link-item.t-active{opacity:1 !important;}}</style> <style>#rec599938737 .t-col .t-store__card__wrap_all:hover{box-shadow:0px 10px 15px 0px rgba(0,0,0,0.3) !important;}</style> <style>#rec599938737 .t778__wrapper:not(.t-popup__container .t778__wrapper),#rec599938737 .t-store__card__wrap_all,#rec599938737 .t-store__card__imgwrapper,#rec599938737 .t778__imgwrapper{border-radius:30px;}</style> <style>#rec599938737 .t778 .t-popup__container{border-radius:39px;}</style> </div> <div id="rec599959395" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_center"> <div class="t-col t-col_10 t-prefix_1"> <h2 class="t050__title t-title t-title_xxl" field="title">ПОЕЗДКИ НА ЧЕРНОМОРСКИЕ КУРОРТЫ</h2> </div> </div> </div> <style>#rec599959395 .t050__uptitle{text-transform:uppercase;}@media screen and (min-width:900px){#rec599959395 .t050__title{font-size:50px;}}</style> </div> <div id="rec1015119046" class="r t-rec t-rec_pt_60 t-rec_pb_60" style="padding-top:60px;padding-bottom:60px; " data-animationappear="off" data-record-type="778"> <!-- t778 --> <!-- @classes: t-text t-text_xxs t-name t-name_xs t-name_md t-name_xl t-descr t-descr_xxs t-btn t-btn_xs t-btn_sm t-animate data-zoomable="yes" t-uptitle t-uptitle_xxl t-align_center t-align_left --> <div class="t778"> <!-- grid container start --> <div class="t-store js-store"> <div class="js-store-parts-select-container t-store__grid-cont t-container"></div> <!-- preloader els --> <div class="js-store-grid-cont-preloader t-store__grid-cont t-store__grid-cont-preloader_hidden t-container t-store__grid-cont_mobile-grid"> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-clear t-store__grid-separator"></div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> </div> <!-- preloader els end --> <div class="js-store-grid-cont t-store__grid-cont t-container t-store__grid-cont_mobile-grid"></div> </div> <!-- grid container end --></div> <!-- catalog setup start --> <style>#rec1015119046 .t-slds__bullet_active .t-slds__bullet_body{background-color:#222 
110!important;}#rec1015119046 .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}#rec1015119046 .t-store__parts-switch-btn{}#rec1015119046 .t-store__parts-sublist .t-store__parts-switch-btn{}</style> <style>#rec1015119046 .t-store__card .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-store__card .t-typography__title{font-size:26px;}}#rec1015119046 .t-store__relevants__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-store__relevants__title{font-size:26px;}}#rec1015119046 .t-store__card .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-store__card .t-typography__descr{font-size:20px;}}#rec1015119046 .t-store__card .t-store__card__price{font-size:26px;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-store__card .t-store__card__price{font-size:26px;}}#rec1015119046 .t-store__card .t-store__card__price_old{font-weight:400;}</style> <style>#rec1015119046 .t-popup .t-typography__title{font-size:26px;font-weight:700;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-popup .t-typography__title{font-size:26px;}}#rec1015119046 .t-popup .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-popup .t-typography__descr{font-size:20px;}}#rec1015119046 .t-popup .t-store__prod-popup__price{font-size:26px;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-popup .t-store__prod-popup__price{font-size:26px;}}#rec1015119046 .t-popup .t-store__prod-popup__price_old{font-weight:400;}</style> <style>#rec1015119046 .t-store__pagination__item{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1015119046 .t-store__pagination__item{font-size:20px;}}</style> <div class="js-store-tpl-slider-arrows" style="display: none;"> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-left" data-slide-direction="left"> <button
111type="button"
112class="t-slds__arrow t-slds__arrow-left t-slds__arrow-withbg"
113aria-controls="carousel_1015119046"
114aria-disabled="false"
115aria-label="Предыдущий слайд"
116style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-left" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
117fill="none"
118stroke="#000000"
119stroke-linejoin="butt"
120stroke-linecap="butt"
121stroke-width="1"
122points="0.5,0.5 6.5,6.5 0.5,12.5"
123/> </svg> </div> </button> </li> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-right" data-slide-direction="right"> <button
124type="button"
125class="t-slds__arrow t-slds__arrow-right t-slds__arrow-withbg"
126aria-controls="carousel_1015119046"
127aria-disabled="false"
128aria-label="Следующий слайд"
129style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-right" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
130fill="none"
131stroke="#000000"
132stroke-linejoin="butt"
133stroke-linecap="butt"
134stroke-width="1"
135points="0.5,0.5 6.5,6.5 0.5,12.5"
136/> </svg> </div> </button> </li></div> 
136<script>t_onReady(function(){var prodcard_optsObj={blockId:'',hasWrap:'true',txtPad:'',bgColor:'',borderRadius:'',shadow:'',shadowSize:'10px',shadowOpacity:'',shadowHover:'',shadowSizeHover:'15px',shadowOpacityHover:'',shadowShiftyHover:'sm',btnTitle1:'',btnLink1:'popup',btnTitle2:'',btnLink2:'popup',showOpts:false,style:'',hasImg:true,hasDescr:true,hasSeparator:true};var price_optsObj={color:'',colorOld:'',position:'',priceRange:''};var popup_optsObj={popupContainer:'',columns:'6',columns2:'6',isVertical:'',align:'',btnTitle:'Заказать',closeText:'вернуться',iconColor:'#000000',containerBgColor:'#ffffff',overlayBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',popupStat:'',tabsPosition:'',fixedButton:false,mobileGalleryStyle:''};var slider_optsObj={anim_speed:'',videoPlayerIconColor:'',cycle:'',controls:'arrowsthumbs',bgcolor:'#ebebeb'};var slider_dotsOptsObj={size:'',bgcolor:'',bordersize:'',bgcoloractive:''};var slider_slidesOptsObj={zoomable:true,bgsize:'cover',ratio:'1'};var typography_optsObj={descrColor:'',titleColor:'',optionsColor:''};var default_sort={default:null,in_stock:false};var options={recid:'1015119046',storepart:'742265731451',previewmode:'yes',prodCard:prodcard_optsObj,popup_opts:popup_optsObj,defaultSort:default_sort,galleryStyle:'',slider_opts:slider_optsObj,slider_dotsOpts:slider_dotsOptsObj,slider_slidesOpts:slider_slidesOptsObj,typo:typography_optsObj,price:price_optsObj,blocksInRow:'3',colClass:'t-col t-col_4',sidebar:false,colWidth:'360',colClassFullWidth:'t-col t-col_12',imageHover:true,imageHeight:'300px',imageWidth:'',imageRatio:'1',imageRatioClass:'',align:'left',vindent:'',isHorizOnMob:false,itemsAnim:'fadeinup',hasOriginalAspectRatio:false,size:8,markColor:'#ffffff',markBgColor:'#ff4a4a',currencySide:'r',currencyTxt:'р.',currencySeparator:',',currencyDecimal:'',btnSize:'xs',buttonRadius:'5px',buttonBgColor:'#f2931d',isFlexCols:'',hideStoreParts:true,verticalAlignButtons:true,hideFilters:true,titleRelevants:'Смотрите также',showRelevants:'743690276281',showPagination:'',tabs:'tabs',relevants_slider:true,relevants_quantity:'100',sliderthumbsside:'',showStoreBtnQuantity:'',verticalAlign:'',rightColumnWidth:'',isTitleClip:false,horizontalScrollHint:'hand'};t_onFuncLoad('t_store_init',function() {t_store_init('1015119046',options);});});</script>
136 <template id="button_buy_1015119046"> <a
137class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs t-store__prod-popup__btn"
138href="#order"><span class="t-btnflex__text js-store-prod-popup-buy-btn-txt">Заказать</span> <style>#rec1015119046 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec1015119046 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec1015119046 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></a> </template> <template id="button_loadmore_1015119046"> <button
139class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs js-store-load-more-btn t-store__load-more-btn"
140type="button"><span class="t-btnflex__text js-store-load-more-btn-text">Load more</span> <style>#rec1015119046 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec1015119046 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec1015119046 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></button> </template> <!-- catalog setup end --> <style>#rec1015119046 .t-menu__link-item{}@supports (overflow:-webkit-marquee) and (justify-content:inherit){#rec1015119046 .t-menu__link-item,#rec1015119046 .t-menu__link-item.t-active{opacity:1 !important;}}</style> <style>#rec1015119046 .t-col .t-store__card__wrap_all:hover{box-shadow:0px 10px 15px 0px rgba(0,0,0,0.3) !important;}</style> <style>#rec1015119046 .t778__wrapper:not(.t-popup__container .t778__wrapper),#rec1015119046 .t-store__card__wrap_all,#rec1015119046 .t-store__card__imgwrapper,#rec1015119046 .t778__imgwrapper{border-radius:30px;}</style> </div> <div id="rec599918893" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_center"> <div class="t-col t-col_10 t-prefix_1"> <h2 class="t050__title t-title t-title_xxl" field="title">ПОЕЗДКИ В КРЫМ ИЗ ГОРОДОВ КМВ</h2> </div> </div> </div> <style>#rec599918893 .t050__uptitle{text-transform:uppercase;}@media screen and (min-width:900px){#rec599918893 .t050__title{font-size:50px;}}</style> </div> <div id="rec599959598" class="r t-rec t-rec_pt_75 t-rec_pb_30 t-rec_pb-res-480_0" style="padding-top:75px;padding-bottom:30px; " data-animationappear="off" data-record-type="778"> <!-- t778 --> <!-- @classes: t-text t-text_xxs t-name t-name_xs t-name_md t-name_xl t-descr t-descr_xxs t-btn t-btn_xs t-btn_sm t-animate data-zoomable="yes" t-uptitle t-uptitle_xxl t-align_center t-align_left --> <div class="t778"> <!-- grid container start --> <div class="t-store js-store"> <div class="js-store-parts-select-container t-store__grid-cont t-container"></div> <!-- preloader els --> <div class="js-store-grid-cont-preloader t-store__grid-cont t-store__grid-cont-preloader_hidden t-container t-store__grid-cont_mobile-grid"> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-clear t-store__grid-separator"></div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> <div class="t-store__card-preloader t-col t-col_4"> <div class="t-store__card__img-preloader " style="padding-bottom:83.333333333333%;"> </div> </div> </div> <!-- preloader els end --> <div class="js-store-grid-cont t-store__grid-cont t-container t-store__grid-cont_mobile-grid"></div> </div> <!-- grid container end --></div> <!-- catalog setup start --> <style>#rec599959598 .t-slds__bullet_active .t-slds__bullet_body{background-color:#222 
140!important;}#rec599959598 .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}#rec599959598 .t-store__parts-switch-btn{}#rec599959598 .t-store__parts-sublist .t-store__parts-switch-btn{}</style> <style>#rec599959598 .t-store__card .t-typography__title{font-size:26px;font-weight:700;}#rec599959598 .t-store__relevants__title{font-size:26px;font-weight:700;}#rec599959598 .t-store__card .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599959598 .t-store__card .t-typography__descr{font-size:20px;}}#rec599959598 .t-store__card .t-store__card__price{font-size:26px;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599959598 .t-store__card .t-store__card__price{font-size:26px;}}#rec599959598 .t-store__card .t-store__card__price_old{font-weight:400;}</style> <style>#rec599959598 .t-popup .t-typography__title{font-size:26px;font-weight:700;}#rec599959598 .t-popup .t-typography__descr{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599959598 .t-popup .t-typography__descr{font-size:20px;}}#rec599959598 .t-popup .t-store__prod-popup__price{font-size:26px;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599959598 .t-popup .t-store__prod-popup__price{font-size:26px;}}#rec599959598 .t-popup .t-store__prod-popup__price_old{font-weight:400;}</style> <style>#rec599959598 .t-store__pagination__item{font-size:20px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec599959598 .t-store__pagination__item{font-size:20px;}}</style> <div class="js-store-tpl-slider-arrows" style="display: none;"> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-left" data-slide-direction="left"> <button
141type="button"
142class="t-slds__arrow t-slds__arrow-left t-slds__arrow-withbg"
143aria-controls="carousel_599959598"
144aria-disabled="false"
145aria-label="Предыдущий слайд"
146style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-left" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
147fill="none"
148stroke="#000000"
149stroke-linejoin="butt"
150stroke-linecap="butt"
151stroke-width="1"
152points="0.5,0.5 6.5,6.5 0.5,12.5"
153/> </svg> </div> </button> </li> <li class="t-slds__arrow_wrapper t-slds__arrow_wrapper-right" data-slide-direction="right"> <button
154type="button"
155class="t-slds__arrow t-slds__arrow-right t-slds__arrow-withbg"
156aria-controls="carousel_599959598"
157aria-disabled="false"
158aria-label="Следующий слайд"
159style="width: 30px; height: 30px;background-color: rgba(255,255,255,1);"> <div class="t-slds__arrow_body t-slds__arrow_body-right" style="width: 7px;"> <svg role="presentation" focusable="false" style="display: block" viewBox="0 0 7.3 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polyline
160fill="none"
161stroke="#000000"
162stroke-linejoin="butt"
163stroke-linecap="butt"
164stroke-width="1"
165points="0.5,0.5 6.5,6.5 0.5,12.5"
166/> </svg> </div> </button> </li></div> 
166<script>t_onReady(function(){var prodcard_optsObj={blockId:'',hasWrap:'true',txtPad:'',bgColor:'',borderRadius:'',shadow:'',shadowSize:'10px',shadowOpacity:'',shadowHover:'',shadowSizeHover:'15px',shadowOpacityHover:'',shadowShiftyHover:'sm',btnTitle1:'',btnLink1:'popup',btnTitle2:'',btnLink2:'popup',showOpts:false,style:'',hasImg:true,hasDescr:true,hasSeparator:true};var price_optsObj={color:'',colorOld:'',position:'',priceRange:''};var popup_optsObj={popupContainer:'',columns:'6',columns2:'6',isVertical:'',align:'',btnTitle:'Заказать',closeText:'вернуться',iconColor:'#000000',containerBgColor:'#ffffff',overlayBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',popupStat:'',tabsPosition:'',fixedButton:false,mobileGalleryStyle:''};var slider_optsObj={anim_speed:'',videoPlayerIconColor:'',cycle:'',controls:'arrowsthumbs',bgcolor:'#ebebeb'};var slider_dotsOptsObj={size:'',bgcolor:'',bordersize:'',bgcoloractive:''};var slider_slidesOptsObj={zoomable:true,bgsize:'cover',ratio:'1'};var typography_optsObj={descrColor:'',titleColor:'',optionsColor:''};var default_sort={default:null,in_stock:false};var options={recid:'599959598',storepart:'433082410951',previewmode:'yes',prodCard:prodcard_optsObj,popup_opts:popup_optsObj,defaultSort:default_sort,galleryStyle:'',slider_opts:slider_optsObj,slider_dotsOpts:slider_dotsOptsObj,slider_slidesOpts:slider_slidesOptsObj,typo:typography_optsObj,price:price_optsObj,blocksInRow:'3',colClass:'t-col t-col_4',sidebar:false,colWidth:'360',colClassFullWidth:'t-col t-col_12',imageHover:true,imageHeight:'300px',imageWidth:'',imageRatio:'1',imageRatioClass:'',align:'left',vindent:'',isHorizOnMob:false,itemsAnim:'fadeinup',hasOriginalAspectRatio:false,size:7,markColor:'#ffffff',markBgColor:'#ff4a4a',currencySide:'r',currencyTxt:'р.',currencySeparator:',',currencyDecimal:'',btnSize:'xs',buttonRadius:'5px',buttonBgColor:'#f2931d',isFlexCols:'',hideStoreParts:true,verticalAlignButtons:true,hideFilters:true,titleRelevants:'Смотрите также',showRelevants:'743690276281',showPagination:'',tabs:'tabs',relevants_slider:true,relevants_quantity:'100',sliderthumbsside:'',showStoreBtnQuantity:'',verticalAlign:'',rightColumnWidth:'',isTitleClip:false,horizontalScrollHint:'hand'};t_onFuncLoad('t_store_init',function() {t_store_init('599959598',options);});});</script>
166 <template id="button_buy_599959598"> <a
167class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs t-store__prod-popup__btn"
168href="#order"><span class="t-btnflex__text js-store-prod-popup-buy-btn-txt">Заказать</span> <style>#rec599959598 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599959598 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599959598 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></a> </template> <template id="button_loadmore_599959598"> <button
169class="t-btn t-btnflex t-btnflex_type_button t-btnflex_xs js-store-load-more-btn t-store__load-more-btn"
170type="button"><span class="t-btnflex__text js-store-load-more-btn-text">Load more</span> <style>#rec599959598 .t-btnflex.t-btnflex_type_button{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;white-space:normal;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec599959598 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{background-color:#f20808 !important;}#rec599959598 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{background-color:#f20808 !important;}}</style></button> </template> <!-- catalog setup end --> <style>#rec599959598 .t-menu__link-item{}@supports (overflow:-webkit-marquee) and (justify-content:inherit){#rec599959598 .t-menu__link-item,#rec599959598 .t-menu__link-item.t-active{opacity:1 !important;}}</style> <style>#rec599959598 .t-col .t-store__card__wrap_all:hover{box-shadow:0px 10px 15px 0px rgba(0,0,0,0.3) !important;}</style> <style>#rec599959598 .t778__wrapper:not(.t-popup__container .t778__wrapper),#rec599959598 .t-store__card__wrap_all,#rec599959598 .t-store__card__imgwrapper,#rec599959598 .t778__imgwrapper{border-radius:30px;}</style> </div> <div id="rec4329603801" class="r t-rec t-rec_pt_0 t-rec_pt-res-480_0" style="padding-top:0px; " data-record-type="215"> <a name="about" style="font-size:0;"></a> </div> <div id="rec596853556" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec596853556 .t396__artboard{height:420px;background-color:#ffffff;}#rec596853556 .t396__filter{height:420px;}#rec596853556 .t396__carrier{height:420px;background-position:center center;background-attachment:fixed;transform:translate3d(0,0,0);-moz-transform:unset;background-size:cover;background-repeat:no-repeat;}@media screen and (min-width:1199px){#rec596853556 .t396__carrier-wrapper{position:absolute;width:100%;height:100%;top:0;left:0;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}#rec596853556 .t396__carrier{position:fixed;display:block;width:100%;height:100% !important;top:0;left:0;background-size:cover;background-position:center center;transform:translateZ(0);will-change:transform;pointer-events:none;}}@media screen and (max-width:1199px){#rec596853556 .t396__carrier-wrapper{position:absolute;width:100%;height:100%;top:0;left:0;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}}@media screen and (max-width:1199px){#rec596853556 .t396__artboard,#rec596853556 .t396__filter,#rec596853556 .t396__carrier{height:440px;}#rec596853556 .t396__filter{}#rec596853556 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:959px){#rec596853556 .t396__artboard,#rec596853556 .t396__filter,#rec596853556 .t396__carrier{height:630px;}#rec596853556 .t396__filter{}#rec596853556 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:639px){#rec596853556 .t396__artboard,#rec596853556 .t396__filter,#rec596853556 .t396__carrier{}#rec596853556 .t396__filter{}#rec596853556 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:479px){#rec596853556 .t396__artboard,#rec596853556 .t396__filter,#rec596853556 .t396__carrier{height:1130px;}#rec596853556 .t396__filter{}#rec596853556 .t396__carrier{background-attachment:scroll;}}#rec596853556 .tn-elem[data-elem-id="1685180523790"]{color:#000000;z-index:3;top:15px;left:calc(50% - 600px + 17px);width:617px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180523790"] .tn-atom{vertical-align:middle;color:#000000;font-size:48px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180523790"]{display:table;top:28px;left:calc(50% - 480px + 175px);width:611px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180523790"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180523790"]{display:table;left:calc(50% - 320px + 29px);width:583px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180523790"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180523790"]{display:table;left:calc(50% - 240px + 24px);width:433px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180523790"] .tn-atom{white-space:normal;font-size:35px;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180523790"]{display:table;left:calc(50% - 160px + 33px);width:254px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180523790"] .tn-atom{white-space:normal;font-size:20px;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180526302"]{z-index:3;top:106px;left:calc(50% - 600px + 20px);width:280px;height:280px;}#rec596853556 .tn-elem[data-elem-id="1685180526302"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#f6f6f6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180526302"]{display:table;top:130px;left:calc(50% - 480px + 11px);width:224px;height:250px;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180526302"]{display:table;top:96px;left:calc(50% - 320px + 71px);}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180526302"]{display:table;top:96px;left:calc(50% - 240px + 7px);}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180526302"]{display:table;top:70px;left:calc(50% - 160px + 48px);}}#rec596853556 .tn-elem[data-elem-id="1685180585902"]{z-index:3;top:120px;left:calc(50% - 600px + 127px);width:84px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180585902"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec596853556 .tn-elem[data-elem-id="1685180585902"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180585902"]{display:table;top:141px;left:calc(50% - 480px + 94px);width:67px;height:auto;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180585902"]{display:table;top:107px;left:calc(50% - 320px + 153px);height:auto;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180585902"]{display:table;top:107px;left:calc(50% - 240px + 90px);width:67px;height:auto;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180585902"]{display:table;top:82px;left:calc(50% - 160px + 132px);height:auto;}}#rec596853556 .tn-elem[data-elem-id="1685180612630"]{color:#000000;z-index:3;top:217px;left:calc(50% - 600px + 128px);width:64px;
170height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180612630"] .tn-atom{vertical-align:middle;color:#000000;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180612630"]{display:table;top:219px;left:calc(50% - 480px + 94px);width:59px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180612630"] .tn-atom{white-space:normal;font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180612630"]{display:table;top:185px;left:calc(50% - 320px + 156px);width:55px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180612630"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180612630"]{display:table;top:185px;left:calc(50% - 240px + 91px);width:57px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180612630"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180612630"]{display:table;top:159px;left:calc(50% - 160px + 134px);width:53px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180612630"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180640812"]{color:#000000;z-index:3;top:257px;left:calc(50% - 600px + 33px);width:255px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180640812"] .tn-atom{vertical-align:middle;color:#000000;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.2;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180640812"]{display:table;top:251px;left:calc(50% - 480px + 21px);width:204px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180640812"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180640812"]{display:table;top:217px;left:calc(50% - 320px + 81px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180640812"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180640812"]{display:table;top:217px;left:calc(50% - 240px + 17px);width:204px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180640812"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180640812"]{display:table;top:191px;left:calc(50% - 160px + 58px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180640812"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180955909"]{z-index:3;top:106px;left:calc(50% - 600px + 313px);width:280px;height:280px;}#rec596853556 .tn-elem[data-elem-id="1685180955909"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#f6f6f6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180955909"]{dis
170play:table;top:130px;left:calc(50% - 480px + 249px);width:224px;height:250px;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180955909"]{display:table;top:96px;left:calc(50% - 320px + 345px);}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180955909"]{display:table;top:96px;left:calc(50% - 240px + 248px);}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180955909"]{display:table;top:600px;left:calc(50% - 160px + 48px);}}#rec596853556 .tn-elem[data-elem-id="1685180955915"]{z-index:3;top:120px;left:calc(50% - 600px + 411px);width:84px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955915"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec596853556 .tn-elem[data-elem-id="1685180955915"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180955915"]{display:table;top:141px;left:calc(50% - 480px + 328px);width:67px;height:auto;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180955915"]{display:table;top:107px;left:calc(50% - 320px + 424px);height:auto;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180955915"]{display:table;top:107px;left:calc(50% - 240px + 327px);height:auto;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180955915"]{display:table;top:611px;left:calc(50% - 160px + 127px);height:auto;}}#rec596853556 .tn-elem[data-elem-id="1685180955919"]{color:#000000;z-index:3;top:217px;left:calc(50% - 600px + 347px);width:213px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955919"] .tn-atom{vertical-align:middle;color:#000000;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180955919"]{display:table;top:219px;left:calc(50% - 480px + 275px);width:173px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955919"] .tn-atom{vertical-align:middle;white-space:normal;font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180955919"]{display:table;top:185px;left:calc(50% - 320px + 370px);width:174px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955919"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180955919"]{display:table;top:185px;left:calc(50% - 240px + 273px);width:174px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955919"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180955919"]{display:table;top:689px;left:calc(50% - 160px + 73px);width:175px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955919"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180955922"]{color:#000000;z-index:3;top:257px;left:calc(50% - 600px + 323px);width:255px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955922"] .tn-atom{vertical-align:middle;color:#000000;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.2;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180955922"]{dis
170play:table;top:251px;left:calc(50% - 480px + 259px);width:204px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955922"] .tn-atom{vertical-align:middle;white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180955922"]{display:table;top:217px;left:calc(50% - 320px + 355px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955922"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180955922"]{display:table;top:217px;left:calc(50% - 240px + 258px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955922"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180955922"]{display:table;top:721px;left:calc(50% - 160px + 58px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180955922"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180958341"]{z-index:3;top:106px;left:calc(50% - 600px + 606px);width:280px;height:280px;}#rec596853556 .tn-elem[data-elem-id="1685180958341"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#f6f6f6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180958341"]{display:table;top:130px;left:calc(50% - 480px + 487px);width:224px;height:250px;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180958341"]{display:table;top:360px;left:calc(50% - 320px + 71px);}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180958341"]{display:table;top:363px;left:calc(50% - 240px + 7px);width:224px;height:250px;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180958341"]{display:table;top:335px;left:calc(50% - 160px + 48px);}}#rec596853556 .tn-elem[data-elem-id="1685180958348"]{z-index:3;top:120px;left:calc(50% - 600px + 704px);width:84px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958348"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec596853556 .tn-elem[data-elem-id="1685180958348"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180958348"]{display:table;top:141px;left:calc(50% - 480px + 566px);width:67px;height:auto;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180958348"]{display:table;top:371px;left:calc(50% - 320px + 150px);height:auto;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180958348"]{display:table;top:374px;left:calc(50% - 240px + 86px);width:67px;height:auto;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180958348"]{display:table;top:346px;left:calc(50% - 160px + 127px);height:auto;}}#rec596853556 .tn-elem[data-elem-id="1685180958355"]{color:#000000;z-index:3;top:218px;left:calc(50% - 600px + 622px);width:249px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958355"] .tn-atom{vertical-align:middle;color:#000000;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180958355"]{display:table;top:219px;left:calc(50% - 480px + 500px);width:199px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958355"] .tn-atom{white-space:normal;font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180958355"]{display:table;top:449px;left:calc(50% - 320px + 84px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958355"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180958355"]{display:table;top:452px;left:calc(50% - 240px + 20px);width:199px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958355"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180958355"]{display:table;top:424px;left:calc(50% - 160px + 61px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958355"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180958359"]{color:#000000;z-index:3;top:257px;left:calc(50% - 600px + 616px);width:255px;height:auto;}
170#rec596853556 .tn-elem[data-elem-id="1685180958359"] .tn-atom{vertical-align:middle;color:#000000;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.2;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180958359"]{display:table;top:251px;left:calc(50% - 480px + 497px);width:204px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958359"] .tn-atom{white-space:normal;font-size:14px;line-height:1.2;letter-spacing:0px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180958359"]{display:table;top:481px;left:calc(50% - 320px + 81px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958359"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180958359"]{display:table;top:484px;left:calc(50% - 240px + 17px);width:204px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958359"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180958359"]{display:table;top:456px;left:calc(50% - 160px + 58px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180958359"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180961622"]{z-index:3;top:106px;left:calc(50% - 600px + 899px);width:280px;height:280px;}#rec596853556 .tn-elem[data-elem-id="1685180961622"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#f6f6f6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180961622"]{display:table;top:130px;left:calc(50% - 480px + 725px);width:224px;height:250px;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180961622"]{display:table;top:360px;left:calc(50% - 320px + 345px);}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180961622"]{display:table;top:363px;left:calc(50% - 240px + 248px);width:224px;height:250px;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180961622"]{display:table;top:865px;left:calc(50% - 160px + 48px);}}#rec596853556 .tn-elem[data-elem-id="1685180961630"]{z-index:3;top:120px;left:calc(50% - 600px + 997px);width:84px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961630"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec596853556 .tn-elem[data-elem-id="1685180961630"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180961630"]{display:table;top:141px;left:calc(50% - 480px + 804px);width:67px;height:auto;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180961630"]{display:table;top:371px;left:calc(50% - 320px + 424px);height:auto;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180961630"]{display:table;top:374px;left:calc(50% - 240px + 327px);width:67px;height:auto;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180961630"]{display:table;top:876px;left:calc(50% - 160px + 127px);height:auto;}}#rec596853556 .tn-elem[data-elem-id="1685180961634"]{color:#000000;z-index:3;top:217px;left:calc(50% - 600px + 965px);width:148px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961634"] .tn-atom{vertical-align:middle;color:#000000;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180961634"]{display:table;top:219px;left:calc(50% - 480px + 776px);width:122px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961634"] .tn-atom{white-space:normal;font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180961634"]{display:table;top:449px;
170left:calc(50% - 320px + 397px);width:120px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961634"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180961634"]{display:table;top:452px;left:calc(50% - 240px + 301px);width:118px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961634"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180961634"]{display:table;top:954px;left:calc(50% - 160px + 101px);width:118px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961634"] .tn-atom{white-space:normal;background-size:cover;}}#rec596853556 .tn-elem[data-elem-id="1685180961638"]{color:#000000;z-index:3;top:257px;left:calc(50% - 600px + 909px);width:269px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961638"] .tn-atom{vertical-align:middle;color:#000000;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.2;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec596853556 .tn-elem[data-elem-id="1685180961638"]{display:table;top:251px;left:calc(50% - 480px + 730px);width:215px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961638"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:959px){#rec596853556 .tn-elem[data-elem-id="1685180961638"]{display:table;top:481px;left:calc(50% - 320px + 350px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961638"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec596853556 .tn-elem[data-elem-id="1685180961638"]{display:table;top:484px;left:calc(50% - 240px + 253px);width:215px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961638"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec596853556 .tn-elem[data-elem-id="1685180961638"]{display:table;top:986px;left:calc(50% - 160px + 53px);width:px;height:auto;}#rec596853556 .tn-elem[data-elem-id="1685180961638"] .tn-atom{white-space:normal;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="596853556" data-artboard-screens="320,480,640,960,1200" data-artboard-height="420" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="1130" data-artboard-upscale-res-320="window" data-artboard-height-res-640="630" data-artboard-height-res-960="440"> <div class="t396__carrier-wrapper"> <div class="t396__carrier" data-artboard-recid="596853556"></div> </div> <div class="t396__filter" data-artboard-recid="596853556"></div> <div class='t396__elem tn-elem tn-elem__5968535561685180523790' data-elem-id='1685180523790' data-elem-type='text' data-field-top-value="15" data-field-left-value="17" data-field-height-value="74" data-field-width-value="617" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="48" data-field-left-res-320-value="33" data-field-height-res-320-value="31" data-field-width-res-320-value="254" data-field-fontsize-res-320-value="20" data-field-left-res-480-value="24" data-field-height-res-480-value="54" data-field-width-res-480-value="433" data-field-fontsize-res-480-value="35" data-field-left-res-640-value="29" data-field-width-res-640-value="583" data-field-top-res-960-value="28" data-field-left-res-960-value="175" data-field-width-res-960-value="611"> <div class='tn-atom'field='tn_text_1685180523790'>Почему наши туры лучше?</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180526302' data-elem-id='1685180526302' data-elem-type='shape' data-field-top-value="106" data-field-left-value="20" data-field-height-value="280" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="70" data-field-left-res-320-value="48" data-field-top-res-480-value="96" data-field-left-res-480-value="7" data-field-top-res-640-value="96" data-field-left-res-640-value="71" data-field-top-res-960-value="130" data-field-left-res-960-value="11" data-field-height-res-960-value="250" data-field-width-res-960-value="224" data-field-heightmode-res-960-value="fixed"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180585902' data-elem-id='1685180585902' data-elem-type='image' data-field-top-value="120" data-field-left-value="127" data-field-height-value="84" data-field-width-value="84" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="98" data-field-fileheight-value="98" data-field-widthmode-value="fixed" data-field-heightmode-value="hug" data-field-top-res-320-value="82" data-field-left-res-320-value="132" data-field-height-res-320-value="67" data-field-top-res-480-value="107" data-field-left-res-480-value="90" data-field-height-res-480-value="67" data-field-width-res-480-value="67" data-field-container-res-480-value="grid" data-field-top-res-640-value="107" data-field-left-res-640-value="153" data-field-height-res-640-value="67" data-field-top-res-960-value="141" data-field-left-res-960-value="94" data-field-height-res-960-value="67" data-field-width-res-960-value="67"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3265-3764-4463-b237-353861623139/Case.png'
171src='https://thb.tildacdn.com/tild3265-3764-4463-b237-353861623139/-/resize/20x/Case.png'
172alt='Индивидуальные экскурсии' imgfield='tn_img_1685180585902'
173/> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180612630' data-elem-id='1685180612630' data-elem-type='text' data-field-top-value="217" data-field-left-value="128" data-field-height-value="37" data-field-width-value="64" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-top-res-320-value="159" data-field-left-res-320-value="134" data-field-width-res-320-value="53" data-field-top-res-480-value="185" data-field-left-res-480-value="91" data-field-height-res-480-value="31" data-field-width-res-480-value="57" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="185" data-field-left-res-640-value="156" data-field-width-res-640-value="55" data-field-top-res-960-value="219" data-field-left-res-960-value="94" data-field-width-res-960-value="59" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1685180612630'>Опыт</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180640812' data-elem-id='1685180640812' data-elem-type='text' data-field-top-value="257" data-field-left-value="33" data-field-height-value="76" data-field-width-value="255" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="191" data-field-left-res-320-value="58" data-field-top-res-480-value="217" data-field-left-res-480-value="17" data-field-height-res-480-value="68" data-field-width-res-480-value="204" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="217" data-field-left-res-640-value="81" data-field-top-res-960-value="251" data-field-left-res-960-value="21" data-field-height-res-960-value="68" data-field-width-res-960-value="204" data-field-fontsize-res-960-value="14"> <div class='tn-atom'field='tn_text_1685180640812'>С 2014 года мы организуем индивидуальные туры по Кавказ
173у и продолжаем знакомить с ним наших дорогих клиентов</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180955909' data-elem-id='1685180955909' data-elem-type='shape' data-field-top-value="106" data-field-left-value="313" data-field-height-value="280" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="600" data-field-left-res-320-value="48" data-field-top-res-480-value="96" data-field-left-res-480-value="248" data-field-top-res-640-value="96" data-field-left-res-640-value="345" data-field-top-res-960-value="130" data-field-left-res-960-value="249" data-field-height-res-960-value="250" data-field-width-res-960-value="224" data-field-container-res-960-value="grid" data-field-heightmode-res-960-value="fixed"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180955915' data-elem-id='1685180955915' data-elem-type='image' data-field-top-value="120" data-field-left-value="411" data-field-height-value="84" data-field-width-value="84" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="98" data-field-fileheight-value="98" data-field-heightmode-value="hug" data-field-top-res-320-value="611" data-field-left-res-320-value="127" data-field-height-res-320-value="67" data-field-top-res-480-value="107" data-field-left-res-480-value="327" data-field-height-res-480-value="67" data-field-top-res-640-value="107" data-field-left-res-640-value="424" data-field-height-res-640-value="67" data-field-top-res-960-value="141" data-field-left-res-960-value="328" data-field-height-res-960-value="67" data-field-width-res-960-value="67" data-field-container-res-960-value="grid"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3861-3930-4531-b135-616331646634/Medal_Ribbons_Star.png'
174src='https://thb.tildacdn.com/tild3861-3930-4531-b135-616331646634/-/resize/20x/Medal_Ribbons_Star.png'
175alt='Индивидуальные экскурсии' imgfield='tn_img_1685180955915'
176/> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180955919' data-elem-id='1685180955919' data-elem-type='text' data-field-top-value="217" data-field-left-value="347" data-field-height-value="37" data-field-width-value="213" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-top-res-320-value="689" data-field-left-res-320-value="73" data-field-width-res-320-value="175" data-field-top-res-480-value="185" data-field-left-res-480-value="273" data-field-width-res-480-value="174" data-field-top-res-640-value="185" data-field-left-res-640-value="370" data-field-width-res-640-value="174" data-field-top-res-960-value="219" data-field-left-res-960-value="275" data-field-height-res-960-value="31" data-field-width-res-960-value="173" data-field-container-res-960-value="grid" data-field-heightunits-res-960-value="px" data-field-textfit-res-960-value="autoheight" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1685180955919'>Профессионализм</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180955922' data-elem-id='1685180955922' data-elem-type='text' data-field-top-value="257" data-field-left-value="323" data-field-height-value="76" data-field-width-value="255" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="721" data-field-left-res-320-value="58" data-field-top-res-480-value="217" data-field-left-res-480-value="258" data-field-top-res-640-value="217" data-field-left-res-640-value="355" data-field-top-res-960-value="251" data-field-left-res-960-value="259" data-field-height-res-960-value="68" data-field-width-res-960-value="204" data-field-container-res-960-value="grid" data-field-heightunits-res-960-value="px" data-field-textfit-res-960-value="autoheight" data-field-fontsize-res-960-value="14"> <div class='tn-atom'field='tn_text_1685180955922'>Опытные гиды, отлично знающие своё дело, и надёжная проходимая техника, проверенная на маршрутах</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180958341' data-elem-id='1685180958341' data-elem-type='shape' data-field-top-value="106" data-field-left-value="606" data-field-height-value="280" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="335" data-field-left-res-320-value="48" data-field-top-res-480-value="363" data-field-left-res-480-value="7" data-field-height-res-480-value="250" data-field-width-res-480-value="224" data-field-container-res-480-value="grid" data-field-top-res-640-value="360" data-field-left-res-640-value="71" data-field-top-res-960-value="130" data-field-left-res-960-value="487" data-field-height-res-960-value="250" data-field-width-res-960-value="224"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180958348' data-elem-id='1685180958348' data-elem-type='image' data-field-top-value="120" data-field-left-value="704" data-field-height-value="84" data-field-width-value="84" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="98" data-field-fileheight-value="98" data-field-heightmode-value="hug" data-field-top-res-320-value="346" data-field-left-res-320-value="127" data-field-height-res-320-value="67" data-field-top-res-480-value="374" data-field-left-res-480-value="86" data-field-height-res-480-value="67" data-field-width-res-480-value="67" data-field-container-res-480-value="grid" data-field-top-res-640-value="371" data-field-left-res-640-value="150" data-field-height-res-640-value="67" data-field-top-res-960-value="141" data-field-left-res-960-value="566" data-field-height-res-960-value="67" data-field-width-res-960-value="67"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3236-3330-4838-b036-323465613663/Confetti.png'
177src='https://thb.tildacdn.com/tild3236-3330-4838-b036-323465613663/-/resize/20x/Confetti.png'
178alt='Индивидуальные экскурсии' imgfield='tn_img_1685180958348'
179/> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180958355' data-elem-id='1685180958355' data-elem-type='text' data-field-top-value="218" data-field-left-value="622" data-field-height-value="37" data-field-width-value="249" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-top-res-320-value="424" data-field-left-res-320-value="61" data-field-top-res-480-value="452" data-field-left-res-480-value="20" data-field-width-res-480-value="199" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="449" data-field-left-res-640-value="84" data-field-top-res-960-value="219" data-field-left-res-960-value="500" data-field-width-res-960-value="199" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1685180958355'>Невероятные эмоции</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180958359' data-elem-id='1685180958359' data-elem-type='text' data-field-top-value="257" data-field-left-value="616" data-field-height-value="95" data-field-width-value="255" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="456" data-field-left-res-320-value="58" data-field-top-res-480-value="484" data-field-left-res-480-value="17" data-field-width-res-480-value="204" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="481" data-field-left-res-640-value="81" data-field-top-res-960-value="251" data-field-left-res-960-value="497" data-field-width-res-960-value="204" data-field-fontsize-res-960-value="14"> <div class='tn-atom'field='tn_text_1685180958359'>Дикие звери, горы и леса, горные озёра и реки, красивые водопады, лечебные минеральные источники - все это то, что вам посчастливится лицезреть с нами</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180961622' data-elem-id='1685180961622' data-elem-type='shape' data-field-top-value="106" data-field-left-value="899" data-field-height-value="280" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="865" data-field-left-res-320-value="48" data-field-top-res-480-value="363" data-field-left-res-480-value="248" data-field-height-res-480-value="250" data-field-width-res-480-value="224" data-field-container-res-480-value="grid" data-field-top-res-640-value="360" data-field-left-res-640-value="345" data-field-top-res-960-value="130" data-field-left-res-960-value="725" data-field-height-res-960-value="250" data-field-width-res-960-value="224" data-field-heightmode-res-960-value="fixed"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180961630' data-elem-id='1685180961630' data-elem-type='image' data-field-top-value="120" data-field-left-value="997" data-field-height-value="84" data-field-width-value="84" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="98" data-field-fileheight-value="98" data-field-heightmode-value="hug" data-field-top-res-320-value="876" data-field-left-res-320-value="127" data-field-height-res-320-value="67" data-field-top-res-480-value="374" data-field-left-res-480-value="327" data-field-height-res-480-value="67" data-field-width-res-480-value="67" data-field-container-res-480-value="grid" data-field-top-res-640-value="371" data-field-left-res-640-value="424" data-field-height-res-640-value="67" data-field-top-res-960-value="141" data-field-left-res-960-value="804" data-field-height-res-960-value="67" data-field-width-res-960-value="67"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3462-3739-4134-a637-666266653034/Camera.png'
180src='https://thb.tildacdn.com/tild3462-3739-4134-a637-666266653034/-/resize/20x/Camera.png'
181alt='Места для фото' imgfield='tn_img_1685180961630'
182/> </div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180961634' data-elem-id='1685180961634' data-elem-type='text' data-field-top-value="217" data-field-left-value="965" data-field-height-value="37" data-field-width-value="148" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-top-res-320-value="954" data-field-left-res-320-value="101" data-field-width-res-320-value="118" data-field-top-res-480-value="452" data-field-left-res-480-value="301" data-field-width-res-480-value="118" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="449" data-field-left-res-640-value="397" data-field-height-res-640-value="31" data-field-width-res-640-value="120" data-field-top-res-960-value="219" data-field-left-res-960-value="776" data-field-width-res-960-value="122" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1685180961634'>Фотосъемка</div> </div> <div class='t396__elem tn-elem tn-elem__5968535561685180961638' data-elem-id='1685180961638' data-elem-type='text' data-field-top-value="257" data-field-left-value="909" data-field-height-value="57" data-field-width-value="269" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="986" data-field-left-res-320-value="53" data-field-top-res-480-value="484" data-field-left-res-480-value="253" data-field-height-res-480-value="68" data-field-width-res-480-value="215" data-field-container-res-480-value="grid" data-field-heightunits-res-480-value="px" data-field-textfit-res-480-value="autoheight" data-field-top-res-640-value="481" data-field-left-res-640-value="350" data-field-top-res-960-value="251" data-field-left-res-960-value="730" data-field-width-res-960-value="215" data-field-fontsize-res-960-value="14"> <div class='tn-atom'field='tn_text_1685180961638'>Поехав с нами в тур, вы получите не только эмоции, но и привлекательные фотографии для социальных сетей</div> </div> </div> </div> 
182<script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('596853556');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('596853556');});});</script>
182 <!-- /T396 --> </div> <div id="rec4328084501" class="r t-rec" style=" " data-record-type="215"> <a name="reviews" style="font-size:0;"></a> </div> <div id="rec4183257101" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px; " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!--
183  PT REVIEWS v13
184  Adds a dynamic service dropdown built ONLY from the actual Tilda ST310N product cards
185  already present on the page. Each option uses the product's canonical card title and
186  first/main image; no hardcoded services and no prices. Existing review rendering,
187  backend payload, SmartCaptcha captcha sizing and scroll behaviour are preserved.
188--> <style>
189  #pt-reviews-v2 {
190    --pt-accent: #FF8562;
191    --pt-accent-soft: rgba(255, 133, 98, 0.12);
192    --pt-accent-soft-2: rgba(255, 133, 98, 0.07);
193
194    --pt-text: #252525;
195    --pt-muted: #77716d;
196    --pt-border: #e9e2dc;
197    --pt-card: #ffffff;
198    --pt-soft: #f8f5f2;
199
200    --pt-shadow: 0 14px 34px rgba(0, 0, 0, 0.055);
201
202    --pt-radius-xl: 28px;
203    --pt-radius-lg: 22px;
204    --pt-radius-md: 16px;
205
206    --pt-gap: 18px;
207
208    --pt-reviews-height: 760px;
209
210    --pt-scroll-track: #efebe7;
211    --pt-scroll-thumb: #b9b1aa;
212    --pt-scroll-thumb-hover: #9f9690;
213
214    font-family: TildaSans, Arial, sans-serif;
215    color: var(--pt-text);
216  }
217
218  #pt-reviews-v2 * {
219    box-sizing: border-box;
220  }
221
222  #pt-reviews-v2 button,
223  #pt-reviews-v2 input,
224  #pt-reviews-v2 textarea,
225  #pt-reviews-v2 select {
226    font-family: inherit;
227  }
228
229  #pt-reviews-v2 .pt-reviews-section {
230    width: 100%;
231    padding: 26px 0 12px;
232    background: transparent;
233  }
234
235  #pt-reviews-v2 .pt-reviews-container {
236    width: 100%;
237    max-width: 1440px;
238    margin: 0 auto;
239    padding: 0 40px;
240  }
241
242  /* =========================================================
243     HEADER
244     ========================================================= */
245
246  #pt-reviews-v2 .pt-reviews-top {
247    margin-bottom: 24px;
248  }
249
250  #pt-reviews-v2 .pt-reviews-title {
251    margin: 0 0 24px;
252    max-width: none;
253
254    font-size: 42px;
255    line-height: 1.28;
256    font-weight: 400;
257    letter-spacing: -0.025em;
258
259    color: var(--pt-text);
260
261    /*
262      На desktop заголовок всегда остаётся одной строкой.
263      На более узких экранах ниже в media-query перенос снова разрешается,
264      иначе мобильная версия физически не поместится по ширине.
265    */
266    white-space: nowrap;
267  }
268
269  #pt-reviews-v2 .pt-reviews-toolbar {
270    display: flex;
271    align-items: center;
272    gap: 16px;
273    flex-wrap: wrap;
274  }
275
276  #pt-reviews-v2 .pt-reviews-rating-box {
277    min-height: 64px;
278
279    display: inline-flex;
280    align-items: center;
281    gap: 14px;
282
283    padding: 12px 22px;
284
285    background: #fff;
286    border: 1px solid var(--pt-border);
287    border-radius: 999px;
288
289    box-shadow: var(--pt-shadow);
290
291    white-space: nowrap;
292  }
293
294  #pt-reviews-v2 .pt-rating-value {
295    font-size: 27px;
296    line-height: 1;
297    font-weight: 600;
298  }
299
300  #pt-reviews-v2 .pt-rating-stars {
301    display: inline-flex;
302    align-items: center;
303    gap: 2px;
304
305    color: var(--pt-accent);
306
307    font-size: 18px;
308    line-height: 1;
309    letter-spacing: 1px;
310  }
311
312  #pt-reviews-v2 .pt-rating-count {
313    font-size: 14px;
314    line-height: 1.2;
315    color: var(--pt-muted);
316  }
317
318  #pt-reviews-v2 .pt-review-open-btn,
319  #pt-reviews-v2 .pt-show-all-btn,
320  #pt-reviews-v2 .pt-submit-btn {
321    appearance: none;
322    border: 0;
323    cursor: pointer;
324
325    background: var(--pt-accent);
326    color: #fff;
327
328    border-radius: 999px;
329
330    font-weight: 600;
331
332    box-shadow: 0 12px 26px rgba(255, 133, 98, 0.23);
333
334    transition:
335      transform .18s ease,
336      box-shadow .18s ease,
337      opacity .18s ease;
338  }
339
340  #pt-reviews-v2 .pt-review-open-btn:hover,
341  #pt-reviews-v2 .pt-show-all-btn:hover,
342  #pt-reviews-v2 .pt-submit-btn:hover {
343    transform: translateY(-1px);
344    box-shadow: 0 15px 30px rgba(255, 133, 98, 0.29);
345  }
346
347  #pt-reviews-v2 .pt-review-open-btn:active,
348  #pt-reviews-v2 .pt-show-all-btn:active,
349  #pt-reviews-v2 .pt-submit-btn:active {
350    transform: translateY(0);
351  }
352
353  #pt-reviews-v2 .pt-review-open-btn {
354    min-height: 64px;
355    padding: 0 30px;
356    font-size: 18px;
357  }
358
359  /* =========================================================
360     FIXED REVIEWS VIEWPORT
361     ========================================================= */
362
363  #pt-reviews-v2 .pt-reviews-shell {
364    position: relative;
365
366    width: 100%;
367    height: var(--pt-reviews-height);
368
369    overflow: hidden;
370
371    border-radius: 28px;
372  }
373
374  #pt-reviews-v2 .pt-reviews-list {
375    width: 100%;
376    height: 100%;
377
378    overflow-x: hidden;
379    overflow-y: auto;
380
381    padding:
382      6px
383      28px
384      16px
385      2px;
386
387    /*
388      Нативный scroll chaining.
389      При достижении верхней/нижней границы дальнейший жест браузер
390      сам передаёт основной странице. Не перехватываем wheel/touchmove
391      JavaScript'ом и не вызываем preventDefault()/window.scrollBy().
392    */
393    overscroll-behavior-y: auto;
394    overscroll-behavior-x: none;
395    -webkit-overflow-scrolling: touch;
396    touch-action: pan-y;
397
398    scrollbar-width: none;
399    -ms-overflow-style: none;
400  }
401
402  #pt-reviews-v2 .pt-reviews-list::-webkit-scrollbar {
403    width: 0;
404    height: 0;
405    display: none;
406  }
407
408  #pt-reviews-v2 .pt-reviews-list::-webkit-scrollbar-track,
409  #pt-reviews-v2 .pt-reviews-list::-webkit-scrollbar-thumb,
410  #pt-reviews-v2 .pt-reviews-list::-webkit-scrollbar-button,
411  #pt-reviews-v2 .pt-reviews-list::-webkit-scrollbar-corner {
412    display: none;
413  }
414
415  /*
416    Настоящий кастомный scrollbar.
417    Он утоплен внутрь фиксированного viewport.
418  */
419  #pt-reviews-v2 .pt-custom-scrollbar {
420    position: absolute;
421
422    top: 14px;
423    right: 7px;
424    bottom: 14px;
425
426    width: 11px;
427
428    background: var(--pt-scroll-track);
429
430    border-radius: 999px;
431
432    opacity: 0;
433    pointer-events: none;
434
435    z-index: 8;
436
437    transition: opacity .16s ease;
438  }
439
440  #pt-reviews-v2 .pt-reviews-shell.has-scrollbar
441  .pt-custom-scrollbar {
442    opacity: 1;
443    pointer-events: auto;
444  }
445
446  #pt-reviews-v2 .pt-custom-scrollbar-thumb {
447    position: absolute;
448
449    left: 2px;
450    right: 2px;
451    top: 0;
452
453    min-height: 52px;
454
455    background: var(--pt-scroll-thumb);
456
457    border-radius: 999px;
458
459    cursor: grab;
460    touch-action: none;
461
462    will-change: transform;
463
464    transition: background .16s ease;
465  }
466
467  #pt-reviews-v2 .pt-custom-scrollbar-thumb:hover {
468    background: var(--pt-scroll-thumb-hover);
469  }
470
471  #pt-reviews-v2 .pt-custom-scrollbar-thumb.is-dragging {
472    cursor: grabbing;
473    background: var(--pt-scroll-thumb-hover);
474  }
475
476  /* =========================================================
477     REVIEW GRID
478     ========================================================= */
479
480  #pt-reviews-v2 .pt-review-row {
481    display: grid;
482
483    gap: var(--pt-gap);
484
485    margin: 0 auto var(--pt-gap);
486  }
487
488  #pt-reviews-v2 .pt-review-row:last-child {
489    margin-bottom: 0;
490  }
491
492  /*
493    DESKTOP:
494    3 карточки — полный ряд.
495    2 карточки — тот же размер карточек, но ряд центрируется.
496    1 карточка — центрируется одна карточка.
497  */
498  #pt-reviews-v2 .pt-review-row.count-3 {
499    width: 100%;
500    grid-template-columns: repeat(3, minmax(0, 1fr));
501  }
502
503  #pt-reviews-v2 .pt-review-row.count-2 {
504    width:
505      calc(
506        (
507          (100% - (var(--pt-gap) * 2))
508          / 3
509        )
510        * 2
511        + var(--pt-gap)
512      );
513
514    grid-template-columns: repeat(2, minmax(0, 1fr));
515  }
516
517  #pt-reviews-v2 .pt-review-row.count-1 {
518    width:
519      calc(
520        (100% - (var(--pt-gap) * 2))
521        / 3
522      );
523
524    grid-template-columns: minmax(0, 1fr);
525  }
526
527  /* =========================================================
528     REVIEW CARD
529     ========================================================= */
530
531  #pt-reviews-v2 .pt-review-card {
532    min-width: 0;
533
534    display: flex;
535    flex-direction: column;
536
537    background: var(--pt-card);
538
539    border: 1px solid var(--pt-border);
540    border-radius: var(--pt-radius-xl);
541
542    box-shadow: var(--pt-shadow);
543
544    padding: 24px;
545
546    overflow: hidden;
547  }
548
549  #pt-reviews-v2 .pt-review-header {
550    display: flex;
551    align-items: flex-start;
552    gap: 15px;
553  }
554
555  #pt-reviews-v2 .pt-review-avatar {
556    width: 62px;
557    height: 62px;
558    min-width: 62px;
559
560    overflow: hidden;
561
562    display: flex;
563    align-items: center;
564    justify-content: center;
565
566    border-radius: 50%;
567
568    background: #eee9e4;
569
570    color: #706961;
571
572    font-size: 25px;
573    font-weight: 600;
574    line-height: 1;
575  }
576
577  #pt-reviews-v2 .pt-review-avatar img {
578    width: 100%;
579    height: 100%;
580    object-fit: cover;
581    display: block;
582  }
583
584  #pt-reviews-v2 .pt-review-head-main {
585    flex: 1;
586    min-width: 0;
587  }
588
589  #pt-reviews-v2 .pt-review-author-line {
590    display: flex;
591    align-items: flex-start;
592    justify-content: space-between;
593
594    gap: 10px;
595  }
596
597  #pt-reviews-v2 .pt-review-author {
598    margin: 2px 0 5px;
599
600    font-size: 19px;
601    line-height: 1.25;
602    font-weight: 600;
603
604    color: var(--pt-text);
605  }
606
607
608  #pt-reviews-v2 .pt-review-stars-date {
609    display: flex;
610    align-items: center;
611    gap: 9px;
612
613    flex-wrap: wrap;
614  }
615
616  #pt-reviews-v2 .pt-review-stars {
617    color: var(--pt-accent);
618
619    font-size: 16px;
620    line-height: 1;
621
622    letter-spacing: 1px;
623  }
624
625  #pt-reviews-v2 .pt-review-date {
626    color: var(--pt-muted);
627
628    font-size: 12.5px;
629    line-height: 1.3;
630  }
631
632  #pt-reviews-v2 .pt-review-service {
633    margin-top: 19px;
634
635    font-size: 15px;
636    line-height: 1.42;
637    font-weight: 600;
638
639    color: var(--pt-text);
640  }
641
642  #pt-reviews-v2 .pt-review-text-wrap {
643    position: relative;
644
645    margin-top: 10px;
646  }
647
648  /*
649    Общая механика переполнения для текста отзыва
650    и будущих/импортированных ответов компании.
651
652    Текст сначала ограничен пятью строками.
653    Fade-out добавляется ТОЛЬКО если JS подтвердил,
654    что текст реально не помещается. Механика градиента
655    переиспользована из fade-out описаний карточек товаров.
656  */
657  #pt-reviews-v2 .pt-review-text,
658  #pt-reviews-v2 .pt-company-reply-text {
659    display: -webkit-box;
660    -webkit-box-orient: vertical;
661    -webkit-line-clamp: 5;
662
663    overflow: hidden;
664  }
665
666  #pt-reviews-v2 .pt-review-text {
667    margin: 0;
668
669    font-size: 15px;
670    line-height: 1.56;
671
672    color: var(--pt-text);
673  }
674
675  #pt-reviews-v2 .pt-review-text {
676    position: relative;
677  }
678
679  #pt-reviews-v2 .pt-review-text-wrap.has-overflow:not(.is-expanded)
680  .pt-review-text::after {
681    content: "";
682
683    position: absolute;
684
685    left: 0;
686    right: 0;
687    bottom: 0;
688
689    height: 2.4em;
690
691    pointer-events: none;
692
693    background: linear-gradient(
694      to bottom,
695      rgba(255, 255, 255, 0) 0%,
696      rgba(255, 255, 255, 0.78) 58%,
697      var(--pt-card) 100%
698    );
699  }
700
701  #pt-reviews-v2 .pt-review-text-wrap.is-expanded .pt-review-text,
702  #pt-reviews-v2 .pt-company-reply-text-wrap.is-expanded .pt-company-reply-text {
703    display: block;
704
705    -webkit-line-clamp: unset;
706
707    overflow: visible;
708  }
709
710  #pt-reviews-v2 .pt-read-more {
711    display: none;
712
713    appearance: none;
714
715    margin: 10px 0 0;
716    padding: 0;
717
718    border: 0;
719    background: transparent;
720
721    color: var(--pt-text);
722
723    cursor: pointer;
724
725    font-size: 13px;
726    line-height: 1.2;
727    font-weight: 500;
728
729    text-decoration: underline;
730    text-underline-offset: 3px;
731  }
732
733  #pt-reviews-v2 .pt-read-more.is-visible {
734    display: inline-block;
735  }
736
737  #pt-reviews-v2 .pt-read-more:hover {
738    color: var(--pt-accent);
739  }
740
741  /*
742    Ответ компании — отдельный вложенный блок,
743    как в референсе: лёгкий фон + вертикальная
744    оранжевая полоса.
745  */
746  #pt-reviews-v2 .pt-company-reply {
747    position: relative;
748
749    margin-top: 17px;
750    padding: 13px 14px 13px 17px;
751
752    background: #f7f5f3;
753
754    border-radius: 13px;
755  }
756
757  #pt-reviews-v2 .pt-company-reply::before {
758    content: "";
759
760    position: absolute;
761
762    left: 0;
763    top: 8px;
764    bottom: 8px;
765
766    width: 3px;
767
768    background: var(--pt-accent);
769
770    border-radius: 999px;
771  }
772
773  #pt-reviews-v2 .pt-company-reply-head {
774    display: flex;
775    align-items: baseline;
776    justify-content: space-between;
777
778    gap: 12px;
779
780    margin-bottom: 5px;
781  }
782
783  #pt-reviews-v2 .pt-company-reply-title {
784    font-size: 13px;
785    line-height: 1.3;
786    font-weight: 600;
787
788    color: var(--pt-text);
789  }
790
791  #pt-reviews-v2 .pt-company-reply-date {
792    flex: 0 0 auto;
793
794    font-size: 11.5px;
795    line-height: 1.3;
796
797    color: var(--pt-muted);
798  }
799
800  #pt-reviews-v2 .pt-company-reply-text-wrap {
801    position: relative;
802  }
803
804  #pt-reviews-v2 .pt-company-reply-text {
805    margin: 0;
806
807    font-size: 13px;
808    line-height: 1.5;
809
810    color: #5f5a56;
811  }
812
813  #pt-reviews-v2 .pt-company-reply-text {
814    position: relative;
815  }
816
817  #pt-reviews-v2 .pt-company-reply-text-wrap.has-overflow:not(.is-expanded)
818  .pt-company-reply-text::after {
819    content: "";
820
821    position: absolute;
822
823    left: 0;
824    right: 0;
825    bottom: 0;
826
827    height: 2.4em;
828
829    pointer-events: none;
830
831    background: linear-gradient(
832      to bottom,
833      rgba(247, 245, 243, 0) 0%,
834      rgba(247, 245, 243, 0.78) 58%,
835      #f7f5f3 100%
836    );
837  }
838
839  /* =========================================================
840     SHOW ALL
841     ========================================================= */
842
843  #pt-reviews-v2 .pt-show-all-wrap {
844    display: flex;
845    align-items: center;
846    justify-content: center;
847
848    /*
849      Место под кнопку зарезервировано ВСЕГДА.
850      Поэтому после "Посмотреть все" нижние блоки Tilda
851      не подпрыгивают вверх.
852    */
853    height: 54px;
854    min-height: 54px;
855
856    margin-top: 22px;
857  }
858
859  #pt-reviews-v2 .pt-show-all-btn {
860    min-height: 54px;
861
862    padding: 0 28px;
863
864    font-size: 16px;
865
866    opacity: 1;
867    visibility: visible;
868    pointer-events: auto;
869
870    transition:
871      opacity .18s ease,
872      visibility .18s ease,
873      transform .18s ease,
874      box-shadow .18s ease;
875  }
876
877  #pt-reviews-v2 .pt-show-all-wrap.is-consumed
878  .pt-show-all-btn {
879    opacity: 0;
880    visibility: hidden;
881    pointer-events: none;
882  }
883
884  #pt-reviews-v2 .pt-hidden {
885    display: none !important;
886  }
887
888  /* =========================================================
889     REVIEW MODAL
890     ========================================================= */
891
892  #pt-reviews-v2 .pt-modal-backdrop {
893    position: fixed;
894    inset: 0;
895
896    /*
897      Намеренно держим модал ниже системного overlay SmartCaptcha
898      ПОСТОЯННО, а не только после challenge-visible.
899      Поэтому challenge появляется поверх формы сразу, без кадра
900      "сначала за модалом -> потом поверх".
901    */
902    z-index: 1000;
903
904    background: rgba(20, 18, 17, 0.53);
905
906    backdrop-filter: blur(3px);
907    -webkit-backdrop-filter: blur(3px);
908
909    opacity: 0;
910    visibility: hidden;
911
912    pointer-events: none;
913
914    transition:
915      opacity .18s ease,
916      visibility .18s ease;
917  }
918
919  #pt-reviews-v2 .pt-modal-backdrop.is-open {
920    opacity: 1;
921    visibility: visible;
922
923    pointer-events: auto;
924  }
925
926  /*
927    Когда открывается встроенный Tilda popup политики,
928    форма отзыва НЕ закрывается.
929    Мы лишь временно опускаем её слой ниже Tilda popup.
930  */
931  #pt-reviews-v2 .pt-modal-backdrop.is-under-policy {
932    z-index: 8;
933  }
934
935  /*
936    SmartCaptcha рисует дополнительное задание отдельным overlay
937    вне нашей модалки. Базовый слой формы уже заранее ниже challenge,
938    поэтому этот класс теперь только отражает состояние и НЕ меняет
939    z-index — это убирает визуальный "перепрыгивающий" кадр.
940  */
941  #pt-reviews-v2 .pt-modal-backdrop.is-under-captcha {
942    z-index: 1000;
943  }
944
945  #pt-reviews-v2 .pt-modal {
946    position: fixed;
947
948    left: 50%;
949    top: 50%;
950
951    z-index: 1001;
952
953    width: calc(100% - 30px);
954    max-width: 820px;
955    max-height: calc(100dvh - 30px);
956
957    overflow-y: auto;
958
959    background: #fff;
960
961    border-radius: 30px;
962
963    box-shadow:
964      0 28px 90px
965      rgba(0, 0, 0, 0.2);
966
967    transform:
968      translate(
969        -50%,
970        calc(-50% + 16px)
971      );
972
973    opacity: 0;
974    visibility: hidden;
975
976    pointer-events: none;
977
978    transition:
979      opacity .18s ease,
980      transform .18s ease,
981      visibility .18s ease;
982
983    scrollbar-width: none;
984    -ms-overflow-style: none;
985  }
986
987  #pt-reviews-v2 .pt-modal::-webkit-scrollbar {
988    width: 0;
989    height: 0;
990    display: none;
991  }
992
993  #pt-reviews-v2 .pt-modal.is-open {
994    opacity: 1;
995    visibility: visible;
996
997    pointer-events: auto;
998
999    transform:
1000      translate(
1001        -50%,
1002        -50%
1003      );
1004  }
1005
1006  #pt-reviews-v2 .pt-modal.is-under-policy {
1007    z-index: 9;
1008  }
1009
1010  #pt-reviews-v2 .pt-modal.is-under-captcha {
1011    z-index: 1001;
1012  }
1013
1014  #pt-reviews-v2 .pt-modal-head {
1015    display: flex;
1016    align-items: center;
1017    justify-content: space-between;
1018
1019    gap: 16px;
1020
1021    padding:
1022      28px
1023      30px
1024      12px;
1025  }
1026
1027  #pt-reviews-v2 .pt-modal-title {
1028    margin: 0;
1029
1030    font-size: 34px;
1031    line-height: 1.16;
1032    font-weight: 400;
1033
1034    color: var(--pt-text);
1035  }
1036
1037  #pt-reviews-v2 .pt-modal-close {
1038    width: 52px;
1039    height: 52px;
1040    min-width: 52px;
1041
1042    display: flex;
1043    align-items: center;
1044    justify-content: center;
1045
1046    appearance: none;
1047
1048    border: 1px solid var(--pt-border);
1049    border-radius: 50%;
1050
1051    background: #fff;
1052    color: var(--pt-text);
1053
1054    cursor: pointer;
1055
1056    font-size: 28px;
1057    line-height: 1;
1058  }
1059
1060  #pt-reviews-v2 .pt-modal-body {
1061    padding:
1062      0
1063      30px
1064      30px;
1065  }
1066
1067  #pt-reviews-v2 .pt-form-grid {
1068    display: grid;
1069    gap: 18px;
1070  }
1071
1072  #pt-reviews-v2 .pt-field {
1073    display: grid;
1074    gap: 8px;
1075  }
1076
1077  #pt-reviews-v2 .pt-label {
1078    font-size: 15px;
1079    line-height: 1.35;
1080
1081    color: var(--pt-muted);
1082  }
1083
1084  #pt-reviews-v2 .pt-input,
1085  #pt-reviews-v2 .pt-textarea {
1086    width: 100%;
1087
1088    outline: none;
1089
1090    border: 1px solid var(--pt-border);
1091    border-radius: 21px;
1092
1093    background: #fff;
1094    color: var(--pt-text);
1095
1096    font-size: 16px;
1097    line-height: 1.42;
1098
1099    transition:
1100      border-color .15s ease,
1101      box-shadow .15s ease;
1102  }
1103
1104  #pt-reviews-v2 .pt-input {
1105    height: 66px;
1106    padding: 0 21px;
1107  }
1108
1109  /* =========================================================
1110     DYNAMIC TILDA PRODUCT DROPDOWN
1111     ========================================================= */
1112
1113  #pt-reviews-v2 .pt-service-dropdown {
1114    position: relative;
1115    width: 100%;
1116    z-index: 80;
1117  }
1118
1119  #pt-reviews-v2 .pt-service-trigger {
1120    position: relative;
1121
1122    width: 100%;
1123    min-height: 66px;
1124
1125    display: flex;
1126    align-items: center;
1127    gap: 14px;
1128
1129    margin: 0;
1130    padding: 8px 52px 8px 12px;
1131
1132    appearance: none;
1133
1134    border: 1px solid var(--pt-border);
1135    border-radius: 21px;
1136
1137    background: #fff;
1138    color: var(--pt-text);
1139
1140    text-align: left;
1141    cursor: pointer;
1142
1143    transition:
1144      border-color .15s ease,
1145      box-shadow .15s ease;
1146  }
1147
1148  #pt-reviews-v2 .pt-service-trigger::before,
1149  #pt-reviews-v2 .pt-service-trigger::after {
1150    content: '';
1151    position: absolute;
1152    top: 50%;
1153
1154    width: 7px;
1155    height: 1.5px;
1156
1157    background: #8d8580;
1158
1159    transition: transform .16s ease;
1160  }
1161
1162  #pt-reviews-v2 .pt-service-trigger::before {
1163    right: 24px;
1164    transform: translateY(-50%) rotate(45deg);
1165  }
1166
1167  #pt-reviews-v2 .pt-service-trigger::after {
1168    right: 19px;
1169    transform: translateY(-50%) rotate(-45deg);
1170  }
1171
1172  #pt-reviews-v2 .pt-service-dropdown.is-open
1173  .pt-service-trigger::before {
1174    transform: translateY(-50%) rotate(-45deg);
1175  }
1176
1177  #pt-reviews-v2 .pt-service-dropdown.is-open
1178  .pt-service-trigger::after {
1179    transform: translateY(-50%) rotate(45deg);
1180  }
1181
1182  #pt-reviews-v2 .pt-service-trigger:focus,
1183  #pt-reviews-v2 .pt-service-dropdown.is-open
1184  .pt-service-trigger {
1185    outline: none;
1186    border-color: var(--pt-accent);
1187
1188    box-shadow:
1189      0 0 0 4px
1190      var(--pt-accent-soft);
1191  }
1192
1193  #pt-reviews-v2 .pt-service-selected-image {
1194    display: block;
1195
1196    width: 48px;
1197    height: 48px;
1198    min-width: 48px;
1199    min-height: 48px;
1200
1201    object-fit: contain;
1202    object-position: center;
1203
1204    background: #fff;
1205    border-radius: 10px;
1206
1207    pointer-events: none;
1208  }
1209
1210  #pt-reviews-v2 .pt-service-selected-image.is-hidden {
1211    display: none;
1212  }
1213
1214  #pt-reviews-v2 .pt-service-selected-title {
1215    min-width: 0;
1216
1217    font-size: 16px;
1218    font-weight: 400;
1219    line-height: 1.3;
1220
1221    color: var(--pt-text);
1222
1223    white-space: normal;
1224    overflow-wrap: break-word;
1225
1226    pointer-events: none;
1227  }
1228
1229  #pt-reviews-v2 .pt-service-menu-shell {
1230    position: absolute;
1231    left: 0;
1232    right: 0;
1233    top: calc(100% + 8px);
1234
1235    z-index: 120;
1236
1237    display: none;
1238
1239    max-height: min(390px, 46vh);
1240
1241    background: #fff;
1242
1243    border: 1px solid var(--pt-border);
1244    border-radius: 18px;
1245
1246    box-shadow:
1247      0 18px 48px
1248      rgba(0, 0, 0, 0.16);
1249
1250    overflow: hidden;
1251    box-sizing: border-box;
1252  }
1253
1254  #pt-reviews-v2 .pt-service-dropdown.is-open
1255  .pt-service-menu-shell {
1256    display: block;
1257  }
1258
1259  #pt-reviews-v2 .pt-service-menu {
1260    width: 100%;
1261    max-height: min(390px, 46vh);
1262
1263    margin: 0;
1264
1265    padding:
1266      8px
1267      34px
1268      8px
1269      8px;
1270
1271    background: transparent;
1272
1273    border: 0;
1274    border-radius: 18px;
1275
1276    overflow-x: hidden;
1277    overflow-y: auto;
1278
1279    overscroll-behavior: contain;
1280    -webkit-overflow-scrolling: touch;
1281
1282    box-sizing: border-box;
1283
1284    scrollbar-width: none;
1285    -ms-overflow-style: none;
1286  }
1287
1288  #pt-reviews-v2 .pt-service-menu::-webkit-scrollbar {
1289    width: 0;
1290    height: 0;
1291    display: none;
1292  }
1293
1294  #pt-reviews-v2 .pt-service-menu::-webkit-scrollbar-track,
1295  #pt-reviews-v2 .pt-service-menu::-webkit-scrollbar-thumb,
1296  #pt-reviews-v2 .pt-service-menu::-webkit-scrollbar-button,
1297  #pt-reviews-v2 .pt-service-menu::-webkit-scrollbar-corner {
1298    display: none;
1299    width: 0;
1300    height: 0;
1301    background: transparent;
1302  }
1303
1304  #pt-reviews-v2 .pt-service-scrollbar {
1305    position: absolute;
1306
1307    top: 18px;
1308    right: 9px;
1309    bottom: 18px;
1310
1311    width: 12px;
1312
1313    background: rgba(0, 0, 0, 0.055);
1314
1315    border-radius: 999px;
1316
1317    opacity: 0;
1318    pointer-events: none;
1319
1320    z-index: 5;
1321    box-sizing: border-box;
1322
1323    transition: opacity 0.14s ease;
1324  }
1325
1326  #pt-reviews-v2 .pt-service-menu-shell.has-scrollbar
1327  .pt-service-scrollbar {
1328    opacity: 1;
1329    pointer-events: auto;
1330  }
1331
1332  #pt-reviews-v2 .pt-service-scrollbar-thumb {
1333    position: absolute;
1334
1335    top: 0;
1336    left: 2px;
1337    right: 2px;
1338
1339    height: 52px;
1340
1341    background: #a9a9a9;
1342
1343    border-radius: 999px;
1344
1345    cursor: grab;
1346    touch-action: none;
1347
1348    box-sizing: border-box;
1349
1350    transition: background 0.12s ease;
1351  }
1352
1353  #pt-reviews-v2 .pt-service-scrollbar-thumb:hover {
1354    background: #8f8f8f;
1355  }
1356
1357  #pt-reviews-v2 .pt-service-scrollbar-thumb:active,
1358  #pt-reviews-v2 .pt-service-menu-shell.is-scrollbar-dragging
1359  .pt-service-scrollbar-thumb {
1360    background: #7e7e7e;
1361    cursor: grabbing;
1362  }
1363
1364  #pt-reviews-v2 .pt-service-option {
1365    width: 100%;
1366    min-height: 78px;
1367
1368    display: grid;
1369    grid-template-columns: 60px minmax(0, 1fr);
1370    align-items: center;
1371    gap: 13px;
1372
1373    margin: 0;
1374    padding: 9px;
1375
1376    appearance: none;
1377    border: 0;
1378    border-radius: 13px;
1379
1380    background: transparent;
1381    color: var(--pt-text);
1382
1383    text-align: left;
1384    cursor: pointer;
1385
1386    transition: background .12s ease;
1387  }
1388
1389  #pt-reviews-v2 .pt-service-option:hover,
1390  #pt-reviews-v2 .pt-service-option:focus,
1391  #pt-reviews-v2 .pt-service-option[aria-selected="true"] {
1392    outline: none;
1393    background: var(--pt-soft);
1394  }
1395
1396  #pt-reviews-v2 .pt-service-option-image {
1397    display: block;
1398
1399    width: 60px;
1400    height: 60px;
1401    min-width: 60px;
1402    min-height: 60px;
1403
1404    object-fit: contain;
1405    object-position: center;
1406
1407    background: #fff;
1408    border-radius: 10px;
1409
1410    pointer-events: none;
1411  }
1412
1413  #pt-reviews-v2 .pt-service-option-image.is-empty {
1414    background: #f3f0ed;
1415  }
1416
1417  #pt-reviews-v2 .pt-service-option-title {
1418    min-width: 0;
1419
1420    font-size: 15.5px;
1421    font-weight: 500;
1422    line-height: 1.3;
1423
1424    color: var(--pt-text);
1425
1426    white-space: normal;
1427    overflow-wrap: break-word;
1428
1429    pointer-events: none;
1430  }
1431
1432  #pt-reviews-v2 .pt-service-empty {
1433    padding: 18px 16px;
1434
1435    color: var(--pt-muted);
1436
1437    font-size: 14px;
1438    line-height: 1.4;
1439
1440    text-align: center;
1441  }
1442
1443  #pt-reviews-v2 .pt-textarea {
1444    min-height: 176px;
1445
1446    padding: 18px 21px;
1447
1448    resize: vertical;
1449  }
1450
1451  #pt-reviews-v2 .pt-input:focus,
1452  #pt-reviews-v2 .pt-textarea:focus {
1453    border-color: var(--pt-accent);
1454
1455    box-shadow:
1456      0 0 0 4px
1457      var(--pt-accent-soft);
1458  }
1459
1460  /* =========================================================
1461     STAR PICKER
1462     ========================================================= */
1463
1464  #pt-reviews-v2 .pt-star-picker {
1465    display: flex;
1466    align-items: center;
1467
1468    gap: 7px;
1469  }
1470
1471  #pt-reviews-v2 .pt-star-btn {
1472    appearance: none;
1473
1474    border: 0;
1475    background: transparent;
1476
1477    margin: 0;
1478    padding: 0;
1479
1480    cursor: pointer;
1481
1482    color: #d8d1cb;
1483
1484    font-size: 34px;
1485    line-height: 1;
1486
1487    transform-origin: center;
1488
1489    transition:
1490      color .12s ease,
1491      transform .12s ease;
1492  }
1493
1494  #pt-reviews-v2 .pt-star-btn.is-active {
1495    color: var(--pt-accent);
1496  }
1497
1498  #pt-reviews-v2 .pt-star-btn:hover {
1499    transform: scale(1.08);
1500  }
1501
1502  /* =========================================================
1503     SMARTCAPTCHA
1504     ========================================================= */
1505
1506  #pt-reviews-v2 .pt-captcha-field {
1507    display: block;
1508  }
1509
1510  /*
1511    Даём SmartCaptcha самой управлять собственным iframe и адаптивом.
1512    По документации виджет сам выставляет контейнеру высоту 100px.
1513    Мы резервируем только минимальные 100px и НЕ меняем iframe,
1514    внутренние wrapper'ы, border-radius или overflow.
1515  */
1516  #pt-reviews-v2 .pt-captcha-container {
1517    width: 100%;
1518    min-width: 0;
1519    min-height: 100px;
1520
1521    display: block;
1522    position: relative;
1523
1524    margin: 0;
1525
1526    overflow: visible !important;
1527
1528    border: 0;
1529    border-radius: 0;
1530  }
1531
1532  /*
1533    SmartCaptcha добавляет служебный wrapper перед iframe.
1534    Ему тоже запрещаем горизонтально обрезать виджет.
1535  */
1536  #pt-reviews-v2 .pt-captcha-container > div {
1537    max-width: 100% !important;
1538    overflow: visible !important;
1539  }
1540
1541  /*
1542    На desktop оставляем нативную геометрию SmartCaptcha.
1543    Специальный mobile-fit находится внутри media-query ниже.
1544  */
1545
1546  #pt-reviews-v2 .pt-captcha-state {
1547    display: none;
1548
1549    margin-top: 6px;
1550
1551    font-size: 12.5px;
1552    line-height: 1.35;
1553
1554    color: #b43d32;
1555  }
1556
1557  #pt-reviews-v2 .pt-captcha-state.is-visible {
1558    display: block;
1559  }
1560
1561  #pt-reviews-v2 .pt-reviews-load-state {
1562    width: 100%;
1563
1564    display: flex;
1565    align-items: center;
1566    justify-content: center;
1567
1568    min-height: 160px;
1569
1570    padding: 24px;
1571
1572    text-align: center;
1573
1574    color: var(--pt-muted);
1575
1576    font-size: 15px;
1577    line-height: 1.5;
1578  }
1579
1580
1581  /* =========================================================
1582     CHECKBOXES
1583     ========================================================= */
1584
1585  #pt-reviews-v2 .pt-checkbox-row {
1586    display: flex;
1587    align-items: flex-start;
1588
1589    gap: 11px;
1590
1591    color: var(--pt-muted);
1592
1593    font-size: 14px;
1594    line-height: 1.5;
1595  }
1596
1597  #pt-reviews-v2 .pt-checkbox-row input {
1598    width: 17px;
1599    height: 17px;
1600
1601    min-width: 17px;
1602
1603    margin: 2px 0 0;
1604
1605    accent-color: var(--pt-accent);
1606  }
1607
1608  #pt-reviews-v2 .pt-policy-link {
1609    color: var(--pt-accent) !important;
1610
1611    text-decoration: underline !important;
1612    text-underline-offset: 3px;
1613
1614    font-weight: 500;
1615  }
1616
1617  #pt-reviews-v2 .pt-policy-link:hover {
1618    opacity: .78;
1619  }
1620
1621  #pt-reviews-v2 .pt-form-actions {
1622    display: flex;
1623    align-items: center;
1624
1625    gap: 12px;
1626
1627    flex-wrap: wrap;
1628
1629    margin-top: 2px;
1630  }
1631
1632  #pt-reviews-v2 .pt-submit-btn {
1633    min-height: 60px;
1634
1635    padding: 0 29px;
1636
1637    font-size: 17px;
1638  }
1639
1640  #pt-reviews-v2 .pt-form-error,
1641  #pt-reviews-v2 .pt-form-success {
1642    font-size: 14px;
1643    line-height: 1.45;
1644  }
1645
1646  #pt-reviews-v2 .pt-form-error {
1647    color: #b43d32;
1648  }
1649
1650  #pt-reviews-v2 .pt-form-success {
1651    color: #397447;
1652  }
1653
1654  /* =========================================================
1655     TABLET
1656     ========================================================= */
1657
1658  @media screen and (max-width: 980px) {
1659    #pt-reviews-v2 {
1660      --pt-reviews-height: 720px;
1661    }
1662
1663    #pt-reviews-v2 .pt-reviews-container {
1664      padding: 0 24px;
1665    }
1666
1667    #pt-reviews-v2 .pt-reviews-title {
1668      max-width: 760px;
1669
1670      font-size: 34px;
1671
1672      white-space: normal;
1673    }
1674
1675    #pt-reviews-v2 .pt-review-row.count-2 {
1676      width: 100%;
1677      grid-template-columns: repeat(2, minmax(0, 1fr));
1678    }
1679
1680    #pt-reviews-v2 .pt-review-row.count-1 {
1681      width:
1682        calc(
1683          (100% - var(--pt-gap))
1684          / 2
1685        );
1686
1687      grid-template-columns: minmax(0, 1fr);
1688    }
1689
1690    #pt-reviews-v2 .pt-review-card {
1691      padding: 21px;
1692    }
1693  }
1694
1695  /* =========================================================
1696     MOBILE
1697     ========================================================= */
1698
1699  /* =========================================================
1700     HIDE TILDA ME403 HAMBURGER WHILE REVIEW MODAL IS OPEN
1701     ========================================================= */
1702
1703  @media screen and (max-width: 980px) {
1704    body.pt-review-modal-open .t450__burger_container {
1705      opacity: 0 !important;
1706      visibility: hidden !important;
1707      pointer-events: none !important;
1708    }
1709  }
1710
1711  @media screen and (max-width: 640px) {
1712    #pt-reviews-v2 {
1713      --pt-reviews-height: 620px;
1714      --pt-gap: 14px;
1715    }
1716
1717    #pt-reviews-v2 .pt-reviews-section {
1718      padding: 18px 0 8px;
1719    }
1720
1721    #pt-reviews-v2 .pt-reviews-container {
1722      padding: 0 14px;
1723    }
1724
1725    #pt-reviews-v2 .pt-reviews-title {
1726      margin-bottom: 17px;
1727
1728      font-size: 27px;
1729      line-height: 1.3;
1730    }
1731
1732    #pt-reviews-v2 .pt-reviews-toolbar {
1733      gap: 10px;
1734    }
1735
1736    #pt-reviews-v2 .pt-reviews-rating-box {
1737      min-height: 56px;
1738
1739      gap: 10px;
1740
1741      padding: 11px 15px;
1742    }
1743
1744    #pt-reviews-v2 .pt-rating-value {
1745      font-size: 23px;
1746    }
1747
1748    #pt-reviews-v2 .pt-rating-stars {
1749      font-size: 16px;
1750    }
1751
1752    #pt-reviews-v2 .pt-rating-count {
1753      font-size: 12px;
1754    }
1755
1756    #pt-reviews-v2 .pt-review-open-btn {
1757      width: 100%;
1758      min-height: 56px;
1759
1760      font-size: 16px;
1761    }
1762
1763    #pt-reviews-v2 .pt-reviews-shell {
1764      border-radius: 22px;
1765    }
1766
1767    #pt-reviews-v2 .pt-reviews-list {
1768      padding:
1769        4px
1770        21px
1771        12px
1772        1px;
1773    }
1774
1775    #pt-reviews-v2 .pt-custom-scrollbar {
1776      right: 4px;
1777
1778      width: 8px;
1779    }
1780
1781    #pt-reviews-v2 .pt-custom-scrollbar-thumb {
1782      left: 1px;
1783      right: 1px;
1784
1785      min-height: 42px;
1786    }
1787
1788    #pt-reviews-v2 .pt-review-row,
1789    #pt-reviews-v2 .pt-review-row.count-1,
1790    #pt-reviews-v2 .pt-review-row.count-2,
1791    #pt-reviews-v2 .pt-review-row.count-3 {
1792      width: 100%;
1793
1794      grid-template-columns: minmax(0, 1fr);
1795    }
1796
1797    #pt-reviews-v2 .pt-review-card {
1798      padding: 18px;
1799
1800      border-radius: 22px;
1801    }
1802
1803    #pt-reviews-v2 .pt-review-avatar {
1804      width: 52px;
1805      height: 52px;
1806      min-width: 52px;
1807
1808      font-size: 21px;
1809    }
1810
1811    #pt-reviews-v2 .pt-review-author {
1812      font-size: 17px;
1813    }
1814
1815    #pt-reviews-v2 .pt-review-service {
1816      margin-top: 16px;
1817
1818      font-size: 14px;
1819    }
1820
1821    #pt-reviews-v2 .pt-review-text {
1822      font-size: 14.5px;
1823    }
1824
1825    #pt-reviews-v2 .pt-modal {
1826      width: calc(100% - 18px);
1827      max-height: calc(100dvh - 18px);
1828
1829      border-radius: 24px;
1830    }
1831
1832    #pt-reviews-v2 .pt-modal-head {
1833      padding:
1834        20px
1835        18px
1836        9px;
1837    }
1838
1839    #pt-reviews-v2 .pt-modal-title {
1840      font-size: 27px;
1841    }
1842
1843    #pt-reviews-v2 .pt-modal-close {
1844      width: 44px;
1845      height: 44px;
1846      min-width: 44px;
1847
1848      font-size: 24px;
1849    }
1850
1851    #pt-reviews-v2 .pt-modal-body {
1852      padding:
1853        0
1854        18px
1855        20px;
1856    }
1857
1858    #pt-reviews-v2 .pt-form-grid {
1859      gap: 15px;
1860    }
1861
1862    #pt-reviews-v2 .pt-input {
1863      height: 58px;
1864
1865      padding:
1866        0
1867        16px;
1868
1869      border-radius: 17px;
1870
1871      font-size: 15px;
1872    }
1873
1874    #pt-reviews-v2 .pt-service-trigger {
1875      min-height: 58px;
1876      gap: 10px;
1877
1878      padding:
1879        7px
1880        46px
1881        7px
1882        10px;
1883
1884      border-radius: 17px;
1885    }
1886
1887    #pt-reviews-v2 .pt-service-trigger::before {
1888      right: 23px;
1889    }
1890
1891    #pt-reviews-v2 .pt-service-trigger::after {
1892      right: 18px;
1893    }
1894
1895    #pt-reviews-v2 .pt-service-selected-image {
1896      width: 42px;
1897      height: 42px;
1898      min-width: 42px;
1899      min-height: 42px;
1900
1901      border-radius: 9px;
1902    }
1903
1904    #pt-reviews-v2 .pt-service-selected-title {
1905      font-size: 15px;
1906    }
1907
1908    #pt-reviews-v2 .pt-service-menu-shell {
1909      top: calc(100% + 7px);
1910
1911      max-height: min(350px, 43vh);
1912
1913      border-radius: 15px;
1914    }
1915
1916    #pt-reviews-v2 .pt-service-menu {
1917      max-height: min(350px, 43vh);
1918
1919      padding:
1920        6px
1921        22px
1922        6px
1923        6px;
1924
1925      border-radius: 15px;
1926
1927      -webkit-overflow-scrolling: touch;
1928    }
1929
1930    #pt-reviews-v2 .pt-service-scrollbar {
1931      top: 12px;
1932      right: 6px;
1933      bottom: 12px;
1934
1935      width: 8px;
1936    }
1937
1938    #pt-reviews-v2 .pt-service-scrollbar-thumb {
1939      left: 1px;
1940      right: 1px;
1941
1942      height: 40px;
1943
1944      border-radius: 999px;
1945    }
1946
1947    #pt-reviews-v2 .pt-service-option {
1948      min-height: 68px;
1949
1950      grid-template-columns: 52px minmax(0, 1fr);
1951      gap: 10px;
1952
1953      padding: 8px;
1954
1955      border-radius: 11px;
1956    }
1957
1958    #pt-reviews-v2 .pt-service-option-image {
1959      width: 52px;
1960      height: 52px;
1961      min-width: 52px;
1962      min-height: 52px;
1963
1964      border-radius: 8px;
1965    }
1966
1967    #pt-reviews-v2 .pt-service-option-title {
1968      font-size: 14.5px;
1969      line-height: 1.25;
1970    }
1971
1972    #pt-reviews-v2 .pt-textarea {
1973      min-height: 145px;
1974
1975      padding: 15px 16px;
1976
1977      border-radius: 17px;
1978
1979      font-size: 15px;
1980    }
1981
1982    #pt-reviews-v2 .pt-star-btn {
1983      font-size: 31px;
1984    }
1985
1986    /*
1987      MOBILE SMARTCAPTCHA.
1988      Возвращаем ширину/масштаб 1:1, как было до предыдущего mobile-fit:
1989      НИКАКОГО горизонтального увеличения и НИКАКОГО scale().
1990
1991      На узком поле служебный текст SmartCaptcha занимает больше строк,
1992      поэтому увеличиваем ТОЛЬКО вертикальный viewport виджета.
1993      Ширина остаётся строго 100% от формы.
1994    */
1995    #pt-reviews-v2 .pt-captcha-container {
1996      /*
1997        ЕДИНСТВЕННОЕ значение высоты мобильной SmartCaptcha.
1998        Если захочешь увеличить/уменьшить её сам — меняй ТОЛЬКО эту строку.
1999      */
2000      --pt-captcha-mobile-height: 160px;
2001
2002      width: 100%;
2003      height: var(--pt-captcha-mobile-height) !important;
2004      min-height: var(--pt-captcha-mobile-height) !important;
2005
2006      overflow: visible !important;
2007    }
2008
2009    #pt-reviews-v2 .pt-captcha-container > div {
2010      width: 100% !important;
2011      max-width: 100% !important;
2012      height: var(--pt-captcha-mobile-height) !important;
2013      min-height: var(--pt-captcha-mobile-height) !important;
2014
2015      margin: 0 !important;
2016      overflow: visible !important;
2017    }
2018
2019    #pt-reviews-v2 .pt-captcha-container iframe {
2020      display: block !important;
2021
2022      width: 100% !important;
2023      max-width: 100% !important;
2024      min-width: 0 !important;
2025      height: var(--pt-captcha-mobile-height) !important;
2026      min-height: var(--pt-captcha-mobile-height) !important;
2027
2028      margin: 0 !important;
2029      border: 0 !important;
2030
2031      transform: none !important;
2032    }
2033
2034
2035    #pt-reviews-v2 .pt-submit-btn {
2036      width: 100%;
2037    }
2038  }
2039</style> <div id="pt-reviews-v2"> <section class="pt-reviews-section"> <div class="pt-reviews-container"> <div class="pt-reviews-top"> <h2 class="pt-reviews-title">
2040          Реальные отзывы наших клиентов об оказаных им услугах
2041        </h2> <div class="pt-reviews-toolbar"> <div class="pt-reviews-rating-box"> <span
2042              class="pt-rating-value"
2043              id="ptReviewsAverage"
2044            >
2045              0.0
2046            </span> <span
2047              class="pt-rating-stars"
2048              aria-hidden="true"
2049            >
2050              ★★★★★
2051            </span> <span
2052              class="pt-rating-count"
2053              id="ptReviewsCount"
2054            >
2055              0 отзывов
2056            </span> </div> <button
2057            class="pt-review-open-btn"
2058            id="ptOpenReviewModal"
2059            type="button"
2060          >
2061            Оставить отзыв
2062          </button> </div> </div> <div
2063        class="pt-reviews-shell"
2064        id="ptReviewsShell"
2065      > <div
2066          class="pt-reviews-list"
2067          id="ptReviewsList"
2068        ></div> <div
2069          class="pt-custom-scrollbar"
2070          id="ptCustomScrollbar"
2071          aria-hidden="true"
2072        > <div
2073            class="pt-custom-scrollbar-thumb"
2074            id="ptCustomScrollbarThumb"
2075          ></div> </div> </div> <div
2076        class="pt-show-all-wrap"
2077        id="ptShowAllWrap"
2078      > <button
2079          class="pt-show-all-btn"
2080          id="ptShowAllBtn"
2081          type="button"
2082        >
2083          Посмотреть все
2084        </button> </div> </div> </section> <div
2085    class="pt-modal-backdrop"
2086    id="ptReviewBackdrop"
2087  ></div> <div
2088    class="pt-modal"
2089    id="ptReviewModal"
2090    role="dialog"
2091    aria-modal="true"
2092    aria-labelledby="ptReviewModalTitle"
2093  > <div class="pt-modal-head"> <h3
2094        class="pt-modal-title"
2095        id="ptReviewModalTitle"
2096      >
2097        Оставить отзыв
2098      </h3> <button
2099        class="pt-modal-close"
2100        id="ptCloseReviewModal"
2101        type="button"
2102        aria-label="Закрыть"
2103      >
2104        ×
2105      </button> </div> <div class="pt-modal-body"> <form
2106        class="pt-form-grid"
2107        id="ptReviewForm"
2108        novalidate
2109      > <div class="pt-field"> <label
2110            class="pt-label"
2111            for="ptReviewName"
2112          >
2113            Ваше имя
2114          </label> <input
2115            class="pt-input"
2116            id="ptReviewName"
2117            type="text"
2118            maxlength="100"
2119            placeholder="Введите ваше имя"
2120            autocomplete="name"
2121            required
2122          > </div> <div class="pt-field"> <label
2123            class="pt-label"
2124            for="ptServiceDropdownButton"
2125          >
2126            Оказанная услуга
2127          </label> <div
2128            class="pt-service-dropdown"
2129            id="ptServiceDropdown"
2130          > <button
2131              class="pt-service-trigger"
2132              id="ptServiceDropdownButton"
2133              type="button"
2134              aria-haspopup="listbox"
2135              aria-expanded="false"
2136            > <img
2137                class="pt-service-selected-image is-hidden"
2138                id="ptServiceSelectedImage"
2139                alt=""
2140              > <span
2141                class="pt-service-selected-title"
2142                id="ptServiceSelectedTitle"
2143              >Выберите оказанную услугу</span> </button> <div
2144              class="pt-service-menu-shell"
2145              id="ptServiceDropdownMenuShell"
2146            > <div
2147                class="pt-service-menu"
2148                id="ptServiceDropdownMenu"
2149                role="listbox"
2150                aria-label="Оказанная услуга"
2151              ></div> <div
2152                class="pt-service-scrollbar"
2153                id="ptServiceScrollbar"
2154                aria-hidden="true"
2155              > <div
2156                  class="pt-service-scrollbar-thumb"
2157                  id="ptServiceScrollbarThumb"
2158                ></div> </div> </div> <input
2159              id="ptReviewService"
2160              type="hidden"
2161              value=""
2162            > </div> </div> <div class="pt-field"> <span class="pt-label">
2163            Оценка
2164          </span> <div
2165            class="pt-star-picker"
2166            id="ptStarPicker"
2167            role="radiogroup"
2168            aria-label="Оценка от 1 до 5"
2169          > <button
2170              class="pt-star-btn"
2171              type="button"
2172              data-value="1"
2173              aria-label="1 звезда"
2174            >★</button> <button
2175              class="pt-star-btn"
2176              type="button"
2177              data-value="2"
2178              aria-label="2 звезды"
2179            >★</button> <button
2180              class="pt-star-btn"
2181              type="button"
2182              data-value="3"
2183              aria-label="3 звезды"
2184            >★</button> <button
2185              class="pt-star-btn"
2186              type="button"
2187              data-value="4"
2188              aria-label="4 звезды"
2189            >★</button> <button
2190              class="pt-star-btn"
2191              type="button"
2192              data-value="5"
2193              aria-label="5 звёзд"
2194            >★</button> </div> <input
2195            id="ptReviewRating"
2196            type="hidden"
2197            value="5"
2198          > </div> <div class="pt-field"> <label
2199            class="pt-label"
2200            for="ptReviewText"
2201          >
2202            Ваш отзыв
2203          </label> <textarea
2204            class="pt-textarea"
2205            id="ptReviewText"
2206            maxlength="4000"
2207            placeholder="Расскажите, как прошла поездка"
2208            required
2209          ></textarea> </div> <div class="pt-captcha-field"> <div
2210            class="pt-captcha-container"
2211            id="ptSmartCaptcha"
2212          ></div> <div
2213            class="pt-captcha-state"
2214            id="ptCaptchaState"
2215          ></div> </div> <label class="pt-checkbox-row"> <input
2216            id="ptConsentProcessing"
2217            type="checkbox"
2218            required
2219          > <span>
2220            Я соглашаюсь с политикой обработки персональных данных,
2221            изложенной в
2222            <a
2223              class="pt-policy-link"
2224              id="ptPolicyLink"
2225              href="#popup:infoblock"
2226            >политике конфиденциальности</a>.
2227          </span> </label> <label class="pt-checkbox-row"> <input
2228            id="ptConsentPublication"
2229            type="checkbox"
2230            required
2231          > <span>
2232            Я соглашаюсь на публикацию отзыва на сайте.
2233          </span> </label> <div class="pt-form-actions"> <button
2234            class="pt-submit-btn"
2235            id="ptSubmitReview"
2236            type="submit"
2237          >
2238            Отправить отзыв
2239          </button> </div> <div
2240          class="pt-form-error pt-hidden"
2241          id="ptReviewError"
2242        ></div> <div
2243          class="pt-form-success pt-hidden"
2244          id="ptReviewSuccess"
2245        ></div> </form> </div> </div> </div> 
2245<script>
2246(function () {
2247
2248  'use strict';
2249
2250
2251  /* =========================================================
2252     НАСТРОЙКИ UI
2253     ========================================================= */
2254
2255  const INITIAL_REVIEW_LIMIT = 9;
2256
2257
2258  /*
2259    ============================================================
2260    LIVE CONFIG
2261    ============================================================
2262
2263    ВСТАВЬ ДВА ПУБЛИЧНЫХ ЗНАЧЕНИЯ:
2264
2265    1) REVIEWS_API_URL
2266       URL публичной Cloud Function reviews-api
2267       БЕЗ ?action=...
2268
2269    2) SMARTCAPTCHA_CLIENT_KEY
2270       публичный клиентский ключ SmartCaptcha (ysc1_...)
2271
2272    Серверный ysc2_ ключ сюда НИКОГДА не вставляется.
2273  */
2274  const REVIEWS_API_URL =
2275    'https://functions.yandexcloud.net/d4ee4j64e66jgfcm52v0';
2276
2277
2278  const SMARTCAPTCHA_CLIENT_KEY =
2279    'ysc1_akCSHd0oPssgq6UjAAPtTmTvPIiKy9CoX72FtvTC104b5d33';
2280
2281
2282  /*
2283    ============================================================
2284    TILDA PRODUCT SOURCE FOR THE REVIEW FORM
2285    ============================================================
2286
2287    Используем ТОТ ЖЕ источник товаров, что и в существующем поиске:
2288    карточки ST310N/T778, уже отрисованные Tilda на этой странице.
2289
2290    Никакого ручного списка услуг здесь больше нет.
2291  */
2292  const PRODUCT_CARD_SELECTOR =
2293    '.t778 .t-store__card';
2294
2295
2296  const PRODUCT_TITLE_SELECTOR =
2297    '.t-store__card__title';
2298
2299
2300  let serviceProducts =
2301    [];
2302
2303
2304  let selectedServiceProduct =
2305    null;
2306
2307
2308  let serviceScrollbarDragging =
2309    false;
2310
2311
2312  let serviceScrollbarDragStartY =
2313    0;
2314
2315
2316  let serviceScrollbarDragStartScrollTop =
2317    0;
2318
2319
2320  /* =========================================================
2321     DOM
2322     ========================================================= */
2323
2324  const root =
2325    document.getElementById(
2326      'pt-reviews-v2'
2327    );
2328
2329
2330  if (!root) {
2331
2332    return;
2333
2334  }
2335
2336
2337  const reviewsShell =
2338    root.querySelector(
2339      '#ptReviewsShell'
2340    );
2341
2342
2343  const reviewsList =
2344    root.querySelector(
2345      '#ptReviewsList'
2346    );
2347
2348
2349  const customScrollbar =
2350    root.querySelector(
2351      '#ptCustomScrollbar'
2352    );
2353
2354
2355  const customScrollbarThumb =
2356    root.querySelector(
2357      '#ptCustomScrollbarThumb'
2358    );
2359
2360
2361  const averageNode =
2362    root.querySelector(
2363      '#ptReviewsAverage'
2364    );
2365
2366
2367  const countNode =
2368    root.querySelector(
2369      '#ptReviewsCount'
2370    );
2371
2372
2373  const showAllWrap =
2374    root.querySelector(
2375      '#ptShowAllWrap'
2376    );
2377
2378
2379  const showAllBtn =
2380    root.querySelector(
2381      '#ptShowAllBtn'
2382    );
2383
2384
2385  const openModalBtn =
2386    root.querySelector(
2387      '#ptOpenReviewModal'
2388    );
2389
2390
2391  const closeModalBtn =
2392    root.querySelector(
2393      '#ptCloseReviewModal'
2394    );
2395
2396
2397  const modal =
2398    root.querySelector(
2399      '#ptReviewModal'
2400    );
2401
2402
2403  const backdrop =
2404    root.querySelector(
2405      '#ptReviewBackdrop'
2406    );
2407
2408
2409  const form =
2410    root.querySelector(
2411      '#ptReviewForm'
2412    );
2413
2414
2415  const reviewNameInput =
2416    root.querySelector(
2417      '#ptReviewName'
2418    );
2419
2420
2421  const serviceInput =
2422    root.querySelector(
2423      '#ptReviewService'
2424    );
2425
2426
2427  const serviceDropdown =
2428    root.querySelector(
2429      '#ptServiceDropdown'
2430    );
2431
2432
2433  const serviceDropdownButton =
2434    root.querySelector(
2435      '#ptServiceDropdownButton'
2436    );
2437
2438
2439  const serviceDropdownMenuShell =
2440    root.querySelector(
2441      '#ptServiceDropdownMenuShell'
2442    );
2443
2444
2445  const serviceDropdownMenu =
2446    root.querySelector(
2447      '#ptServiceDropdownMenu'
2448    );
2449
2450
2451  const serviceScrollbar =
2452    root.querySelector(
2453      '#ptServiceScrollbar'
2454    );
2455
2456
2457  const serviceScrollbarThumb =
2458    root.querySelector(
2459      '#ptServiceScrollbarThumb'
2460    );
2461
2462
2463  const serviceSelectedImage =
2464    root.querySelector(
2465      '#ptServiceSelectedImage'
2466    );
2467
2468
2469  const serviceSelectedTitle =
2470    root.querySelector(
2471      '#ptServiceSelectedTitle'
2472    );
2473
2474
2475  const reviewTextInput =
2476    root.querySelector(
2477      '#ptReviewText'
2478    );
2479
2480
2481  const ratingInput =
2482    root.querySelector(
2483      '#ptReviewRating'
2484    );
2485
2486
2487  const starPicker =
2488    root.querySelector(
2489      '#ptStarPicker'
2490    );
2491
2492
2493  const starButtons =
2494    Array.from(
2495      root.querySelectorAll(
2496        '.pt-star-btn'
2497      )
2498    );
2499
2500
2501  const consentProcessing =
2502    root.querySelector(
2503      '#ptConsentProcessing'
2504    );
2505
2506
2507  const consentPublication =
2508    root.querySelector(
2509      '#ptConsentPublication'
2510    );
2511
2512
2513  const policyLink =
2514    root.querySelector(
2515      '#ptPolicyLink'
2516    );
2517
2518
2519  const errorBox =
2520    root.querySelector(
2521      '#ptReviewError'
2522    );
2523
2524
2525  const successBox =
2526    root.querySelector(
2527      '#ptReviewSuccess'
2528    );
2529
2530
2531  const submitButton =
2532    root.querySelector(
2533      '#ptSubmitReview'
2534    );
2535
2536
2537  const captchaContainer =
2538    root.querySelector(
2539      '#ptSmartCaptcha'
2540    );
2541
2542
2543  const captchaState =
2544    root.querySelector(
2545      '#ptCaptchaState'
2546    );
2547
2548
2549  /* =========================================================
2550     STATE
2551     ========================================================= */
2552
2553  let reviews =
2554    [];
2555
2556
2557  let reviewsLoaded =
2558    false;
2559
2560
2561  let showAll =
2562    false;
2563
2564
2565  let captchaWidgetId =
2566    null;
2567
2568
2569  let captchaToken =
2570    '';
2571
2572
2573  let captchaScriptLoading =
2574    false;
2575
2576
2577  let captchaChallengeVisible =
2578    false;
2579
2580
2581  let formSubmitting =
2582    false;
2583
2584
2585  let selectedRating =
2586    5;
2587
2588
2589  let activeColumns =
2590    getColumnCount();
2591
2592
2593  /* =========================================================
2594     HELPERS
2595     ========================================================= */
2596
2597  function escapeHtml(
2598    value
2599  ) {
2600
2601    return String(
2602      value == null
2603        ? ''
2604        : value
2605    )
2606      .replace(
2607        /&/g,
2608        '&amp;'
2609      )
2610      .replace(
2611        /</g,
2612        '&lt;'
2613      )
2614      .replace(
2615        />/g,
2616        '&gt;'
2617      )
2618      .replace(
2619        /"/g,
2620        '&quot;'
2621      )
2622      .replace(
2623        /'/g,
2624        '&#039;'
2625      );
2626
2627  }
2628
2629
2630  function getInitial(
2631    name
2632  ) {
2633
2634    const clean =
2635      String(
2636        name || ''
2637      ).trim();
2638
2639
2640    return clean
2641      ? clean.charAt(0).toUpperCase()
2642      : 'Г';
2643
2644  }
2645
2646
2647  function getStars(
2648    rating
2649  ) {
2650
2651    const safe =
2652      Math.max(
2653        0,
2654        Math.min(
2655          5,
2656          Number(
2657            rating
2658          ) || 0
2659        )
2660      );
2661
2662
2663    return (
2664      '★'.repeat(
2665        safe
2666      )
2667      +
2668      '☆'.repeat(
2669        5 - safe
2670      )
2671    );
2672
2673  }
2674
2675
2676  function pluralReviews(
2677    count
2678  ) {
2679
2680    const n =
2681      Math.abs(
2682        count
2683      ) % 100;
2684
2685
2686    const n1 =
2687      n % 10;
2688
2689
2690    if (
2691      n > 10 &&
2692      n < 20
2693    ) {
2694
2695      return (
2696        count
2697        + ' отзывов'
2698      );
2699
2700    }
2701
2702
2703    if (
2704      n1 > 1 &&
2705      n1 < 5
2706    ) {
2707
2708      return (
2709        count
2710        + ' отзыва'
2711      );
2712
2713    }
2714
2715
2716    if (
2717      n1 === 1
2718    ) {
2719
2720      return (
2721        count
2722        + ' отзыв'
2723      );
2724
2725    }
2726
2727
2728    return (
2729      count
2730      + ' отзывов'
2731    );
2732
2733  }
2734
2735
2736  function calculateAverage() {
2737
2738    if (!reviews.length) {
2739
2740      return '0.0';
2741
2742    }
2743
2744
2745    const total =
2746      reviews.reduce(
2747        function (
2748          sum,
2749          review
2750        ) {
2751
2752          return (
2753            sum
2754            +
2755            Number(
2756              review.rating || 0
2757            )
2758          );
2759
2760        },
2761        0
2762      );
2763
2764
2765    return (
2766      total
2767      /
2768      reviews.length
2769    ).toFixed(
2770      1
2771    );
2772
2773  }
2774
2775
2776  function formatDate(
2777    value
2778  ) {
2779
2780    if (!value) {
2781
2782      return '';
2783
2784    }
2785
2786
2787    const date =
2788      new Date(
2789        value
2790      );
2791
2792
2793    if (
2794      Number.isNaN(
2795        date.getTime()
2796      )
2797    ) {
2798
2799      return String(
2800        value
2801      );
2802
2803    }
2804
2805
2806    return date.toLocaleDateString(
2807      'ru-RU',
2808      {
2809        day:
2810          'numeric',
2811
2812        month:
2813          'long',
2814
2815        year:
2816          'numeric'
2817      }
2818    );
2819
2820  }
2821
2822
2823  function getColumnCount() {
2824
2825    if (
2826      window.innerWidth
2827      <=
2828      640
2829    ) {
2830
2831      return 1;
2832
2833    }
2834
2835
2836    if (
2837      window.innerWidth
2838      <=
2839      980
2840    ) {
2841
2842      return 2;
2843
2844    }
2845
2846
2847    return 3;
2848
2849  }
2850
2851
2852  function groupIntoRows(
2853    items,
2854    columns
2855  ) {
2856
2857    const rows = [];
2858
2859
2860    for (
2861      let index = 0;
2862      index < items.length;
2863      index += columns
2864    ) {
2865
2866      rows.push(
2867        items.slice(
2868          index,
2869          index + columns
2870        )
2871      );
2872
2873    }
2874
2875
2876    return rows;
2877
2878  }
2879
2880
2881  /* =========================================================
2882     BACKEND + SMARTCAPTCHA
2883     ========================================================= */
2884
2885  function apiConfigured() {
2886
2887    return (
2888      REVIEWS_API_URL
2889      &&
2890      !REVIEWS_API_URL.includes(
2891        'PASTE_'
2892      )
2893    );
2894
2895  }
2896
2897
2898  function captchaConfigured() {
2899
2900    return (
2901      SMARTCAPTCHA_CLIENT_KEY
2902      &&
2903      !SMARTCAPTCHA_CLIENT_KEY.includes(
2904        'PASTE_'
2905      )
2906    );
2907
2908  }
2909
2910
2911  function apiUrl(
2912    action
2913  ) {
2914
2915    const separator =
2916      REVIEWS_API_URL.includes(
2917        '?'
2918      )
2919        ? '&'
2920        : '?';
2921
2922
2923    return (
2924      REVIEWS_API_URL
2925      +
2926      separator
2927      +
2928      'action='
2929      +
2930      encodeURIComponent(
2931        action
2932      )
2933    );
2934
2935  }
2936
2937
2938  async function readJsonResponse(
2939    response
2940  ) {
2941
2942    let data =
2943      null;
2944
2945
2946    try {
2947
2948      data =
2949        await response.json();
2950
2951    } catch (
2952      error
2953    ) {
2954
2955      data =
2956        null;
2957
2958    }
2959
2960
2961    if (
2962      !response.ok
2963    ) {
2964
2965      const message =
2966        data
2967        &&
2968        data.error
2969          ? data.error
2970          : (
2971              'Ошибка сервера: HTTP '
2972              +
2973              response.status
2974            );
2975
2976
2977      throw new Error(
2978        message
2979      );
2980
2981    }
2982
2983
2984    return data || {};
2985
2986  }
2987
2988
2989  async function loadReviews() {
2990
2991    if (
2992      !apiConfigured()
2993    ) {
2994
2995      reviews =
2996        [];
2997
2998
2999      reviewsLoaded =
3000        false;
3001
3002
3003      reviewsList.innerHTML =
3004        '<div class="pt-reviews-load-state">'
3005        +
3006        'Укажите REVIEWS_API_URL в коде T123.'
3007        +
3008        '</div>';
3009
3010
3011      averageNode.textContent =
3012        '0.0';
3013
3014
3015      countNode.textContent =
3016        pluralReviews(
3017          0
3018        );
3019
3020
3021      showAllWrap.classList.add(
3022        'is-consumed'
3023      );
3024
3025
3026      updateCustomScrollbar();
3027
3028      return;
3029
3030    }
3031
3032
3033    reviewsList.innerHTML =
3034      '<div class="pt-reviews-load-state">'
3035      +
3036      'Загружаем отзывы…'
3037      +
3038      '</div>';
3039
3040
3041    try {
3042
3043      const response =
3044        await fetch(
3045          apiUrl(
3046            'list'
3047          ),
3048          {
3049            method:
3050              'GET',
3051
3052            headers:
3053              {
3054                'Accept':
3055                  'application/json'
3056              },
3057
3058            cache:
3059              'no-store'
3060          }
3061        );
3062
3063
3064      const data =
3065        await readJsonResponse(
3066          response
3067        );
3068
3069
3070      reviews =
3071        Array.isArray(
3072          data.reviews
3073        )
3074          ? data.reviews
3075          : [];
3076
3077
3078      reviewsLoaded =
3079        true;
3080
3081
3082      showAll =
3083        false;
3084
3085
3086      reviewsList.scrollTop =
3087        0;
3088
3089
3090      renderReviews();
3091
3092    } catch (
3093      error
3094    ) {
3095
3096      reviews =
3097        [];
3098
3099
3100      reviewsLoaded =
3101        false;
3102
3103
3104      reviewsList.innerHTML =
3105        '<div class="pt-reviews-load-state">'
3106        +
3107        'Не удалось загрузить отзывы. '
3108        +
3109        escapeHtml(
3110          error.message
3111          ||
3112          'Попробуйте обновить страницу.'
3113        )
3114        +
3115        '</div>';
3116
3117
3118      averageNode.textContent =
3119        '0.0';
3120
3121
3122      countNode.textContent =
3123        pluralReviews(
3124          0
3125        );
3126
3127
3128      showAllWrap.classList.add(
3129        'is-consumed'
3130      );
3131
3132
3133      updateCustomScrollbar();
3134
3135    }
3136
3137  }
3138
3139
3140  function setCaptchaChallengeLayer(
3141    visible
3142  ) {
3143
3144    captchaChallengeVisible =
3145      Boolean(
3146        visible
3147      );
3148
3149
3150    modal.classList.toggle(
3151      'is-under-captcha',
3152      captchaChallengeVisible
3153    );
3154
3155
3156    backdrop.classList.toggle(
3157      'is-under-captcha',
3158      captchaChallengeVisible
3159    );
3160
3161  }
3162
3163
3164  function setCaptchaState(
3165    text,
3166    show
3167  ) {
3168
3169    captchaState.textContent =
3170      text || '';
3171
3172
3173    captchaState.classList.toggle(
3174      'is-visible',
3175      Boolean(
3176        show
3177        &&
3178        text
3179      )
3180    );
3181
3182  }
3183
3184
3185  function renderSmartCaptcha() {
3186
3187    if (
3188      captchaWidgetId !== null
3189    ) {
3190
3191      return;
3192
3193    }
3194
3195
3196    if (
3197      !captchaConfigured()
3198    ) {
3199
3200      setCaptchaState(
3201        'Укажите SMARTCAPTCHA_CLIENT_KEY в коде T123.',
3202        true
3203      );
3204
3205      return;
3206
3207    }
3208
3209
3210    if (
3211      !window.smartCaptcha
3212    ) {
3213
3214      return;
3215
3216    }
3217
3218
3219    captchaWidgetId =
3220      window.smartCaptcha.render(
3221        captchaContainer,
3222        {
3223          sitekey:
3224            SMARTCAPTCHA_CLIENT_KEY,
3225
3226          hl:
3227            'ru',
3228
3229          callback:
3230            function (
3231              token
3232            ) {
3233
3234              captchaToken =
3235                typeof token === 'string'
3236                  ? token
3237                  : '';
3238
3239
3240              setCaptchaChallengeLayer(
3241                false
3242              );
3243
3244
3245              setCaptchaState(
3246                '',
3247                false
3248              );
3249
3250            }
3251        }
3252      );
3253
3254
3255    /*
3256      Официальные события SmartCaptcha.
3257      Дополнительный challenge создаётся отдельным overlay вне нашей
3258      модалки, поэтому на время его показа опускаем слой формы ниже.
3259    */
3260    if (
3261      typeof window.smartCaptcha.subscribe
3262      ===
3263      'function'
3264    ) {
3265
3266      window.smartCaptcha.subscribe(
3267        captchaWidgetId,
3268        'challenge-visible',
3269        function () {
3270
3271          setCaptchaChallengeLayer(
3272            true
3273          );
3274
3275        }
3276      );
3277
3278
3279      window.smartCaptcha.subscribe(
3280        captchaWidgetId,
3281        'challenge-hidden',
3282        function () {
3283
3284          setCaptchaChallengeLayer(
3285            false
3286          );
3287
3288        }
3289      );
3290
3291
3292      window.smartCaptcha.subscribe(
3293        captchaWidgetId,
3294        'success',
3295        function () {
3296
3297          setCaptchaChallengeLayer(
3298            false
3299          );
3300
3301        }
3302      );
3303
3304    }
3305
3306
3307    setCaptchaState(
3308      '',
3309      false
3310    );
3311
3312  }
3313
3314
3315  window.ptReviewsSmartCaptchaReady =
3316    function () {
3317
3318      captchaScriptLoading =
3319        false;
3320
3321
3322      renderSmartCaptcha();
3323
3324    };
3325
3326
3327  function ensureSmartCaptcha() {
3328
3329    if (
3330      captchaWidgetId !== null
3331    ) {
3332
3333      return;
3334
3335    }
3336
3337
3338    if (
3339      window.smartCaptcha
3340    ) {
3341
3342      renderSmartCaptcha();
3343
3344      return;
3345
3346    }
3347
3348
3349    if (
3350      captchaScriptLoading
3351    ) {
3352
3353      return;
3354
3355    }
3356
3357
3358    if (
3359      !captchaConfigured()
3360    ) {
3361
3362      setCaptchaState(
3363        'Укажите SMARTCAPTCHA_CLIENT_KEY в коде T123.',
3364        true
3365      );
3366
3367      return;
3368
3369    }
3370
3371
3372    captchaScriptLoading =
3373      true;
3374
3375
3376    const script =
3377      document.createElement(
3378        'script'
3379      );
3380
3381
3382    script.src =
3383      'https://smartcaptcha.cloud.yandex.ru/captcha.js'
3384      +
3385      '?render=onload'
3386      +
3387      '&onload=ptReviewsSmartCaptchaReady';
3388
3389
3390    script.defer =
3391      true;
3392
3393
3394    script.onerror =
3395      function () {
3396
3397        captchaScriptLoading =
3398          false;
3399
3400
3401        setCaptchaState(
3402          'Не удалось загрузить SmartCaptcha.',
3403          true
3404        );
3405
3406      };
3407
3408
3409    document.head.appendChild(
3410      script
3411    );
3412
3413  }
3414
3415
3416  function resetSmartCaptcha() {
3417
3418    captchaToken =
3419      '';
3420
3421
3422    setCaptchaChallengeLayer(
3423      false
3424    );
3425
3426
3427    if (
3428      window.smartCaptcha
3429      &&
3430      captchaWidgetId !== null
3431    ) {
3432
3433      try {
3434
3435        window.smartCaptcha.reset(
3436          captchaWidgetId
3437        );
3438
3439      } catch (
3440        error
3441      ) {
3442
3443        /*
3444          Виджет мог быть пересоздан Tilda/browser.
3445        */
3446
3447      }
3448
3449    }
3450
3451
3452    setCaptchaState(
3453      '',
3454      false
3455    );
3456
3457  }
3458
3459
3460  /* =========================================================
3461     SERVICES: DYNAMIC INDEX FROM TILDA PRODUCTS
3462     ========================================================= */
3463
3464  function normalizeServiceProductText(
3465    value
3466  ) {
3467
3468    return String(
3469      value || ''
3470    )
3471      .normalize('NFKC')
3472      .toLocaleLowerCase(
3473        'ru-RU'
3474      )
3475      .replace(
3476        /ё/g,
3477        'е'
3478      )
3479      .replace(
3480        /[^a-zа-я0-9]+/gi,
3481        ' '
3482      )
3483      .replace(
3484        /\s+/g,
3485        ' '
3486      )
3487      .trim();
3488
3489  }
3490
3491
3492  function getServiceProductImage(
3493    card
3494  ) {
3495
3496    /*
3497      Основной источник — тот же data-product-img,
3498      который уже используется в рабочем поиске.
3499    */
3500    let imageUrl =
3501      card.getAttribute(
3502        'data-product-img'
3503      ) || '';
3504
3505
3506    /*
3507      Fallback на реальный DOM-элемент картинки товара.
3508    */
3509    if (!imageUrl) {
3510
3511      const imageElement =
3512        card.querySelector(
3513          '.t-store__card__img, '
3514          +
3515          '.t-store__card__bgimg, '
3516          +
3517          '.js-product-img'
3518        );
3519
3520
3521      if (imageElement) {
3522
3523        imageUrl =
3524          imageElement.getAttribute(
3525            'data-original'
3526          )
3527          ||
3528          imageElement.getAttribute(
3529            'src'
3530          )
3531          ||
3532          '';
3533
3534
3535        if (!imageUrl) {
3536
3537          const backgroundImage =
3538            imageElement.style
3539              .backgroundImage || '';
3540
3541
3542          const match =
3543            backgroundImage.match(
3544              /url\(["']?(.*?)["']?\)/
3545            );
3546
3547
3548          if (
3549            match
3550            &&
3551            match[1]
3552          ) {
3553
3554            imageUrl =
3555              match[1];
3556
3557          }
3558
3559        }
3560
3561      }
3562
3563    }
3564
3565
3566    return String(
3567      imageUrl || ''
3568    )
3569      .replace(
3570        /&amp;/g,
3571        '&'
3572      )
3573      .trim();
3574
3575  }
3576
3577
3578  function buildServiceProductIndex() {
3579
3580    const cards =
3581      document.querySelectorAll(
3582        PRODUCT_CARD_SELECTOR
3583      );
3584
3585
3586    const products =
3587      [];
3588
3589
3590    const usedProducts =
3591      new Set();
3592
3593
3594    cards.forEach(
3595      function (
3596        card
3597      ) {
3598
3599        const titleElement =
3600          card.querySelector(
3601            PRODUCT_TITLE_SELECTOR
3602          );
3603
3604
3605        if (!titleElement) {
3606
3607          return;
3608
3609        }
3610
3611
3612        const title =
3613          String(
3614            titleElement.textContent
3615            ||
3616            ''
3617          )
3618            .replace(
3619              /\s+/g,
3620              ' '
3621            )
3622            .trim();
3623
3624
3625        if (!title) {
3626
3627          return;
3628
3629        }
3630
3631
3632        const normalizedTitle =
3633          normalizeServiceProductText(
3634            title
3635          );
3636
3637
3638        if (!normalizedTitle) {
3639
3640          return;
3641
3642        }
3643
3644
3645        const uid =
3646          card.getAttribute(
3647            'data-product-uid'
3648          )
3649          ||
3650          card.getAttribute(
3651            'data-product-gen-uid'
3652          )
3653          ||
3654          card.getAttribute(
3655            'data-product-lid'
3656          )
3657          ||
3658          '';
3659
3660
3661        const uniqueKey =
3662          uid
3663            ? 'uid:' + uid
3664            : 'name:' + normalizedTitle;
3665
3666
3667        if (
3668          usedProducts.has(
3669            uniqueKey
3670          )
3671        ) {
3672
3673          return;
3674
3675        }
3676
3677
3678        usedProducts.add(
3679          uniqueKey
3680        );
3681
3682
3683        products.push({
3684          title:
3685            title,
3686
3687          normalizedTitle:
3688            normalizedTitle,
3689
3690          uid:
3691            uid,
3692
3693          image:
3694            getServiceProductImage(
3695              card
3696            )
3697        });
3698
3699      }
3700    );
3701
3702
3703    serviceProducts =
3704      products;
3705
3706
3707    return serviceProducts;
3708
3709  }
3710
3711
3712  /* =========================================================
3713     CUSTOM SCROLLBAR FOR SERVICE DROPDOWN
3714     SAME LOGIC AS THE EXISTING SITE SEARCH
3715     ========================================================= */
3716
3717  function updateServiceDropdownScrollbar() {
3718
3719    if (
3720      !serviceDropdownMenuShell
3721      ||
3722      !serviceDropdownMenu
3723      ||
3724      !serviceScrollbar
3725      ||
3726      !serviceScrollbarThumb
3727    ) {
3728
3729      return;
3730
3731    }
3732
3733
3734    if (
3735      !serviceDropdown.classList.contains(
3736        'is-open'
3737      )
3738    ) {
3739
3740      return;
3741
3742    }
3743
3744
3745    const clientHeight =
3746      serviceDropdownMenu.clientHeight;
3747
3748
3749    const scrollHeight =
3750      serviceDropdownMenu.scrollHeight;
3751
3752
3753    if (
3754      scrollHeight <=
3755      clientHeight + 1
3756    ) {
3757
3758      serviceDropdownMenuShell.classList.remove(
3759        'has-scrollbar'
3760      );
3761
3762
3763      serviceScrollbarThumb.style.transform =
3764        'translateY(0px)';
3765
3766
3767      return;
3768
3769    }
3770
3771
3772    serviceDropdownMenuShell.classList.add(
3773      'has-scrollbar'
3774    );
3775
3776
3777    const trackHeight =
3778      serviceScrollbar.clientHeight;
3779
3780
3781    if (trackHeight <= 0) {
3782
3783      return;
3784
3785    }
3786
3787
3788    const minimumThumbHeight =
3789      window.innerWidth <= 640
3790        ? 40
3791        : 52;
3792
3793
3794    const thumbHeight =
3795      Math.max(
3796        minimumThumbHeight,
3797        Math.round(
3798          trackHeight *
3799          (
3800            clientHeight /
3801            scrollHeight
3802          )
3803        )
3804      );
3805
3806
3807    const safeThumbHeight =
3808      Math.min(
3809        thumbHeight,
3810        trackHeight
3811      );
3812
3813
3814    const maxThumbTravel =
3815      Math.max(
3816        0,
3817        trackHeight -
3818        safeThumbHeight
3819      );
3820
3821
3822    const maxScrollTop =
3823      Math.max(
3824        1,
3825        scrollHeight -
3826        clientHeight
3827      );
3828
3829
3830    const thumbTop =
3831      maxThumbTravel *
3832      (
3833        serviceDropdownMenu.scrollTop /
3834        maxScrollTop
3835      );
3836
3837
3838    serviceScrollbarThumb.style.height =
3839      safeThumbHeight + 'px';
3840
3841
3842    serviceScrollbarThumb.style.transform =
3843      'translateY(' +
3844      thumbTop +
3845      'px)';
3846
3847  }
3848
3849
3850  function initialiseServiceDropdownScrollbar() {
3851
3852    if (
3853      !serviceDropdownMenuShell
3854      ||
3855      !serviceDropdownMenu
3856      ||
3857      !serviceScrollbar
3858      ||
3859      !serviceScrollbarThumb
3860    ) {
3861
3862      return;
3863
3864    }
3865
3866
3867    serviceDropdownMenu.addEventListener(
3868      'scroll',
3869      updateServiceDropdownScrollbar,
3870      {
3871        passive:
3872          true
3873      }
3874    );
3875
3876
3877    serviceScrollbarThumb.addEventListener(
3878      'pointerdown',
3879      function (
3880        event
3881      ) {
3882
3883        if (
3884          !serviceDropdownMenuShell.classList.contains(
3885            'has-scrollbar'
3886          )
3887        ) {
3888
3889          return;
3890
3891        }
3892
3893
3894        event.preventDefault();
3895        event.stopPropagation();
3896
3897
3898        serviceScrollbarDragging =
3899          true;
3900
3901
3902        serviceScrollbarDragStartY =
3903          event.clientY;
3904
3905
3906        serviceScrollbarDragStartScrollTop =
3907          serviceDropdownMenu.scrollTop;
3908
3909
3910        serviceDropdownMenuShell.classList.add(
3911          'is-scrollbar-dragging'
3912        );
3913
3914
3915        serviceScrollbarThumb.setPointerCapture(
3916          event.pointerId
3917        );
3918
3919      }
3920    );
3921
3922
3923    serviceScrollbarThumb.addEventListener(
3924      'pointermove',
3925      function (
3926        event
3927      ) {
3928
3929        if (!serviceScrollbarDragging) {
3930
3931          return;
3932
3933        }
3934
3935
3936        event.preventDefault();
3937
3938
3939        const trackHeight =
3940          serviceScrollbar.clientHeight;
3941
3942
3943        const thumbHeight =
3944          serviceScrollbarThumb
3945            .getBoundingClientRect()
3946            .height;
3947
3948
3949        const maxThumbTravel =
3950          Math.max(
3951            1,
3952            trackHeight -
3953            thumbHeight
3954          );
3955
3956
3957        const maxScrollTop =
3958          Math.max(
3959            0,
3960            serviceDropdownMenu.scrollHeight -
3961            serviceDropdownMenu.clientHeight
3962          );
3963
3964
3965        const deltaY =
3966          event.clientY -
3967          serviceScrollbarDragStartY;
3968
3969
3970        serviceDropdownMenu.scrollTop =
3971          serviceScrollbarDragStartScrollTop +
3972          (
3973            deltaY *
3974            (
3975              maxScrollTop /
3976              maxThumbTravel
3977            )
3978          );
3979
3980      }
3981    );
3982
3983
3984    function finishServiceScrollbarDrag(
3985      event
3986    ) {
3987
3988      if (!serviceScrollbarDragging) {
3989
3990        return;
3991
3992      }
3993
3994
3995      serviceScrollbarDragging =
3996        false;
3997
3998
3999      serviceDropdownMenuShell.classList.remove(
4000        'is-scrollbar-dragging'
4001      );
4002
4003
4004      if (
4005        event
4006        &&
4007        typeof event.pointerId !==
4008        'undefined'
4009        &&
4010        serviceScrollbarThumb.hasPointerCapture(
4011          event.pointerId
4012        )
4013      ) {
4014
4015        serviceScrollbarThumb.releasePointerCapture(
4016          event.pointerId
4017        );
4018
4019      }
4020
4021    }
4022
4023
4024    serviceScrollbarThumb.addEventListener(
4025      'pointerup',
4026      finishServiceScrollbarDrag
4027    );
4028
4029
4030    serviceScrollbarThumb.addEventListener(
4031      'pointercancel',
4032      finishServiceScrollbarDrag
4033    );
4034
4035
4036    serviceScrollbar.addEventListener(
4037      'pointerdown',
4038      function (
4039        event
4040      ) {
4041
4042        if (
4043          event.target ===
4044          serviceScrollbarThumb
4045        ) {
4046
4047          return;
4048
4049        }
4050
4051
4052        if (
4053          !serviceDropdownMenuShell.classList.contains(
4054            'has-scrollbar'
4055          )
4056        ) {
4057
4058          return;
4059
4060        }
4061
4062
4063        event.preventDefault();
4064        event.stopPropagation();
4065
4066
4067        const trackRect =
4068          serviceScrollbar
4069            .getBoundingClientRect();
4070
4071
4072        const thumbHeight =
4073          serviceScrollbarThumb
4074            .getBoundingClientRect()
4075            .height;
4076
4077
4078        const maxThumbTravel =
4079          Math.max(
4080            1,
4081            trackRect.height -
4082            thumbHeight
4083          );
4084
4085
4086        const desiredThumbTop =
4087          Math.min(
4088            maxThumbTravel,
4089            Math.max(
4090              0,
4091              event.clientY -
4092              trackRect.top -
4093              (
4094                thumbHeight /
4095                2
4096              )
4097            )
4098          );
4099
4100
4101        const maxScrollTop =
4102          Math.max(
4103            0,
4104            serviceDropdownMenu.scrollHeight -
4105            serviceDropdownMenu.clientHeight
4106          );
4107
4108
4109        serviceDropdownMenu.scrollTop =
4110          (
4111            desiredThumbTop /
4112            maxThumbTravel
4113          ) *
4114          maxScrollTop;
4115
4116      }
4117    );
4118
4119  }
4120
4121
4122  initialiseServiceDropdownScrollbar();
4123
4124
4125  function closeServiceDropdown() {
4126
4127    serviceDropdown.classList.remove(
4128      'is-open'
4129    );
4130
4131
4132    serviceDropdownButton.setAttribute(
4133      'aria-expanded',
4134      'false'
4135    );
4136
4137
4138    if (serviceDropdownMenuShell) {
4139
4140      serviceDropdownMenuShell.classList.remove(
4141        'has-scrollbar'
4142      );
4143
4144
4145      serviceDropdownMenuShell.classList.remove(
4146        'is-scrollbar-dragging'
4147      );
4148
4149    }
4150
4151
4152    serviceScrollbarDragging =
4153      false;
4154
4155
4156    if (serviceScrollbarThumb) {
4157
4158      serviceScrollbarThumb.style.height =
4159        '';
4160
4161
4162      serviceScrollbarThumb.style.transform =
4163        'translateY(0px)';
4164
4165    }
4166
4167  }
4168
4169
4170  function setSelectedServiceProduct(
4171    product
4172  ) {
4173
4174    selectedServiceProduct =
4175      product || null;
4176
4177
4178    if (!selectedServiceProduct) {
4179
4180      serviceInput.value =
4181        '';
4182
4183
4184      serviceSelectedTitle.textContent =
4185        'Выберите оказанную услугу';
4186
4187
4188      serviceSelectedImage.removeAttribute(
4189        'src'
4190      );
4191
4192
4193      serviceSelectedImage.classList.add(
4194        'is-hidden'
4195      );
4196
4197
4198      return;
4199
4200    }
4201
4202
4203    serviceInput.value =
4204      selectedServiceProduct.title;
4205
4206
4207    serviceSelectedTitle.textContent =
4208      selectedServiceProduct.title;
4209
4210
4211    if (
4212      selectedServiceProduct.image
4213    ) {
4214
4215      serviceSelectedImage.src =
4216        selectedServiceProduct.image;
4217
4218
4219      serviceSelectedImage.classList.remove(
4220        'is-hidden'
4221      );
4222
4223    } else {
4224
4225      serviceSelectedImage.removeAttribute(
4226        'src'
4227      );
4228
4229
4230      serviceSelectedImage.classList.add(
4231        'is-hidden'
4232      );
4233
4234    }
4235
4236  }
4237
4238
4239  function renderServiceProductOptions() {
4240
4241    serviceDropdownMenu.innerHTML =
4242      '';
4243
4244
4245    if (
4246      serviceProducts.length === 0
4247    ) {
4248
4249      const empty =
4250        document.createElement(
4251          'div'
4252        );
4253
4254
4255      empty.className =
4256        'pt-service-empty';
4257
4258
4259      empty.textContent =
4260        'Товары пока не найдены на странице.';
4261
4262
4263      serviceDropdownMenu.appendChild(
4264        empty
4265      );
4266
4267
4268      return;
4269
4270    }
4271
4272
4273    serviceProducts.forEach(
4274      function (
4275        product
4276      ) {
4277
4278        const option =
4279          document.createElement(
4280            'button'
4281          );
4282
4283
4284        option.type =
4285          'button';
4286
4287
4288        option.className =
4289          'pt-service-option';
4290
4291
4292        option.setAttribute(
4293          'role',
4294          'option'
4295        );
4296
4297
4298        option.setAttribute(
4299          'aria-selected',
4300          selectedServiceProduct
4301          &&
4302          selectedServiceProduct.title ===
4303            product.title
4304            ? 'true'
4305            : 'false'
4306        );
4307
4308
4309        if (
4310          product.image
4311        ) {
4312
4313          const image =
4314            document.createElement(
4315              'img'
4316            );
4317
4318
4319          image.className =
4320            'pt-service-option-image';
4321
4322
4323          image.alt =
4324            '';
4325
4326
4327          image.loading =
4328            'lazy';
4329
4330
4331          image.src =
4332            product.image;
4333
4334
4335          image.addEventListener(
4336            'load',
4337            updateServiceDropdownScrollbar,
4338            {
4339              once:
4340                true
4341            }
4342          );
4343
4344
4345          option.appendChild(
4346            image
4347          );
4348
4349        } else {
4350
4351          const imagePlaceholder =
4352            document.createElement(
4353              'span'
4354            );
4355
4356
4357          imagePlaceholder.className =
4358            'pt-service-option-image is-empty';
4359
4360
4361          option.appendChild(
4362            imagePlaceholder
4363          );
4364
4365        }
4366
4367
4368        const title =
4369          document.createElement(
4370            'span'
4371          );
4372
4373
4374        title.className =
4375          'pt-service-option-title';
4376
4377
4378        title.textContent =
4379          product.title;
4380
4381
4382        option.appendChild(
4383          title
4384        );
4385
4386
4387        option.addEventListener(
4388          'click',
4389          function () {
4390
4391            setSelectedServiceProduct(
4392              product
4393            );
4394
4395
4396            closeServiceDropdown();
4397
4398
4399            serviceDropdownButton.focus();
4400
4401          }
4402        );
4403
4404
4405        serviceDropdownMenu.appendChild(
4406          option
4407        );
4408
4409      }
4410    );
4411
4412  }
4413
4414
4415  function openServiceDropdown() {
4416
4417    /*
4418      Пересобираем прямо в момент открытия.
4419      Поэтому список всегда отражает фактические товары,
4420      которые Tilda уже отрисовала на странице сейчас.
4421    */
4422    buildServiceProductIndex();
4423
4424
4425    renderServiceProductOptions();
4426
4427
4428    serviceDropdown.classList.add(
4429      'is-open'
4430    );
4431
4432
4433    serviceDropdownButton.setAttribute(
4434      'aria-expanded',
4435      'true'
4436    );
4437
4438
4439    serviceDropdownMenu.scrollTop =
4440      0;
4441
4442
4443    requestAnimationFrame(
4444      updateServiceDropdownScrollbar
4445    );
4446
4447  }
4448
4449
4450  function resetServiceDropdown() {
4451
4452    closeServiceDropdown();
4453
4454
4455    setSelectedServiceProduct(
4456      null
4457    );
4458
4459  }
4460
4461
4462  serviceDropdownButton.addEventListener(
4463    'click',
4464    function () {
4465
4466      if (
4467        serviceDropdown.classList.contains(
4468          'is-open'
4469        )
4470      ) {
4471
4472        closeServiceDropdown();
4473
4474      } else {
4475
4476        openServiceDropdown();
4477
4478      }
4479
4480    }
4481  );
4482
4483
4484  serviceDropdownButton.addEventListener(
4485    'keydown',
4486    function (
4487      event
4488    ) {
4489
4490      if (
4491        event.key === 'Escape'
4492      ) {
4493
4494        closeServiceDropdown();
4495
4496        return;
4497
4498      }
4499
4500
4501      if (
4502        event.key === 'ArrowDown'
4503      ) {
4504
4505        event.preventDefault();
4506
4507
4508        if (
4509          !serviceDropdown.classList.contains(
4510            'is-open'
4511          )
4512        ) {
4513
4514          openServiceDropdown();
4515
4516        }
4517
4518
4519        const firstOption =
4520          serviceDropdownMenu.querySelector(
4521            '.pt-service-option'
4522          );
4523
4524
4525        if (firstOption) {
4526
4527          firstOption.focus();
4528
4529        }
4530
4531      }
4532
4533    }
4534  );
4535
4536
4537  serviceDropdownMenu.addEventListener(
4538    'keydown',
4539    function (
4540      event
4541    ) {
4542
4543      const options =
4544        Array.from(
4545          serviceDropdownMenu.querySelectorAll(
4546            '.pt-service-option'
4547          )
4548        );
4549
4550
4551      if (
4552        options.length === 0
4553      ) {
4554
4555        return;
4556
4557      }
4558
4559
4560      const currentIndex =
4561        options.indexOf(
4562          document.activeElement
4563        );
4564
4565
4566      if (
4567        event.key === 'Escape'
4568      ) {
4569
4570        event.preventDefault();
4571
4572
4573        closeServiceDropdown();
4574
4575
4576        serviceDropdownButton.focus();
4577
4578        return;
4579
4580      }
4581
4582
4583      if (
4584        event.key === 'ArrowDown'
4585      ) {
4586
4587        event.preventDefault();
4588
4589
4590        const nextIndex =
4591          currentIndex < 0
4592            ? 0
4593            : Math.min(
4594                options.length - 1,
4595                currentIndex + 1
4596              );
4597
4598
4599        options[nextIndex].focus();
4600
4601        return;
4602
4603      }
4604
4605
4606      if (
4607        event.key === 'ArrowUp'
4608      ) {
4609
4610        event.preventDefault();
4611
4612
4613        const previousIndex =
4614          currentIndex <= 0
4615            ? 0
4616            : currentIndex - 1;
4617
4618
4619        options[previousIndex].focus();
4620
4621      }
4622
4623    }
4624  );
4625
4626
4627  document.addEventListener(
4628    'pointerdown',
4629    function (
4630      event
4631    ) {
4632
4633      if (
4634        serviceDropdown.classList.contains(
4635          'is-open'
4636        )
4637        &&
4638        !serviceDropdown.contains(
4639          event.target
4640        )
4641      ) {
4642
4643        closeServiceDropdown();
4644
4645      }
4646
4647    },
4648    {
4649      passive:
4650        true
4651    }
4652  );
4653
4654
4655  /* =========================================================
4656     REVIEW CARDS
4657     ========================================================= */
4658
4659  function createReviewCardHtml(
4660    review
4661  ) {
4662
4663    const hasReply =
4664      Boolean(
4665        review.admin_reply
4666      );
4667
4668
4669    const reviewText =
4670      String(
4671        review.review_text
4672        || ''
4673      );
4674
4675
4676    const serviceText =
4677      review.service
4678        ? (
4679            'Оказанная услуга: '
4680            +
4681            review.service
4682          )
4683        : '';
4684
4685
4686    return (
4687      '<article'
4688      + ' class="pt-review-card"'
4689      + ' data-review-id="'
4690      + escapeHtml(
4691          review.id
4692        )
4693      + '"'
4694      + '>'
4695        +
4696
4697        '<div class="pt-review-header">'
4698
4699          +
4700
4701          '<div class="pt-review-avatar">'
4702            +
4703            '<span>'
4704              +
4705              escapeHtml(
4706                getInitial(
4707                  review.author_name
4708                )
4709              )
4710            +
4711            '</span>'
4712          +
4713          '</div>'
4714
4715          +
4716
4717          '<div class="pt-review-head-main">'
4718
4719            +
4720
4721            '<div class="pt-review-author-line">'
4722
4723              +
4724
4725              '<h3 class="pt-review-author">'
4726                +
4727                escapeHtml(
4728                  review.author_name
4729                )
4730              +
4731              '</h3>'
4732
4733            +
4734
4735            '</div>'
4736
4737            +
4738
4739            '<div class="pt-review-stars-date">'
4740
4741              +
4742
4743              '<span'
4744              + ' class="pt-review-stars"'
4745              + ' aria-label="'
4746              + escapeHtml(
4747                  String(
4748                    review.rating
4749                  )
4750                  +
4751                  ' из 5'
4752                )
4753              + '"'
4754              + '>'
4755                +
4756                escapeHtml(
4757                  getStars(
4758                    review.rating
4759                  )
4760                )
4761              +
4762              '</span>'
4763
4764              +
4765
4766              '<span class="pt-review-date">'
4767                +
4768                escapeHtml(
4769                  formatDate(
4770                    review.created_at
4771                  )
4772                )
4773              +
4774              '</span>'
4775
4776            +
4777
4778            '</div>'
4779
4780          +
4781
4782          '</div>'
4783
4784        +
4785
4786        '</div>'
4787
4788        +
4789
4790        (
4791          serviceText
4792            ? (
4793                '<div class="pt-review-service">'
4794                  +
4795                  escapeHtml(
4796                    serviceText
4797                  )
4798                +
4799                '</div>'
4800              )
4801            : ''
4802        )
4803
4804        +
4805
4806        '<div class="pt-review-text-wrap">'
4807
4808          +
4809
4810          '<p class="pt-review-text">'
4811            +
4812            escapeHtml(
4813              reviewText
4814            )
4815          +
4816          '</p>'
4817
4818          +
4819
4820          '<button'
4821          + ' class="pt-read-more"'
4822          + ' type="button"'
4823          + '>'
4824          + 'Читать полностью'
4825          + '</button>'
4826
4827        +
4828
4829        '</div>'
4830
4831        +
4832
4833        (
4834          hasReply
4835            ? (
4836                '<div class="pt-company-reply">'
4837
4838                  +
4839
4840                  '<div class="pt-company-reply-head">'
4841
4842                    +
4843
4844                    '<span class="pt-company-reply-title">'
4845                      + 'Ответ компании'
4846                    + '</span>'
4847
4848                    +
4849
4850                    (
4851                      review.reply_updated_at
4852                        ? (
4853                            '<span class="pt-company-reply-date">'
4854                              +
4855                              escapeHtml(
4856                                formatDate(
4857                                  review.reply_updated_at
4858                                )
4859                              )
4860                            +
4861                            '</span>'
4862                          )
4863                        : ''
4864                    )
4865
4866                  +
4867
4868                  '</div>'
4869
4870                  +
4871
4872                  '<div class="pt-company-reply-text-wrap">'
4873
4874                    +
4875
4876                    '<p class="pt-company-reply-text">'
4877                      +
4878                      escapeHtml(
4879                        review.admin_reply
4880                      )
4881                    +
4882                    '</p>'
4883
4884                    +
4885
4886                    '<button'
4887                    + ' class="pt-read-more pt-company-reply-read-more"'
4888                    + ' type="button"'
4889                    + '>'
4890                    + 'Читать полностью'
4891                    + '</button>'
4892
4893                  +
4894
4895                  '</div>'
4896
4897                +
4898
4899                '</div>'
4900              )
4901            : ''
4902        )
4903
4904      +
4905
4906      '</article>'
4907    );
4908
4909  }
4910
4911
4912  function renderReviews() {
4913
4914    const visibleReviews =
4915      showAll
4916        ? reviews
4917        : reviews.slice(
4918            0,
4919            INITIAL_REVIEW_LIMIT
4920          );
4921
4922
4923    const columns =
4924      getColumnCount();
4925
4926
4927    activeColumns =
4928      columns;
4929
4930
4931    const rows =
4932      groupIntoRows(
4933        visibleReviews,
4934        columns
4935      );
4936
4937
4938    reviewsList.innerHTML =
4939      rows
4940        .map(
4941          function (
4942            row
4943          ) {
4944
4945            return (
4946              '<div'
4947              + ' class="pt-review-row count-'
4948              + row.length
4949              + '"'
4950              + '>'
4951                +
4952                row
4953                  .map(
4954                    createReviewCardHtml
4955                  )
4956                  .join(
4957                    ''
4958                  )
4959              +
4960              '</div>'
4961            );
4962
4963          }
4964        )
4965        .join(
4966          ''
4967        );
4968
4969
4970    averageNode.textContent =
4971      calculateAverage();
4972
4973
4974    countNode.textContent =
4975      pluralReviews(
4976        reviews.length
4977      );
4978
4979
4980    /*
4981      Высота слота кнопки сохраняется всегда.
4982      После раскрытия исчезает только сама кнопка,
4983      а место под ней остаётся занятым.
4984    */
4985    if (
4986      reviews.length
4987      >
4988      INITIAL_REVIEW_LIMIT
4989      &&
4990      !showAll
4991    ) {
4992
4993      showAllWrap.classList.remove(
4994        'is-consumed'
4995      );
4996
4997    } else {
4998
4999      showAllWrap.classList.add(
5000        'is-consumed'
5001      );
5002
5003    }
5004
5005
5006    bindReadMore();
5007
5008
5009    requestAnimationFrame(
5010      function () {
5011
5012        updateReadMoreButtons();
5013
5014
5015        updateCustomScrollbar();
5016
5017      }
5018    );
5019
5020  }
5021
5022
5023  function updateReadMoreButtons() {
5024
5025    reviewsList
5026      .querySelectorAll(
5027        '.pt-review-text-wrap, .pt-company-reply-text-wrap'
5028      )
5029      .forEach(
5030        function (
5031          wrap
5032        ) {
5033
5034          const text =
5035            wrap.querySelector(
5036              '.pt-review-text, .pt-company-reply-text'
5037            );
5038
5039
5040          const button =
5041            wrap.querySelector(
5042              '.pt-read-more'
5043            );
5044
5045
5046          if (
5047            !text
5048            ||
5049            !button
5050          ) {
5051
5052            return;
5053
5054          }
5055
5056
5057          const wasExpanded =
5058            wrap.classList.contains(
5059              'is-expanded'
5060            );
5061
5062
5063          if (wasExpanded) {
5064
5065            wrap.classList.remove(
5066              'is-expanded'
5067            );
5068
5069          }
5070
5071
5072          const hasRealOverflow =
5073            text.scrollHeight >
5074            text.clientHeight + 1;
5075
5076
5077          wrap.classList.toggle(
5078            'has-overflow',
5079            hasRealOverflow
5080          );
5081
5082
5083          button.classList.toggle(
5084            'is-visible',
5085            hasRealOverflow
5086          );
5087
5088
5089          if (!hasRealOverflow) {
5090
5091            button.textContent =
5092              'Читать полностью';
5093
5094
5095            wrap.classList.remove(
5096              'is-expanded'
5097            );
5098
5099            return;
5100
5101          }
5102
5103
5104          if (wasExpanded) {
5105
5106            wrap.classList.add(
5107              'is-expanded'
5108            );
5109
5110
5111            button.textContent =
5112              'Свернуть';
5113
5114          } else {
5115
5116            button.textContent =
5117              'Читать полностью';
5118
5119          }
5120
5121        }
5122      );
5123
5124  }
5125
5126  function bindReadMore() {
5127
5128    reviewsList
5129      .querySelectorAll(
5130        '.pt-read-more'
5131      )
5132      .forEach(
5133        function (
5134          button
5135        ) {
5136
5137          button.addEventListener(
5138            'click',
5139            function () {
5140
5141              const wrap =
5142                button.closest(
5143                  '.pt-review-text-wrap, .pt-company-reply-text-wrap'
5144                );
5145
5146
5147              if (!wrap) {
5148
5149                return;
5150
5151              }
5152
5153
5154              const expanded =
5155                wrap.classList.toggle(
5156                  'is-expanded'
5157                );
5158
5159
5160              button.textContent =
5161                expanded
5162                  ? 'Свернуть'
5163                  : 'Читать полностью';
5164
5165
5166              requestAnimationFrame(
5167                updateCustomScrollbar
5168              );
5169
5170            }
5171          );
5172
5173        }
5174      );
5175
5176  }
5177
5178  function animateReviewsScrollTo(
5179    targetScrollTop,
5180    duration
5181  ) {
5182
5183    const startScrollTop =
5184      reviewsList.scrollTop;
5185
5186
5187    const maxScrollTop =
5188      Math.max(
5189        0,
5190        reviewsList.scrollHeight
5191        -
5192        reviewsList.clientHeight
5193      );
5194
5195
5196    const destination =
5197      Math.max(
5198        0,
5199        Math.min(
5200          maxScrollTop,
5201          targetScrollTop
5202        )
5203      );
5204
5205
5206    const distance =
5207      destination
5208      -
5209      startScrollTop;
5210
5211
5212    if (
5213      Math.abs(
5214        distance
5215      )
5216      <
5217      1
5218    ) {
5219
5220      reviewsList.scrollTop =
5221        destination;
5222
5223
5224      updateCustomScrollbar();
5225
5226      return;
5227
5228    }
5229
5230
5231    const startTime =
5232      performance.now();
5233
5234
5235    /*
5236      Плавное ускорение и плавное торможение.
5237      720 мс даёт заметно мягкое движение,
5238      но не ощущается медленным.
5239    */
5240    function easeInOutCubic(
5241      progress
5242    ) {
5243
5244      return progress
5245      <
5246      0.5
5247        ? 4 * progress * progress * progress
5248        : 1
5249          -
5250          Math.pow(
5251            -2 * progress + 2,
5252            3
5253          )
5254          /
5255          2;
5256
5257    }
5258
5259
5260    function step(
5261      now
5262    ) {
5263
5264      const elapsed =
5265        now
5266        -
5267        startTime;
5268
5269
5270      const progress =
5271        Math.min(
5272          1,
5273          elapsed
5274          /
5275          duration
5276        );
5277
5278
5279      const eased =
5280        easeInOutCubic(
5281          progress
5282        );
5283
5284
5285      reviewsList.scrollTop =
5286        startScrollTop
5287        +
5288        (
5289          distance
5290          *
5291          eased
5292        );
5293
5294
5295      updateCustomScrollbarPosition();
5296
5297
5298      if (
5299        progress
5300        <
5301        1
5302      ) {
5303
5304        requestAnimationFrame(
5305          step
5306        );
5307
5308      }
5309
5310    }
5311
5312
5313    requestAnimationFrame(
5314      step
5315    );
5316
5317  }
5318
5319
5320  showAllBtn.addEventListener(
5321    'click',
5322    function () {
5323
5324      /*
5325        Сначала раскрываем все отзывы.
5326        Кнопка исчезает, но её место остаётся зарезервировано,
5327        поэтому следующий блок Tilda не меняет положение.
5328      */
5329      showAll =
5330        true;
5331
5332
5333      /*
5334        Начинаем UX-подсказку из верхней точки списка.
5335      */
5336      reviewsList.scrollTop =
5337        0;
5338
5339
5340      renderReviews();
5341
5342
5343      /*
5344        После рендера делаем небольшой плавный внутренний скролл
5345        примерно на половину первой строки карточек.
5346        Это визуально показывает пользователю:
5347        список действительно расширился и теперь прокручивается.
5348      */
5349      requestAnimationFrame(
5350        function () {
5351
5352          requestAnimationFrame(
5353            function () {
5354
5355              updateCustomScrollbar();
5356
5357
5358              const firstRow =
5359                reviewsList.querySelector(
5360                  '.pt-review-row'
5361                );
5362
5363
5364              if (!firstRow) {
5365
5366                return;
5367
5368              }
5369
5370
5371              /*
5372                Скроллим заметно ниже прежнего значения.
5373                Было 0.5 высоты первой строки.
5374                Теперь 0.82 — достаточно, чтобы пользователь явно
5375                увидел переход к следующей части списка,
5376                но первая строка ещё частично остаётся в контексте.
5377              */
5378              const hintScrollTop =
5379                Math.max(
5380                  1,
5381                  Math.round(
5382                    firstRow.offsetHeight
5383                    *
5384                    0.82
5385                  )
5386                );
5387
5388
5389              animateReviewsScrollTo(
5390                hintScrollTop,
5391                720
5392              );
5393
5394            }
5395          );
5396
5397        }
5398      );
5399
5400    }
5401  );
5402
5403
5404  /* =========================================================
5405     CUSTOM SCROLLBAR
5406     ========================================================= */
5407
5408  let customScrollbarEnabled =
5409    false;
5410
5411
5412  let customScrollbarMaxThumbTop =
5413    0;
5414
5415
5416  let customScrollbarMaxScrollTop =
5417    1;
5418
5419
5420  function updateCustomScrollbarPosition() {
5421
5422    if (!customScrollbarEnabled) {
5423
5424      return;
5425
5426    }
5427
5428
5429    const thumbTop =
5430      customScrollbarMaxThumbTop
5431      *
5432      (
5433        reviewsList.scrollTop
5434        /
5435        customScrollbarMaxScrollTop
5436      );
5437
5438
5439    customScrollbarThumb.style.transform =
5440      'translate3d(0, '
5441      +
5442      thumbTop
5443      +
5444      'px, 0)';
5445
5446  }
5447
5448
5449  function updateCustomScrollbar() {
5450
5451    const clientHeight =
5452      reviewsList.clientHeight;
5453
5454
5455    const scrollHeight =
5456      reviewsList.scrollHeight;
5457
5458
5459    if (
5460      !clientHeight
5461      ||
5462      scrollHeight
5463      <=
5464      clientHeight + 1
5465    ) {
5466
5467      customScrollbarEnabled =
5468        false;
5469
5470
5471      customScrollbarMaxThumbTop =
5472        0;
5473
5474
5475      customScrollbarMaxScrollTop =
5476        1;
5477
5478
5479      reviewsShell.classList.remove(
5480        'has-scrollbar'
5481      );
5482
5483
5484      customScrollbarThumb.style.height =
5485        '0px';
5486
5487
5488      customScrollbarThumb.style.transform =
5489        'translate3d(0, 0, 0)';
5490
5491
5492      return;
5493
5494    }
5495
5496
5497    reviewsShell.classList.add(
5498      'has-scrollbar'
5499    );
5500
5501
5502    const trackHeight =
5503      customScrollbar.clientHeight;
5504
5505
5506    if (!trackHeight) {
5507
5508      return;
5509
5510    }
5511
5512
5513    const minimumThumbHeight =
5514      window.innerWidth
5515      <=
5516      640
5517        ? 42
5518        : 52;
5519
5520
5521    const calculatedThumbHeight =
5522      trackHeight
5523      *
5524      (
5525        clientHeight
5526        /
5527        scrollHeight
5528      );
5529
5530
5531    const thumbHeight =
5532      Math.max(
5533        minimumThumbHeight,
5534        Math.min(
5535          trackHeight,
5536          calculatedThumbHeight
5537        )
5538      );
5539
5540
5541    customScrollbarEnabled =
5542      true;
5543
5544
5545    customScrollbarMaxThumbTop =
5546      Math.max(
5547        0,
5548        trackHeight
5549        -
5550        thumbHeight
5551      );
5552
5553
5554    customScrollbarMaxScrollTop =
5555      Math.max(
5556        1,
5557        scrollHeight
5558        -
5559        clientHeight
5560      );
5561
5562
5563    customScrollbarThumb.style.height =
5564      thumbHeight
5565      +
5566      'px';
5567
5568
5569    updateCustomScrollbarPosition();
5570
5571  }
5572
5573
5574  /*
5575    Во время обычной прокрутки НЕ пересчитываем геометрию scrollbar.
5576    Только двигаем thumb по уже рассчитанным значениям.
5577    Полный пересчёт остаётся после render/resize/раскрытия текста.
5578  */
5579  reviewsList.addEventListener(
5580    'scroll',
5581    updateCustomScrollbarPosition,
5582    {
5583      passive:
5584        true
5585    }
5586  );
5587
5588
5589  /*
5590    Никаких wheel/touchmove-перехватчиков здесь больше нет.
5591    overscroll-behavior-y:auto оставляет браузеру нативный scroll chaining:
5592    после достижения края списка дальнейшая прокрутка переходит странице.
5593  */
5594
5595
5596  let dragging =
5597    false;
5598
5599
5600  let dragStartY =
5601    0;
5602
5603
5604  let dragStartScrollTop =
5605    0;
5606
5607
5608  customScrollbarThumb.addEventListener(
5609    'pointerdown',
5610    function (
5611      event
5612    ) {
5613
5614      event.preventDefault();
5615
5616
5617      dragging =
5618        true;
5619
5620
5621      dragStartY =
5622        event.clientY;
5623
5624
5625      dragStartScrollTop =
5626        reviewsList.scrollTop;
5627
5628
5629      customScrollbarThumb.classList.add(
5630        'is-dragging'
5631      );
5632
5633
5634      customScrollbarThumb.setPointerCapture(
5635        event.pointerId
5636      );
5637
5638    }
5639  );
5640
5641
5642  customScrollbarThumb.addEventListener(
5643    'pointermove',
5644    function (
5645      event
5646    ) {
5647
5648      if (!dragging) {
5649
5650        return;
5651
5652      }
5653
5654
5655      const trackHeight =
5656        customScrollbar.clientHeight;
5657
5658
5659      const thumbHeight =
5660        customScrollbarThumb.offsetHeight;
5661
5662
5663      const movableHeight =
5664        trackHeight
5665        -
5666        thumbHeight;
5667
5668
5669      if (
5670        movableHeight
5671        <=
5672        0
5673      ) {
5674
5675        return;
5676
5677      }
5678
5679
5680      const maxScrollTop =
5681        reviewsList.scrollHeight
5682        -
5683        reviewsList.clientHeight;
5684
5685
5686      const deltaY =
5687        event.clientY
5688        -
5689        dragStartY;
5690
5691
5692      const scrollDelta =
5693        deltaY
5694        *
5695        (
5696          maxScrollTop
5697          /
5698          movableHeight
5699        );
5700
5701
5702      reviewsList.scrollTop =
5703        dragStartScrollTop
5704        +
5705        scrollDelta;
5706
5707    }
5708  );
5709
5710
5711  function stopDragging(
5712    event
5713  ) {
5714
5715    if (!dragging) {
5716
5717      return;
5718
5719    }
5720
5721
5722    dragging =
5723      false;
5724
5725
5726    customScrollbarThumb.classList.remove(
5727      'is-dragging'
5728    );
5729
5730
5731    try {
5732
5733      customScrollbarThumb.releasePointerCapture(
5734        event.pointerId
5735      );
5736
5737    } catch (
5738      error
5739    ) {
5740
5741      /*
5742        pointer capture мог быть уже отпущен.
5743      */
5744
5745    }
5746
5747  }
5748
5749
5750  customScrollbarThumb.addEventListener(
5751    'pointerup',
5752    stopDragging
5753  );
5754
5755
5756  customScrollbarThumb.addEventListener(
5757    'pointercancel',
5758    stopDragging
5759  );
5760
5761
5762  customScrollbar.addEventListener(
5763    'pointerdown',
5764    function (
5765      event
5766    ) {
5767
5768      if (
5769        event.target
5770        ===
5771        customScrollbarThumb
5772      ) {
5773
5774        return;
5775
5776      }
5777
5778
5779      const rect =
5780        customScrollbar.getBoundingClientRect();
5781
5782
5783      const clickY =
5784        event.clientY
5785        -
5786        rect.top;
5787
5788
5789      const thumbHeight =
5790        customScrollbarThumb.offsetHeight;
5791
5792
5793      const targetThumbTop =
5794        Math.max(
5795          0,
5796          Math.min(
5797            customScrollbar.clientHeight
5798            -
5799            thumbHeight,
5800            clickY
5801            -
5802            (
5803              thumbHeight
5804              /
5805              2
5806            )
5807          )
5808        );
5809
5810
5811      const movableHeight =
5812        customScrollbar.clientHeight
5813        -
5814        thumbHeight;
5815
5816
5817      const ratio =
5818        movableHeight
5819        >
5820        0
5821          ? (
5822              targetThumbTop
5823              /
5824              movableHeight
5825            )
5826          : 0;
5827
5828
5829      reviewsList.scrollTop =
5830        ratio
5831        *
5832        (
5833          reviewsList.scrollHeight
5834          -
5835          reviewsList.clientHeight
5836        );
5837
5838    }
5839  );
5840
5841
5842  /* =========================================================
5843     STAR PICKER
5844     ========================================================= */
5845
5846  function paintStars(
5847    value
5848  ) {
5849
5850    starButtons.forEach(
5851      function (
5852        button
5853      ) {
5854
5855        const starValue =
5856          Number(
5857            button.dataset.value
5858          );
5859
5860
5861        button.classList.toggle(
5862          'is-active',
5863          starValue
5864          <=
5865          value
5866        );
5867
5868      }
5869    );
5870
5871  }
5872
5873
5874  function setRating(
5875    value
5876  ) {
5877
5878    selectedRating =
5879      Math.max(
5880        1,
5881        Math.min(
5882          5,
5883          Number(
5884            value
5885          ) || 1
5886        )
5887      );
5888
5889
5890    ratingInput.value =
5891      String(
5892        selectedRating
5893      );
5894
5895
5896    paintStars(
5897      selectedRating
5898    );
5899
5900  }
5901
5902
5903  starButtons.forEach(
5904    function (
5905      button
5906    ) {
5907
5908      button.addEventListener(
5909        'click',
5910        function () {
5911
5912          setRating(
5913            Number(
5914              button.dataset.value
5915            )
5916          );
5917
5918        }
5919      );
5920
5921
5922      button.addEventListener(
5923        'mouseenter',
5924        function () {
5925
5926          paintStars(
5927            Number(
5928              button.dataset.value
5929            )
5930          );
5931
5932        }
5933      );
5934
5935    }
5936  );
5937
5938
5939  starPicker.addEventListener(
5940    'mouseleave',
5941    function () {
5942
5943      paintStars(
5944        selectedRating
5945      );
5946
5947    }
5948  );
5949
5950
5951  /* =========================================================
5952     MODAL
5953     ========================================================= */
5954
5955  function openModal() {
5956
5957    document.body.classList.add(
5958      'pt-review-modal-open'
5959    );
5960
5961
5962    modal.classList.add(
5963      'is-open'
5964    );
5965
5966
5967    backdrop.classList.add(
5968      'is-open'
5969    );
5970
5971
5972    document.body.style.overflow =
5973      'hidden';
5974
5975
5976    buildServiceProductIndex();
5977
5978
5979    ensureSmartCaptcha();
5980
5981
5982    setTimeout(
5983      function () {
5984
5985        reviewNameInput.focus();
5986
5987      },
5988      40
5989    );
5990
5991  }
5992
5993
5994  function closeModal(
5995    resetForm
5996  ) {
5997
5998    const shouldReset =
5999      resetForm
6000      !==
6001      false;
6002
6003
6004    /*
6005      На случай ручного закрытия формы после работы
6006      с popup политики возвращаем нормальный z-index.
6007    */
6008    modal.classList.remove(
6009      'is-under-policy'
6010    );
6011
6012
6013    backdrop.classList.remove(
6014      'is-under-policy'
6015    );
6016
6017
6018    setCaptchaChallengeLayer(
6019      false
6020    );
6021
6022
6023    closeServiceDropdown();
6024
6025
6026    modal.classList.remove(
6027      'is-open'
6028    );
6029
6030
6031    backdrop.classList.remove(
6032      'is-open'
6033    );
6034
6035
6036    document.body.style.overflow =
6037      '';
6038
6039
6040    document.body.classList.remove(
6041      'pt-review-modal-open'
6042    );
6043
6044
6045    if (
6046      shouldReset
6047    ) {
6048
6049      form.reset();
6050
6051
6052      setRating(
6053        5
6054      );
6055
6056
6057      resetServiceDropdown();
6058
6059
6060      buildServiceProductIndex();
6061
6062
6063      resetSmartCaptcha();
6064
6065
6066      errorBox.textContent =
6067        '';
6068
6069
6070      successBox.textContent =
6071        '';
6072
6073
6074      errorBox.classList.add(
6075        'pt-hidden'
6076      );
6077
6078
6079      successBox.classList.add(
6080        'pt-hidden'
6081      );
6082
6083    }
6084
6085  }
6086
6087
6088  openModalBtn.addEventListener(
6089    'click',
6090    openModal
6091  );
6092
6093
6094  closeModalBtn.addEventListener(
6095    'click',
6096    function () {
6097
6098      closeModal(
6099        true
6100      );
6101
6102    }
6103  );
6104
6105
6106  backdrop.addEventListener(
6107    'click',
6108    function () {
6109
6110      closeModal(
6111        true
6112      );
6113
6114    }
6115  );
6116
6117
6118  document.addEventListener(
6119    'keydown',
6120    function (
6121      event
6122    ) {
6123
6124      if (
6125        event.key
6126        ===
6127        'Escape'
6128        &&
6129        modal.classList.contains(
6130          'is-open'
6131        )
6132      ) {
6133
6134        closeModal(
6135          true
6136        );
6137
6138      }
6139
6140    }
6141  );
6142
6143
6144  /*
6145    Политика конфиденциальности открывается штатным
6146    Tilda link-hook #popup:infoblock.
6147
6148    ВАЖНО:
6149    - форму отзыва НЕ закрываем;
6150    - ничего в форме НЕ сбрасываем;
6151    - заполненные имя / услуга / рейтинг / текст / чекбоксы сохраняются;
6152    - на время показа Tilda popup только опускаем наш modal ниже него;
6153    - после закрытия Tilda popup возвращаем исходный слой.
6154  */
6155
6156  let policyPopupWatchTimer =
6157    null;
6158
6159
6160  function restoreReviewModalLayer() {
6161
6162    modal.classList.remove(
6163      'is-under-policy'
6164    );
6165
6166
6167    backdrop.classList.remove(
6168      'is-under-policy'
6169    );
6170
6171
6172    if (
6173      policyPopupWatchTimer
6174    ) {
6175
6176      clearInterval(
6177        policyPopupWatchTimer
6178      );
6179
6180
6181      policyPopupWatchTimer =
6182        null;
6183
6184    }
6185
6186  }
6187
6188
6189  policyLink.addEventListener(
6190    'click',
6191    function () {
6192
6193      modal.classList.add(
6194        'is-under-policy'
6195      );
6196
6197
6198      backdrop.classList.add(
6199        'is-under-policy'
6200      );
6201
6202
6203      if (
6204        policyPopupWatchTimer
6205      ) {
6206
6207        clearInterval(
6208          policyPopupWatchTimer
6209        );
6210
6211      }
6212
6213
6214      let popupWasSeen =
6215        false;
6216
6217
6218      let checks =
6219        0;
6220
6221
6222      /*
6223        У Tilda popup при открытии получает класс t-popup_show.
6224        Дополнительно учитываем t-popup_showed на случай другой
6225        версии блока.
6226      */
6227      policyPopupWatchTimer =
6228        setInterval(
6229          function () {
6230
6231            checks +=
6232              1;
6233
6234
6235            const tildaPopupIsOpen =
6236              Boolean(
6237                document.querySelector(
6238                  '.t-popup.t-popup_show, .t-popup.t-popup_showed'
6239                )
6240              );
6241
6242
6243            if (
6244              tildaPopupIsOpen
6245            ) {
6246
6247              popupWasSeen =
6248                true;
6249
6250            }
6251
6252
6253            /*
6254              Как только popup политики был открыт и затем закрыт,
6255              возвращаем modal отзыва на исходный слой.
6256
6257              Fallback 30 секунд нужен только на случай,
6258              если конкретный Tilda popup использует другие классы.
6259            */
6260            if (
6261              (
6262                popupWasSeen
6263                &&
6264                !tildaPopupIsOpen
6265              )
6266              ||
6267              checks >= 300
6268            ) {
6269
6270              restoreReviewModalLayer();
6271
6272            }
6273
6274          },
6275          100
6276        );
6277
6278    }
6279  );
6280
6281
6282  /* =========================================================
6283     LIVE FORM SUBMIT
6284     ========================================================= */
6285
6286  function showFormError(
6287    message
6288  ) {
6289
6290    successBox.classList.add(
6291      'pt-hidden'
6292    );
6293
6294
6295    errorBox.textContent =
6296      message;
6297
6298
6299    errorBox.classList.remove(
6300      'pt-hidden'
6301    );
6302
6303  }
6304
6305
6306  form.addEventListener(
6307    'submit',
6308    async function (
6309      event
6310    ) {
6311
6312      event.preventDefault();
6313
6314
6315      if (
6316        formSubmitting
6317      ) {
6318
6319        return;
6320
6321      }
6322
6323
6324      errorBox.classList.add(
6325        'pt-hidden'
6326      );
6327
6328
6329      successBox.classList.add(
6330        'pt-hidden'
6331      );
6332
6333
6334      const authorName =
6335        reviewNameInput
6336          .value
6337          .trim();
6338
6339
6340      const service =
6341        serviceInput
6342          .value
6343          .trim();
6344
6345
6346      const reviewText =
6347        reviewTextInput
6348          .value
6349          .trim();
6350
6351
6352      if (
6353        authorName.length
6354        <
6355        2
6356      ) {
6357
6358        showFormError(
6359          'Введите ваше имя.'
6360        );
6361
6362        reviewNameInput.focus();
6363
6364        return;
6365
6366      }
6367
6368
6369      if (!service) {
6370
6371        showFormError(
6372          'Выберите оказанную услугу.'
6373        );
6374
6375        serviceDropdownButton.focus();
6376
6377        return;
6378
6379      }
6380
6381
6382      if (
6383        reviewText.length
6384        <
6385        3
6386      ) {
6387
6388        showFormError(
6389          'Введите текст отзыва.'
6390        );
6391
6392        reviewTextInput.focus();
6393
6394        return;
6395
6396      }
6397
6398
6399      if (
6400        !consentProcessing.checked
6401      ) {
6402
6403        showFormError(
6404          'Необходимо согласиться с политикой обработки персональных данных.'
6405        );
6406
6407        return;
6408
6409      }
6410
6411
6412      if (
6413        !consentPublication.checked
6414      ) {
6415
6416        showFormError(
6417          'Необходимо согласиться на публикацию отзыва.'
6418        );
6419
6420        return;
6421
6422      }
6423
6424
6425      if (
6426        !apiConfigured()
6427      ) {
6428
6429        showFormError(
6430          'В коде T123 не указан REVIEWS_API_URL.'
6431        );
6432
6433        return;
6434
6435      }
6436
6437
6438      if (
6439        !captchaConfigured()
6440      ) {
6441
6442        showFormError(
6443          'В коде T123 не указан SMARTCAPTCHA_CLIENT_KEY.'
6444        );
6445
6446        return;
6447
6448      }
6449
6450
6451      if (
6452        !captchaToken
6453      ) {
6454
6455        showFormError(
6456          'Пройдите проверку SmartCaptcha.'
6457        );
6458
6459        ensureSmartCaptcha();
6460
6461        return;
6462
6463      }
6464
6465
6466      formSubmitting =
6467        true;
6468
6469
6470      submitButton.disabled =
6471        true;
6472
6473
6474      const originalButtonText =
6475        submitButton.textContent;
6476
6477
6478      submitButton.textContent =
6479        'Отправляем…';
6480
6481
6482      try {
6483
6484        const response =
6485          await fetch(
6486            apiUrl(
6487              'create'
6488            ),
6489            {
6490              method:
6491                'POST',
6492
6493              headers:
6494                {
6495                  'Content-Type':
6496                    'application/json',
6497
6498                  'Accept':
6499                    'application/json'
6500                },
6501
6502              body:
6503                JSON.stringify(
6504                  {
6505                    author_name:
6506                      authorName,
6507
6508                    service:
6509                      service,
6510
6511                    rating:
6512                      selectedRating,
6513
6514                    review_text:
6515                      reviewText,
6516
6517                    consent_processing:
6518                      true,
6519
6520                    consent_publication:
6521                      true,
6522
6523                    captcha_token:
6524                      captchaToken
6525                  }
6526                )
6527            }
6528          );
6529
6530
6531        await readJsonResponse(
6532          response
6533        );
6534
6535
6536        /*
6537          SmartCaptcha token одноразовый.
6538          После запроса всегда получаем новый токен для следующей отправки.
6539        */
6540        resetSmartCaptcha();
6541
6542
6543        /*
6544          Сразу перечитываем backend.
6545          Новый отзыв уже source-of-truth в YDB
6546          и появится первым по created_at.
6547        */
6548        await loadReviews();
6549
6550
6551        reviewsList.scrollTop =
6552          0;
6553
6554
6555        showAll =
6556          false;
6557
6558
6559        renderReviews();
6560
6561
6562        successBox.textContent =
6563          'Спасибо! Ваш отзыв опубликован.';
6564
6565
6566        successBox.classList.remove(
6567          'pt-hidden'
6568        );
6569
6570
6571        setTimeout(
6572          function () {
6573
6574            closeModal(
6575              true
6576            );
6577
6578          },
6579          950
6580        );
6581
6582      } catch (
6583        error
6584      ) {
6585
6586        /*
6587          Даже если backend вернул validation error,
6588          captcha могла уже быть проверена и токен стал одноразово использован.
6589        */
6590        resetSmartCaptcha();
6591
6592
6593        showFormError(
6594          error.message
6595          ||
6596          'Не удалось отправить отзыв.'
6597        );
6598
6599      } finally {
6600
6601        formSubmitting =
6602          false;
6603
6604
6605        submitButton.disabled =
6606          false;
6607
6608
6609        submitButton.textContent =
6610          originalButtonText;
6611
6612      }
6613
6614    }
6615  );
6616
6617
6618  /* =========================================================
6619     RESIZE
6620     ========================================================= */
6621
6622  let resizeTimer =
6623    null;
6624
6625
6626  window.addEventListener(
6627    'resize',
6628    function () {
6629
6630      clearTimeout(
6631        resizeTimer
6632      );
6633
6634
6635      resizeTimer =
6636        setTimeout(
6637          function () {
6638
6639            const nextColumns =
6640              getColumnCount();
6641
6642
6643            if (
6644              nextColumns
6645              !==
6646              activeColumns
6647            ) {
6648
6649              renderReviews();
6650
6651            } else {
6652
6653              updateReadMoreButtons();
6654
6655
6656              updateCustomScrollbar();
6657
6658            }
6659
6660
6661            if (
6662              serviceDropdown.classList.contains(
6663                'is-open'
6664              )
6665            ) {
6666
6667              requestAnimationFrame(
6668                updateServiceDropdownScrollbar
6669              );
6670
6671            }
6672
6673          },
6674          100
6675        );
6676
6677    }
6678  );
6679
6680
6681  /* =========================================================
6682     INIT
6683     ========================================================= */
6684
6685  buildServiceProductIndex();
6686
6687
6688  resetServiceDropdown();
6689
6690
6691  setRating(
6692    5
6693  );
6694
6695
6696  loadReviews();
6697
6698
6699  /*
6700    Загружаем код SmartCaptcha заранее,
6701    а сам виджет окончательно инициализируется в modal.
6702  */
6703  ensureSmartCaptcha();
6704
6705
6706  window.addEventListener(
6707    'load',
6708    function () {
6709
6710      buildServiceProductIndex();
6711
6712
6713      setTimeout(
6714        buildServiceProductIndex,
6715        800
6716      );
6717
6718
6719      requestAnimationFrame(
6720        function () {
6721
6722          updateReadMoreButtons();
6723
6724
6725          updateCustomScrollbar();
6726
6727        }
6728      );
6729
6730    }
6731  );
6732
6733
6734  if (
6735    document.fonts
6736    &&
6737    document.fonts.ready
6738  ) {
6739
6740    document.fonts.ready.then(
6741      function () {
6742
6743        requestAnimationFrame(
6744          function () {
6745
6746            updateReadMoreButtons();
6747
6748
6749            updateCustomScrollbar();
6750
6751          }
6752        );
6753
6754      }
6755    );
6756
6757  }
6758
6759})();
6760</script>
6760 <!-- nominify end --> </div> </div> </div> </div> <div id="rec599889892" class="r t-rec t-rec_pt_30 t-rec_pb_75" style="padding-top:30px;padding-bottom:75px; " data-animationappear="off" data-record-type="849"> <!-- t849--> <div class="t849"> <div class="t-section__container t-container t-container_flex js-block-header"> <div class="t-col t-col_12 "> <div
6761class="js-block-header-title t-section__title t-title t-title_xs t-align_center t-margin_auto" data-editable="true"
6762field="btitle"> <p style="text-align: center;">Часто задаваемые вопросы</p> </div> </div> </div> <style>.t-section__title,.t-section__descr{overflow-wrap:break-word;}.t-section__descr{max-width:560px;}#rec599889892 .t-section__title{margin-bottom:90px;}#rec599889892 .t-section__descr{}#rec599889892 .t-section__container:not(:has(.t-section__descr)) .t-section__title{margin-bottom:90px;}@media screen and (max-width:960px){#rec599889892 .t-section__title{margin-bottom:45px;}#rec599889892 .t-section__container:not(:has(.t-section__descr)) .t-section__title{margin-bottom:45px;}}</style> <div class="t-container"> <div class="t-item t-col t-col_8 t-prefix_2"> <div class="t849__accordion" data-accordion="false"> <div class="t849__wrapper"> <div class="t849__header " style="border-top: 1px solid #eee;"> <button type="button"
6763class="t849__trigger-button "
6764aria-controls="accordion1_599889892"
6765aria-expanded="false"> <span class="t849__title t-name t-name_xl" field="li_title__1531218331971"><em>Что особенного в индивидуальном&nbsp;туре ?</em></span> <svg class="t849__icon" role="presentation" focusable="false" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <circle cx="20" cy="20" r="20" stroke-width="0" /> <g class="t849__lines" stroke-width="2px" fill="none"> <path d="M9 20H31" /> <path d="M20 9V31" /> </g> </svg> </button> </div> <div class="t849__content"
6766id="accordion1_599889892"
6767hidden > <div class="t849__textwrapper"> <img class="t849__img t-img"
6768src="https://thb.tildacdn.com/tild3033-3565-4661-b765-363536363062/-/empty/-5391128394474836424.jpg" data-original="https://static.tildacdn.com/tild3033-3565-4661-b765-363536363062/-5391128394474836424.jpg"
6769imgfield="li_img__1531218331971"
6770alt="">
6770 <div class="t849__text t-descr t-descr_sm" field="li_descr__1531218331971"><div style="font-size: 22px; line-height: 26px;" data-customstyle="yes">— <span style="font-family: Georgia;">Индивидуальная экскурсия: в машине только ваша команда.</span><br /><br />— <span style="font-family: Georgia;">Великолепные завораживающие панорамы гор, альпийские луга, водопады, горные реки и озёра.</span><br /><br />— <span style="font-family: Georgia;">Прогулки по горным маршрутам.</span><br /><br />— <span style="font-family: Georgia;">Завтрак с видом на Эльбрус и серебристую цепь снеговых вершин.</span><br /><br />— <span style="font-family: Georgia;">Вкусный шашлык на пикнике с видом на Эльбрус.</span><br /><br />— <span style="font-family: Georgia;">Уникальные лечебные питьевые минеральные источники.</span><br /><br />— <span style="font-family: Georgia;">Купание в термальных лечебных минеральных источниках.</span><br /><br />— <span style="font-family: Georgia;">Встреча рассвета и заката в горах Кавказа.</span><br /><br />— <span style="font-family: Georgia;">Астротуризм: ночные фотосъёмки в горах и на берегу моря, обсерватории и телескопы.</span><br /><br />— <span style="font-family: Georgia;">Полёты на параплане с инструктором.</span><br /><br />— <span style="font-family: Georgia;">Катание на лошадях, квадроциклах, снегоходах, лыжах, сноуборде, тюбинге.</span><br /><br />— <span style="font-family: Georgia;">Джиппинг, зиплайн, роупджампинг, рафтинг, речная и морская рыбалка.</span><br /><br />— <span style="font-family: Georgia;">Подбор и планирование индивидуальной экскурсионной программы на несколько дней с последовательным посещением туристических маршрутов.</span><br /><br />— <span style="font-family: Georgia;">Увлекательная авторская экскурсионная программа по городам-курортам Кавказских Минеральных Вод с посещением достопримечательностей и знакомством с историей: Кисловодск, Ессентуки, Пятигорск, Железноводск.</span><br /><br />— <span style="font-family: Georgia;">Кавказская кухня с дегустацией вкуснейших блюд в кафе с горским гостеприимством и бытом.</span><br /><br />— <span style="font-family: Georgia;">Персональный опытный гид-экскурсовод-водитель только для Вас!!!</span></div></div> </div> </div> </div> </div> </div> <div class="t-item t-col t-col_8 t-prefix_2"> <div class="t849__accordion" data-accordion="false"> <div class="t849__wrapper"> <div class="t849__header " style="border-top: 1px solid #eee;"> <button type="button"
6771class="t849__trigger-button "
6772aria-controls="accordion2_599889892"
6773aria-expanded="false"> <span class="t849__title t-name t-name_xl" field="li_title__1531218535874"><em>Что мы увидим ?</em></span> <svg class="t849__icon" role="presentation" focusable="false" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <circle cx="20" cy="20" r="20" stroke-width="0" /> <g class="t849__lines" stroke-width="2px" fill="none"> <path d="M9 20H31" /> <path d="M20 9V31" /> </g> </svg> </button> </div> <div class="t849__content"
6774id="accordion2_599889892"
6775hidden > <div class="t849__textwrapper"> <img class="t849__img t-img"
6776src="https://thb.tildacdn.com/tild3637-3334-4262-a664-666138656532/-/empty/-5240321827740438120.jpg" data-original="https://static.tildacdn.com/tild3637-3334-4262-a664-666138656532/-5240321827740438120.jpg"
6777imgfield="li_img__1531218535874"
6778alt="">
6778 <div class="t849__text t-descr t-descr_sm" field="li_descr__1531218535874"><div style="font-size: 22px;" data-customstyle="yes"><span style="font-family: Georgia;">— Величественные горные вершины Кавказа.</span><br /><br /><span style="font-family: Georgia;">— Горные реки и озёра.</span><br /><br /><span style="font-family: Georgia;">— Цветущие всеми красками радуги альпийские луга, водопады, горные заповедные леса.</span><br /><br /><span style="font-family: Georgia;">— Достопримечательности и исторические места </span><br /><span style="font-family: Georgia;">Кисловодска, Ессентуков, Пятигорска и Железноводска.</span><br /><br /><span style="font-family: Georgia;">— Уникальные природные минеральные лечебные источники.</span><br /><br /><span style="font-family: Georgia;">— Диких животных.</span><br /><br /><span style="font-family: Georgia;">— Бассейны с термальной минеральной лечебной водой.</span><br /><br /><span style="font-family: Georgia;">— Быт и этнос местных кавказских народов.</span><br /><br /><span style="font-family: Georgia;">— Местные базары с шерстяным вязаным хэндмейдом и экологически чистыми натуральными мясными, молочными продуктами, фруктами и овощами, горным мёдом.</span><br /><br /><span style="font-family: Georgia;">— Отведаем вкуснейшие блюда кавказской кухни.</span><br /><br /><span style="font-family: Georgia;">— Казачьи станицы и горные аулы.</span><br /><br /><span style="font-family: Georgia;">— Гигантские горные ущелья, горные дороги, пропасти.</span><br /><br /><span style="font-family: Georgia;">— Боевые и родовые башни, средневековые склепы «Города мёртвых» с настоящими сохранившимися скелетами.</span><br /><br /><span style="font-family: Georgia;">— Древнейшие христианские храмы и современные мечети.</span><br /><br /><span style="font-family: Georgia;">— Обсерватории и телескопы.</span></div></div> </div> </div> </div> </div> </div> <div class="t-item t-col t-col_8 t-prefix_2"> <div class="t849__accordion" data-accordion="false"> <div class="t849__wrapper"> <div class="t849__header " style="border-top: 1px solid #eee;"> <button type="button"
6779class="t849__trigger-button "
6780aria-controls="accordion3_599889892"
6781aria-expanded="false"> <span class="t849__title t-name t-name_xl" field="li_title__1531218625139"><em>Что взять с собой ?</em></span> <svg class="t849__icon" role="presentation" focusable="false" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <circle cx="20" cy="20" r="20" stroke-width="0" /> <g class="t849__lines" stroke-width="2px" fill="none"> <path d="M9 20H31" /> <path d="M20 9V31" /> </g> </svg> </button> </div> <div class="t849__content"
6782id="accordion3_599889892"
6783hidden > <div class="t849__textwrapper"> <img class="t849__img t-img"
6784src="https://thb.tildacdn.com/tild3665-3537-4432-a339-653832663930/-/empty/---.jpg" data-original="https://static.tildacdn.com/tild3665-3537-4432-a339-653832663930/---.jpg"
6785imgfield="li_img__1531218625139"
6786alt="">
6786 <div class="t849__text t-descr t-descr_sm" field="li_descr__1531218625139"><div style="font-size: 22px;" data-customstyle="yes"><span style="font-family: Georgia;">— Документы (паспорт, свидетельство о рождении для детей, документы, подтверждающие льготы)</span><br /><br /><span style="font-family: Georgia;">— Удобная походная обувь, солнцезащитные очки, солнцезащитные головные уборы, дождевики</span><br /><br /><span style="font-family: Georgia;">— Вещи для купания</span></div></div> </div> </div> </div> </div> </div> <div class="t-item t-col t-col_8 t-prefix_2"> <div class="t849__accordion" data-accordion="false"> <div class="t849__wrapper"> <div class="t849__header " style="border-top: 1px solid #eee;"> <button type="button"
6787class="t849__trigger-button "
6788aria-controls="accordion4_599889892"
6789aria-expanded="false"> <span class="t849__title t-name t-name_xl" field="li_title__1531218700960"><em>Что входит в стоимость ?</em></span> <svg class="t849__icon" role="presentation" focusable="false" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <circle cx="20" cy="20" r="20" stroke-width="0" /> <g class="t849__lines" stroke-width="2px" fill="none"> <path d="M9 20H31" /> <path d="M20 9V31" /> </g> </svg> </button> </div> <div class="t849__content"
6790id="accordion4_599889892"
6791hidden > <div class="t849__textwrapper">
6791 <div class="t849__text t-descr t-descr_sm" field="li_descr__1531218700960"><div style="font-size: 22px;" data-customstyle="yes"><span style="font-family: Georgia;">— Трансфер и экскурсионное обслуживание водителя-экскурсовода</span></div></div> </div> </div> </div> </div> </div> <div class="t-item t-col t-col_8 t-prefix_2"> <div class="t849__accordion" data-accordion="false"> <div class="t849__wrapper"> <div class="t849__header " style="border-top: 1px solid #eee;"> <button type="button"
6792class="t849__trigger-button "
6793aria-controls="accordion5_599889892"
6794aria-expanded="false"> <span class="t849__title t-name t-name_xl" field="li_title__1702066008004"><em>Что не входит в стоимость ?</em></span> <svg class="t849__icon" role="presentation" focusable="false" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <circle cx="20" cy="20" r="20" stroke-width="0" /> <g class="t849__lines" stroke-width="2px" fill="none"> <path d="M9 20H31" /> <path d="M20 9V31" /> </g> </svg> </button> </div> <div class="t849__content"
6795id="accordion5_599889892"
6796hidden > <div class="t849__textwrapper">
6796 <div class="t849__text t-descr t-descr_sm" field="li_descr__1702066008004"><div style="font-size: 22px;" data-customstyle="yes"><span style="font-family: Georgia;">— Стоимость канатной дороги.</span><br /><br /><span style="font-family: Georgia;">— Экологические сборы для посещения природных достопримечательностей.</span><br /><br /><span style="font-family: Georgia;">— Билеты в музеи.</span><br /><br /><span style="font-family: Georgia;">— Стоимость термальных бассейнов.</span><br /><br /><span style="font-family: Georgia;">— Кафе.</span><br /><br /><span style="font-family: Georgia;">— Сувениры.</span><br /><br /><span style="font-family: Georgia;">— Оплата развлекательных и прокатных элементов.в</span></div></div> </div> </div> </div> </div> <div class="t849__border" style="height: 1px; background-color: #eee;"></div> </div> </div> </div> <style>@media (hover:hover){#rec599889892 .t849__trigger-button:hover .t849__icon{fill:#1f5bff;stroke:#ffffff;}}#rec599889892 .t849__trigger-button:focus-visible .t849__icon{fill:#1f5bff;stroke:#ffffff;}</style> 
6796<script type="text/javascript">t_onReady(function() {t_onFuncLoad('t849_init',function() {t849_init('599889892');});});</script>
6796 </div> <div id="rec599876556" class="r t-rec" style=" " data-animationappear="off" data-record-type="706"> <!--tcart--> <!-- @classes: t-text t-text_xs t-name t-name_xs t-name_md t-btn t-btn_sm --> 
6796<script>t_onReady(function() {setTimeout(function() {t_onFuncLoad('tcart__init',function() {tcart__init('599876556',{cssClassName:''});});},50);var userAgent=navigator.userAgent.toLowerCase();var body=document.body;if(!body) return;if(userAgent.indexOf('\u0069\u006e\u0073\u0074\u0061\u0067\u0072\u0061\u006d')!==-1&&userAgent.indexOf('iphone')!==-1) {body.style.position='relative';}
6797var rec=document.querySelector('#rec599876556');if(!rec) return;var cartWindow=rec.querySelector('.t706__cartwin,.t706__cartpage');var allRecords=document.querySelector('.t-records');var currentMode=allRecords.getAttribute('data-tilda-mode');if(cartWindow&&currentMode!=='edit'&&currentMode!=='preview') {cartWindow.addEventListener('scroll',t_throttle(function() {if(window.lazy==='y'||document.querySelector('#allrecords').getAttribute('data-tilda-lazy')==='yes') {t_onFuncLoad('t_lazyload_update',function() {t_lazyload_update();});}},500));}});</script>
6797 <div class="t706" data-cart-countdown="yes" data-opencart-onorder="yes" data-project-currency="р." data-project-currency-side="r" data-project-currency-sep="," data-project-currency-code="RUB" data-cart-sendevent-onadd="y"> <div class="t706__carticon" style=""> <div class="t706__carticon-text t-name t-name_xs"></div> <div class="t706__carticon-wrapper"> <div class="t706__carticon-imgwrap"> <div class="t706__bgimg t-bgimg" bgimgfield="img" data-original="https://static.tildacdn.com/tild3466-3265-4564-a432-646263663562/Vector_11_1.png" style="background-image: url('https://thb.tildacdn.com/tild3466-3265-4564-a432-646263663562/-/resizeb/20x/Vector_11_1.png');"></div> </div> <div class="t706__carticon-counter js-carticon-counter"></div> </div> </div> <div class="t706__cartwin" style="display: none;"> <div class="t706__close t706__cartwin-close"> <button type="button" class="t706__close-button t706__cartwin-close-wrapper" aria-label="Закрыть корзину"> <svg role="presentation" class="t706__close-icon t706__cartwin-close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#fff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t706__cartwin-content"> <div class="t706__cartwin-top"> <div class="t706__cartwin-heading t-name t-name_xl"></div> </div> <div class="t706__cartwin-products"></div> <div class="t706__cartwin-bottom"> <div class="t706__cartwin-prodamount-wrap t-descr t-descr_sm"> <span class="t706__cartwin-prodamount-label"></span> <span class="t706__cartwin-prodamount"></span> </div> </div> <div class="t706__orderform "> <form
6798id="form599876556" name='form599876556' role="form" action='' method='POST' data-formactiontype="2" data-inputbox=".t-input-group" class="t-form js-form-proccess t-form_inputs-total_3 " data-formsended-callback="t706_onSuccessCallback"> <input type="hidden" name="formservices[]" value="db44e47e746f78b5644c6551a0777971" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="6380486f3b28b35680f9f0a3dda0c8e1" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="a2180241862c90aa2166b1589a2e2af3" class="js-formaction-services"> <input type="hidden" name="tildaspec-formname" tabindex="-1" value="Cart"> <!-- @classes t-title t-text t-btn --> <div class="js-successbox t-form__successbox t-text t-text_md"
6799aria-live="polite"
6800style="display:none;"></div> <div
6801class="t-form__inputsbox
6802t-form__inputsbox_inrow "> <div
6803class="t-input-group t-input-group_nm " data-input-lid="1496239431201" data-field-type="nm" data-field-name="Name"> <label
6804for='input_1496239431201'
6805class="t-input-title t-descr t-descr_md"
6806id="field-title_1496239431201" data-redactor-toolbar="no"
6807field="li_title__1496239431201"
6808style="color:;">Имя</label> <div class="t-input-block "> <input
6809type="text"
6810autocomplete="name"
6811name="Name"
6812id="input_1496239431201"
6813class="t-input js-tilda-rule"
6814value="" data-tilda-req="1" aria-required="true" data-tilda-rule="name"
6815aria-describedby="error_1496239431201"
6816style="color:#000000;border:1px solid #000000;"> </div> <div class="t-input-error" aria-live="polite" id="error_1496239431201"></div> </div> <div
6817class="t-input-group t-input-group_ph " data-input-lid="1496239478607" data-field-async="true" data-field-type="ph" data-field-name="Phone"> <div class="t-input-block "> <input
6818type="tel"
6819autocomplete="tel"
6820name="Phone"
6821id="input_1496239478607" data-phonemask-init="no" data-phonemask-id="599876556" data-phonemask-lid="1496239478607" data-phonemask-maskcountry="RU" class="t-input js-phonemask-input js-tilda-rule"
6822value=""
6823placeholder="+7(000)000-0000" data-tilda-req="1" aria-required="true" aria-describedby="error_1496239478607"
6824style="color:#000000;border:1px solid #000000;"> 
6824<script type="text/javascript">t_onReady(function() {t_onFuncLoad('t_loadJsFile',function() {t_loadJsFile('https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js',function() {t_onFuncLoad('t_form_phonemask_load',function() {var phoneMasks=document.querySelectorAll('#rec599876556 [data-phonemask-lid="1496239478607"]');t_form_phonemask_load(phoneMasks);});})})});</script>
6824 </div> <div class="t-input-error" aria-live="polite" id="error_1496239478607"></div> </div> <div
6825class="t-input-group t-input-group_cb " data-input-lid="1790597204001" data-field-type="cb" data-field-name="Checkbox"> <div class="t-input-block "> <label
6826class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
6827style=""> <input
6828type="checkbox"
6829name="Checkbox"
6830value="yes"
6831class="t-checkbox js-tilda-rule" data-tilda-req="1" aria-required="true"> <div
6832class="t-checkbox__indicator"></div> <span>Я согласен с условиями <a href="#popup:infoblock" style="color: rgb(255, 133, 98); box-shadow: none; text-decoration: none; border-bottom: 2px solid rgb(255, 133, 98);" rel="nofollow">Политики конфиденциальности</a></span></label> </div> <div class="t-input-error" aria-live="polite" id="error_1790597204001"></div> </div> <div class="t-form__errorbox-middle"> <!--noindex--> <div
6833class="js-errorbox-all t-form__errorbox-wrapper"
6834style="display:none;" data-nosnippet
6835tabindex="-1"
6836aria-label="Ошибки при заполнении формы"> <ul
6837role="list"
6838class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> <div class="t-form__submit"> <button
6839class="t-submit t-btnflex t-btnflex_type_submit t-btnflex_md"
6840type="submit"><span class="t-btnflex__text">Отправить</span> <style>#rec599876556 .t-btnflex.t-btnflex_type_submit{color:#ffffff;background-color:#000000;--border-width:0px;border-style:none !important;box-shadow:none !important;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}</style></button> </div> </div> <div class="t-form__errorbox-bottom"> <!--noindex--> <div
6841class="js-errorbox-all t-form__errorbox-wrapper"
6842style="display:none;" data-nosnippet
6843tabindex="-1"
6844aria-label="Ошибки при заполнении формы"> <ul
6845role="list"
6846class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> </form> <style>#rec599876556 input::-webkit-input-placeholder{color:#000000;opacity:0.5;}#rec599876556 input::-moz-placeholder{color:#000000;opacity:0.5;}#rec599876556 input:-moz-placeholder{color:#000000;opacity:0.5;}#rec599876556 input:-ms-input-placeholder{color:#000000;opacity:0.5;}#rec599876556 textarea::-webkit-input-placeholder{color:#000000;opacity:0.5;}#rec599876556 textarea::-moz-placeholder{color:#000000;opacity:0.5;}#rec599876556 textarea:-moz-placeholder{color:#000000;opacity:0.5;}#rec599876556 textarea:-ms-input-placeholder{color:#000000;opacity:0.5;}</style> </div> </div> </div> <div class="t706__cartdata"> </div> </div> <style></style> <!--/tcart--> </div> <div id="rec599895795" class="r t-rec" style=" " data-animationappear="off" data-record-type="702"> <!-- T702 --> <div class="t702"> <div
6847class="t-popup" data-tooltip-hook="#popup:myform"
6848role="dialog"
6849aria-modal="true"
6850tabindex="-1"
6851aria-label="Оставьте заявку"> <div class="t-popup__close t-popup__block-close"> <button
6852type="button"
6853class="t-popup__close-wrapper t-popup__block-close-button"
6854aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#fff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <style>@media screen and (max-width:560px){#rec599895795 .t-popup__close-icon g{fill:#ffffff !important;}}</style> <div class="t-popup__container t-width t-width_6" data-popup-type="702"> <img class="t702__img t-img"
6855src="https://thb.tildacdn.com/tild3831-6133-4866-b364-383035336236/-/empty/Rectangle_31.jpg" data-original="https://static.tildacdn.com/tild3831-6133-4866-b364-383035336236/Rectangle_31.jpg"
6856imgfield="img"
6857alt=""> <div class="t702__wrapper"> <div class="t702__text-wrapper t-align_center"> <div class="t702__title t-title t-title_xxs" id="popuptitle_599895795">Оставьте заявку</div> <div class="t702__descr t-descr t-descr_xs">Наш менеджер свяжется с вами в ближайшее время</div> </div> <form
6858id="form599895795" name='form599895795' role="form" action='' method='POST' data-formactiontype="2" data-inputbox=".t-input-group" class="t-form js-form-proccess t-form_inputs-total_3 " data-success-callback="t702_onSuccess"> <input type="hidden" name="formservices[]" value="db44e47e746f78b5644c6551a0777971" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="6380486f3b28b35680f9f0a3dda0c8e1" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="a2180241862c90aa2166b1589a2e2af3" class="js-formaction-services"> <input type="hidden" name="tildaspec-formname" tabindex="-1" value="Оставьте заявку"> <!-- @classes t-title t-text t-btn --> <div class="js-successbox t-form__successbox t-text t-text_md"
6859aria-live="polite"
6860style="display:none;" data-success-title="Спасибо!" data-success-message="Данные успешно отправлены, мы свяжемся с вами в ближайшее время"></div> <div
6861class="t-form__inputsbox
6862t-form__inputsbox_vertical-form t-form__inputsbox_inrow
6863"> <div
6864class="t-input-group t-input-group_nm " data-input-lid="1495810354468" data-field-type="nm" data-field-name="Name"> <div class="t-input-block " style="border-radius:5px;"> <input
6865type="text"
6866autocomplete="name"
6867name="Name"
6868id="input_1495810354468"
6869class="t-input js-tilda-rule"
6870value=""
6871placeholder="Ваше имя" data-tilda-req="1" aria-required="true" data-tilda-rule="name"
6872aria-describedby="error_1495810354468"
6873style="color:#000000;border:1px solid #f2931d;border-radius:5px;"> </div> <div class="t-input-error" aria-live="polite" id="error_1495810354468"></div> </div> <div
6874class="t-input-group t-input-group_ph " data-input-lid="1495810359387" data-field-async="true" data-field-type="ph" data-field-name="Phone"> <div class="t-input-block " style="border-radius:5px;"> <input
6875type="tel"
6876autocomplete="tel"
6877name="Phone"
6878id="input_1495810359387" data-phonemask-init="no" data-phonemask-id="599895795" data-phonemask-lid="1495810359387" data-phonemask-maskcountry="RU" class="t-input js-phonemask-input js-tilda-rule"
6879value=""
6880placeholder="+7(000)000-0000" data-tilda-req="1" aria-required="true" aria-describedby="error_1495810359387"
6881style="color:#000000;border:1px solid #f2931d;border-radius:5px;"> 
6881<script type="text/javascript">t_onReady(function() {t_onFuncLoad('t_loadJsFile',function() {t_loadJsFile('https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js',function() {t_onFuncLoad('t_form_phonemask_load',function() {var phoneMasks=document.querySelectorAll('#rec599895795 [data-phonemask-lid="1495810359387"]');t_form_phonemask_load(phoneMasks);});})})});</script>
6881 </div> <div class="t-input-error" aria-live="polite" id="error_1495810359387"></div> </div> <div
6882class="t-input-group t-input-group_cb " data-input-lid="1790523325235" data-field-type="cb" data-field-name="Checkbox"> <div class="t-input-block " style="border-radius:5px;"> <label
6883class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
6884style=""> <input
6885type="checkbox"
6886name="Checkbox"
6887value="yes"
6888class="t-checkbox js-tilda-rule" data-tilda-req="1" aria-required="true"> <div
6889class="t-checkbox__indicator"></div> <span>Я согласен с условиями <a href="#popup:infoblock" style="color: rgb(255, 133, 98); box-shadow: none; text-decoration: none; border-bottom: 2px solid rgb(255, 133, 98);" rel="nofollow">Политики конфиденциальности</a></span></label> </div> <div class="t-input-error" aria-live="polite" id="error_1790523325235"></div> </div> <div class="t-form__errorbox-middle"> <!--noindex--> <div
6890class="js-errorbox-all t-form__errorbox-wrapper"
6891style="display:none;" data-nosnippet
6892tabindex="-1"
6893aria-label="Ошибки при заполнении формы"> <ul
6894role="list"
6895class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> <div class="t-form__submit"> <button
6896class="t-submit t-btnflex t-btnflex_type_submit t-btnflex_md"
6897type="submit"><span class="t-btnflex__text">Оставить заявку</span><span class="t-btn_wrap-effects"><span class="t-btn_inner-effects"><span class="t-btn_effects"></span></span></span> <style>#rec599895795 .t-btnflex.t-btnflex_type_submit{color:#ffffff;background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:7px;box-shadow:none !important;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}</style><style>#rec599895795 .t-btnflex.t-btnflex_type_submit{position:relative;}#rec599895795 .t-btnflex.t-btnflex_type_submit .t-btn_wrap-effects{position:absolute;top:0;left:0;display:block;width:100%;height:100%;overflow:hidden;isolation:isolate;container-type:inline-size;container-name:button-effects;}#rec599895795 .t-btnflex.t-btnflex_type_submit .t-btn_inner-effects{position:absolute;top:0;left:0;display:block;width:100%;height:100%;transform:translateX(-85px);animation:3s linear infinite flash;}@container button-effects (min-width:230px){#rec599895795 .t-btnflex.t-btnflex_type_submit .t-btn_inner-effects{animation-name:flash-md;}}@container button-effects (min-width:750px){#rec599895795 .t-btnflex.t-btnflex_type_submit .t-btn_inner-effects{animation-name:flash-lg;}}#rec599895795 .t-btnflex.t-btnflex_type_submit .t-btn_effects{position:absolute;top:0;left:30px;display:block;width:45px;height:100%;background-image:linear-gradient(90deg,rgba(255,255,255,.1),rgba(255,255,255,.4));transform:skewX(-45deg);}@keyframes flash{20%{transform:translateX(100%);}100%{transform:translateX(100%);}}@keyframes flash-md{30%{transform:translateX(100%);}100%{transform:translateX(100%);}}@keyframes flash-lg{40%{transform:translateX(100%);}100%{transform:translateX(100%);}}</style></button> </div> </div> <div class="t-form__errorbox-bottom"> <!--noindex--> <div
6898class="js-errorbox-all t-form__errorbox-wrapper"
6899style="display:none;" data-nosnippet
6900tabindex="-1"
6901aria-label="Ошибки при заполнении формы"> <ul
6902role="list"
6903class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> </form> <style>#rec599895795 input::-webkit-input-placeholder{color:#000000;opacity:0.5;}#rec599895795 input::-moz-placeholder{color:#000000;opacity:0.5;}#rec599895795 input:-moz-placeholder{color:#000000;opacity:0.5;}#rec599895795 input:-ms-input-placeholder{color:#000000;opacity:0.5;}#rec599895795 textarea::-webkit-input-placeholder{color:#000000;opacity:0.5;}#rec599895795 textarea::-moz-placeholder{color:#000000;opacity:0.5;}#rec599895795 textarea:-moz-placeholder{color:#000000;opacity:0.5;}#rec599895795 textarea:-ms-input-placeholder{color:#000000;opacity:0.5;}</style> </div> </div> </div> </div> 
6903<script>t_onReady(function() {t_onFuncLoad('t702_initPopup',function() {t702_initPopup('599895795');});});</script>
6903 </div> <div id="rec599899724" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
6904
6905/* Тень под хедером */
6906.t396:has(.tour-search-slot) .t396__artboard {
6907  box-shadow: 0 8px 18px -10px rgba(0, 0, 0, 0.38) !important;
6908  z-index: 10 !important;
6909}
6910.t-popup__container {
6911  border-radius: 30px 30px 30px 30px;
6912}
6913
6914/* Для BF501N, BF502N, BF503 */
6915.t-popup__container > .t-img {
6916  border-radius: 30px 30px 0px 0px;
6917}
6918
6919.t-popup__container > .t1014__wrapper {
6920  border-radius: 0px 0px 30px 30px;
6921}
6922
6923
6924/* =====================================================
6925   ТАБЫ ТОВАРА
6926   ===================================================== */
6927
6928.t-store__tabs__content,
6929.t-store__tabs__content p,
6930.t-store__tabs__content li,
6931.t-store__tabs__content strong,
6932.t-store__tabs__content span {
6933  font-size: 22px !important;
6934}
6935
6936/* Размер названий табов */
6937.t-store .t-store__tabs__controls .t-store__tabs__button-title,
6938.t-store .t-store__tabs__item .t-store__tabs__item-title {
6939  font-size: 18px !important;
6940}
6941
6942/* Маркированные и нумерованные списки внутри табов */
6943.t-store__tabs__content ul,
6944.t-store__tabs__content ol {
6945  margin-left: 0 !important;
6946  padding-left: 1.5em !important;
6947  padding-inline-start: 1.5em !important;
6948  box-sizing: border-box;
6949  max-width: 100%;
6950  list-style-position: outside;
6951}
6952
6953/* Пункты списков */
6954.t-store__tabs__content li {
6955  padding-left: 0.15em !important;
6956  box-sizing: border-box;
6957}
6958
6959/* Ширина текста внутри таба только на компьютере */
6960@media screen and (min-width: 981px) {
6961  .t-store__tabs__content {
6962    max-width: 1100px !important;
6963  }
6964}
6965
6966
6967/* =====================================================
6968   ST310N + КАТАЛОГ TILDA
6969   ФИКСИРОВАННАЯ ВЫСОТА КАРТОЧЕК
6970   ===================================================== */
6971
6972
6973/* =====================================================
6974   ДЕСКТОП
6975   ===================================================== */
6976
6977@media screen and (min-width: 961px) {
6978
6979  .t778 .t-store__card__textwrapper {
6980    height: 290px !important;
6981    min-height: 290px !important;
6982    max-height: 290px !important;
6983  }
6984}
6985
6986
6987/* =====================================================
6988   ПЛАНШЕТЫ
6989   ===================================================== */
6990
6991@media screen and (min-width: 481px) and (max-width: 960px) {
6992
6993  .t778 .t-store__card__textwrapper {
6994    height: 270px !important;
6995    min-height: 270px !important;
6996    max-height: 270px !important;
6997  }
6998}
6999
7000
7001/* =====================================================
7002   МОБИЛЬНЫЕ
7003   ===================================================== */
7004
7005@media screen and (max-width: 480px) {
7006
7007  .t778 .t-store__card__textwrapper {
7008    height: 270px !important;
7009    min-height: 270px !important;
7010    max-height: 270px !important;
7011  }
7012}
7013
7014
7015/* =====================================================
7016   ВНУТРЕННЯЯ СТРУКТУРА КАРТОЧКИ
7017   ===================================================== */
7018
7019.t778 .t-store__card__textwrapper {
7020  position: relative !important;
7021
7022  display: flex !important;
7023  flex-direction: column !important;
7024
7025  overflow: hidden !important;
7026
7027  box-sizing: border-box !important;
7028}
7029
7030
7031/* =====================================================
7032   ЗАГОЛОВОК КАРТОЧКИ
7033   ===================================================== */
7034
7035/*
7036  Заголовок всегда показывается полностью.
7037  Никакого троеточия.
7038*/
7039.t778 .t-store__card__title {
7040  display: block !important;
7041
7042  -webkit-box-orient: unset !important;
7043  -webkit-line-clamp: unset !important;
7044  line-clamp: unset !important;
7045
7046  overflow: visible !important;
7047  text-overflow: clip !important;
7048
7049  white-space: normal !important;
7050
7051  overflow-wrap: break-word !important;
7052  word-break: normal !important;
7053
7054  flex: 0 0 auto !important;
7055}
7056
7057
7058/* =====================================================
7059   ОПИСАНИЕ
7060   ===================================================== */
7061
7062.t778 .t-store__card__descr {
7063  position: relative !important;
7064
7065  flex: 1 1 auto !important;
7066
7067  min-height: 0 !important;
7068
7069  overflow: hidden !important;
7070}
7071
7072
7073/* =====================================================
7074   FADE-OUT В КОНЦЕ ДЛИННОГО ОПИСАНИЯ
7075   ===================================================== */
7076
7077.t778 .t-store__card__descr::after {
7078  content: "" !important;
7079
7080  position: absolute !important;
7081
7082  left: 0 !important;
7083  right: 0 !important;
7084  bottom: 0 !important;
7085
7086  height: 2.4em !important;
7087
7088  pointer-events: none !important;
7089
7090  background: linear-gradient(
7091    to bottom,
7092    rgba(255, 255, 255, 0) 0%,
7093    rgba(255, 255, 255, 0.78) 58%,
7094    rgba(255, 255, 255, 1) 100%
7095  ) !important;
7096}
7097
7098
7099/* =====================================================
7100   ЦЕНА — ВСЕГДА СНИЗУ СПРАВА
7101   ===================================================== */
7102
7103.t778 .t-store__card__price-wrapper {
7104  flex: 0 0 auto !important;
7105
7106  width: 100% !important;
7107
7108  margin-top: auto !important;
7109
7110  padding-top: 10px !important;
7111
7112  display: flex !important;
7113
7114  justify-content: flex-end !important;
7115  align-items: flex-end !important;
7116
7117  flex-wrap: wrap !important;
7118
7119  text-align: right !important;
7120
7121  box-sizing: border-box !important;
7122}
7123
7124.t778 .t-store__card__price,
7125.t778 .t-store__card__price-value,
7126.t778 .t-store__card__price_old {
7127  text-align: right !important;
7128}
7129
7130
7131/* =====================================================
7132   КНОПКА "НАЙТИ УСЛУГУ" В ХЕДЕРЕ
7133   ===================================================== */
7134
7135/*
7136  Этот CSS Class Name ставим на текст:
7137  "Найти услугу"
7138
7139  tour-search-slot
7140*/
7141@media screen and (min-width: 981px) {
7142
7143  .tour-search-slot {
7144    cursor: pointer !important;
7145  }
7146
7147  .tour-search-slot .tn-atom {
7148    cursor: pointer !important;
7149  }
7150}
7151
7152
7153/* =====================================================
7154   DESKTOP-ПАНЕЛЬ ПОИСКА
7155   ===================================================== */
7156
7157/*
7158  Сама панель создаётся JS и добавляется в body.
7159
7160  На мобильном она вообще не используется.
7161*/
7162.tour-search-panel {
7163  position: fixed !important;
7164
7165  left: 50% !important;
7166
7167  width: 1130px !important;
7168
7169  max-width: calc(100vw - 64px) !important;
7170
7171  /*
7172    top рассчитывается JS относительно
7173    фактического нижнего края хедера.
7174  */
7175  top: 0;
7176
7177  transform:
7178    translate(-50%, -8px) !important;
7179
7180  visibility: hidden !important;
7181  opacity: 0 !important;
7182
7183  pointer-events: none !important;
7184
7185  z-index: 2147483000 !important;
7186
7187  font-family:
7188    "TildaSans",
7189    Arial,
7190    sans-serif !important;
7191
7192  box-sizing: border-box !important;
7193
7194  transition:
7195    opacity 0.16s ease,
7196    transform 0.16s ease,
7197    visibility 0.16s ease !important;
7198}
7199
7200
7201/* Открытое состояние */
7202.tour-search-panel.is-open {
7203  visibility: visible !important;
7204  opacity: 1 !important;
7205
7206  transform:
7207    translate(-50%, 0) !important;
7208
7209  pointer-events: auto !important;
7210}
7211
7212
7213/* =====================================================
7214   ПОЛЕ ВВОДА
7215   ===================================================== */
7216
7217.tour-search-panel__input-wrap {
7218  position: relative !important;
7219
7220  width: 100% !important;
7221
7222  height: 105px !important;
7223
7224  background: #ffffff !important;
7225
7226  border: 1px solid #d8d8d8 !important;
7227
7228  border-radius: 21px !important;
7229
7230  box-shadow:
7231    0 15px 45px rgba(0, 0, 0, 0.13) !important;
7232
7233  box-sizing: border-box !important;
7234
7235  overflow: hidden !important;
7236}
7237
7238
7239.tour-search-panel__input {
7240  display: block !important;
7241
7242  width: 100% !important;
7243  height: 100% !important;
7244
7245  border: 0 !important;
7246  outline: 0 !important;
7247
7248  margin: 0 !important;
7249
7250  padding:
7251    0 78px
7252    0 36px !important;
7253
7254  background:
7255    transparent !important;
7256
7257  color: #111111 !important;
7258
7259  font-family:
7260    "TildaSans",
7261    Arial,
7262    sans-serif !important;
7263
7264  font-size: 30px !important;
7265
7266  font-weight: 400 !important;
7267
7268  line-height: 1 !important;
7269
7270  box-sizing: border-box !important;
7271
7272  -webkit-appearance:
7273    none !important;
7274
7275  appearance:
7276    none !important;
7277}
7278
7279
7280/* Placeholder */
7281.tour-search-panel__input::placeholder {
7282  color:
7283    rgba(0, 0, 0, 0.48) !important;
7284
7285  opacity: 1 !important;
7286}
7287
7288
7289/* Убираем браузерный крестик у type=search */
7290.tour-search-panel__input::-webkit-search-cancel-button {
7291  display: none !important;
7292
7293  -webkit-appearance:
7294    none !important;
7295}
7296
7297
7298/* Маленький крестик внутри поля: закрывает всю панель поиска */
7299.tour-search-panel__close {
7300  position: absolute !important;
7301
7302  top: 50% !important;
7303  right: 22px !important;
7304
7305  width: 38px !important;
7306  height: 38px !important;
7307
7308  display: flex !important;
7309  align-items: center !important;
7310  justify-content: center !important;
7311
7312  padding: 0 !important;
7313  margin: 0 !important;
7314
7315  border: 0 !important;
7316  border-radius: 50% !important;
7317
7318  background: transparent !important;
7319  color: #222222 !important;
7320
7321  font-family: Arial, sans-serif !important;
7322  font-size: 24px !important;
7323  font-weight: 400 !important;
7324  line-height: 1 !important;
7325
7326  cursor: pointer !important;
7327
7328  transform: translateY(-50%) !important;
7329
7330  z-index: 3 !important;
7331  box-sizing: border-box !important;
7332
7333  transition:
7334    background 0.12s ease,
7335    border-color 0.12s ease !important;
7336}
7337
7338.tour-search-panel__close:hover {
7339  background: #f3f3f3 !important;
7340}
7341
7342.tour-search-panel__close:focus-visible {
7343  outline: 2px solid rgba(0, 0, 0, 0.28) !important;
7344  outline-offset: 2px !important;
7345}
7346
7347
7348/* =====================================================
7349   СПИСОК ПОДСКАЗОК
7350   ===================================================== */
7351
7352/*
7353  Внешняя оболочка результатов.
7354
7355  ВАЖНО:
7356  overflow:hidden обрезает ВСЁ строго по скруглению модала.
7357  Нативный scrollbar браузера внутри полностью скрыт.
7358  Наш scrollbar рисуется отдельными HTML-элементами внутри shell.
7359*/
7360.tour-search-panel__results-shell {
7361  position: relative !important;
7362
7363  width: 100% !important;
7364
7365  max-height: min(780px, calc(100vh - 220px)) !important;
7366
7367  margin-top: 9px !important;
7368
7369  background: #ffffff !important;
7370
7371  border: 1px solid #e4e4e4 !important;
7372
7373  border-radius: 24px !important;
7374
7375  box-shadow:
7376    0 21px 57px rgba(0, 0, 0, 0.15) !important;
7377
7378  overflow: hidden !important;
7379
7380  box-sizing: border-box !important;
7381
7382  display: none;
7383}
7384
7385
7386/*
7387  Результаты показываются только когда
7388  пользователь начал ввод.
7389*/
7390.tour-search-panel__results-shell.is-open {
7391  display: block !important;
7392}
7393
7394
7395/*
7396  Сам настоящий scroll-контейнер.
7397
7398  Нативная полоса прокрутки ПОЛНОСТЬЮ скрыта.
7399  Скролл мышью / тачпадом / клавиатурой сохраняется.
7400*/
7401.tour-search-panel__results {
7402  width: 100% !important;
7403
7404  max-height: min(780px, calc(100vh - 220px)) !important;
7405
7406  margin: 0 !important;
7407
7408  /*
7409    Справа оставляем внутреннее место
7410    под наш кастомный scrollbar.
7411  */
7412  padding:
7413    12px
7414    34px
7415    12px
7416    12px !important;
7417
7418  background: transparent !important;
7419
7420  border: 0 !important;
7421
7422  border-radius: 24px !important;
7423
7424  overflow-x: hidden !important;
7425  overflow-y: auto !important;
7426
7427  overscroll-behavior: contain !important;
7428
7429  box-sizing: border-box !important;
7430
7431  /*
7432    Firefox / старый Edge / IE:
7433    скрываем нативный scrollbar,
7434    но сам scroll остаётся рабочим.
7435  */
7436  scrollbar-width: none !important;
7437  -ms-overflow-style: none !important;
7438}
7439
7440
7441/*
7442  Chrome / Edge / Safari:
7443  полностью убираем НАТИВНЫЙ scrollbar вместе
7444  со стрелочками сверху и снизу.
7445*/
7446.tour-search-panel__results::-webkit-scrollbar {
7447  width: 0 !important;
7448  height: 0 !important;
7449  display: none !important;
7450}
7451
7452.tour-search-panel__results::-webkit-scrollbar-track,
7453.tour-search-panel__results::-webkit-scrollbar-thumb,
7454.tour-search-panel__results::-webkit-scrollbar-button,
7455.tour-search-panel__results::-webkit-scrollbar-corner {
7456  display: none !important;
7457  width: 0 !important;
7458  height: 0 !important;
7459  background: transparent !important;
7460}
7461
7462
7463/* =====================================================
7464   НАШ СОБСТВЕННЫЙ SCROLLBAR
7465   ===================================================== */
7466
7467/*
7468  Track находится ФИЗИЧЕСКИ ВНУТРИ белого модала.
7469  Он не может вылезти наружу, потому что shell имеет overflow:hidden.
7470*/
7471.tour-search-panel__scrollbar {
7472  position: absolute !important;
7473
7474  top: 18px !important;
7475  right: 9px !important;
7476  bottom: 18px !important;
7477
7478  width: 12px !important;
7479
7480  background:
7481    rgba(0, 0, 0, 0.055) !important;
7482
7483  border-radius: 999px !important;
7484
7485  opacity: 0 !important;
7486
7487  pointer-events: none !important;
7488
7489  z-index: 5 !important;
7490
7491  box-sizing: border-box !important;
7492
7493  transition:
7494    opacity 0.14s ease !important;
7495}
7496
7497
7498/*
7499  Показываем scrollbar только если контента реально
7500  больше высоты контейнера.
7501*/
7502.tour-search-panel__results-shell.has-scrollbar
7503.tour-search-panel__scrollbar {
7504  opacity: 1 !important;
7505  pointer-events: auto !important;
7506}
7507
7508
7509/*
7510  Именно эта скруглённая "таблетка" двигается.
7511*/
7512.tour-search-panel__scrollbar-thumb {
7513  position: absolute !important;
7514
7515  top: 0 !important;
7516  left: 2px !important;
7517  right: 2px !important;
7518
7519  height: 52px;
7520
7521  background: #a9a9a9 !important;
7522
7523  border-radius: 999px !important;
7524
7525  cursor: grab !important;
7526
7527  touch-action: none !important;
7528
7529  box-sizing: border-box !important;
7530
7531  transition:
7532    background 0.12s ease !important;
7533}
7534
7535
7536.tour-search-panel__scrollbar-thumb:hover {
7537  background: #8f8f8f !important;
7538}
7539
7540
7541.tour-search-panel__scrollbar-thumb:active,
7542.tour-search-panel__results-shell.is-scrollbar-dragging
7543.tour-search-panel__scrollbar-thumb {
7544  background: #7e7e7e !important;
7545  cursor: grabbing !important;
7546}
7547
7548
7549/* =====================================================
7550   ОДИН РЕЗУЛЬТАТ
7551   ===================================================== */
7552
7553.tour-search-panel__result {
7554  display: grid !important;
7555
7556  /*
7557    Слева фото, по центру название,
7558    справа цена.
7559  */
7560  grid-template-columns:
7561    117px
7562    minmax(0, 1fr)
7563    max-content !important;
7564
7565  column-gap: 27px !important;
7566
7567  align-items: center !important;
7568
7569  width: 100% !important;
7570
7571  min-height: 153px !important;
7572
7573  margin: 0 !important;
7574
7575  padding: 18px 21px !important;
7576
7577  border: 0 !important;
7578
7579  border-radius: 18px !important;
7580
7581  background:
7582    transparent !important;
7583
7584  color: #111111 !important;
7585
7586  font-family:
7587    "TildaSans",
7588    Arial,
7589    sans-serif !important;
7590
7591  text-align: left !important;
7592
7593  cursor: pointer !important;
7594
7595  box-sizing: border-box !important;
7596
7597  transition:
7598    background 0.12s ease !important;
7599}
7600
7601
7602.tour-search-panel__result:hover,
7603.tour-search-panel__result.is-active {
7604  background:
7605    #f2f2f2 !important;
7606}
7607
7608
7609/* Главное фото товара */
7610.tour-search-panel__result-image {
7611  display: block !important;
7612
7613  width: 117px !important;
7614  height: 117px !important;
7615
7616  min-width: 117px !important;
7617  min-height: 117px !important;
7618
7619  max-width: 117px !important;
7620  max-height: 117px !important;
7621
7622  /*
7623    ВАЖНО:
7624    фотографию не кропаем.
7625    Она целиком вписывается в фиксированный квадрат.
7626  */
7627  object-fit: contain !important;
7628  object-position: center !important;
7629
7630  background: #ffffff !important;
7631
7632  border-radius: 15px !important;
7633
7634  box-sizing: border-box !important;
7635
7636  pointer-events: none !important;
7637}
7638
7639
7640/*
7641  Если у товара внезапно не удалось достать картинку,
7642  оставляем аккуратный пустой квадрат.
7643*/
7644.tour-search-panel__result-image.is-empty {
7645  background: #f3f3f3 !important;
7646}
7647
7648
7649/* Название товара */
7650.tour-search-panel__result-title {
7651  min-width: 0 !important;
7652
7653  color: #111111 !important;
7654
7655  font-size: 27px !important;
7656
7657  font-weight: 500 !important;
7658
7659  line-height: 1.3 !important;
7660
7661  white-space: normal !important;
7662
7663  overflow-wrap: break-word !important;
7664
7665  pointer-events: none !important;
7666}
7667
7668
7669/* Цена справа */
7670.tour-search-panel__result-price {
7671  min-width: 158px !important;
7672
7673  padding-left: 15px !important;
7674
7675  color: #111111 !important;
7676
7677  font-size: 27px !important;
7678
7679  font-weight: 700 !important;
7680
7681  line-height: 1.25 !important;
7682
7683  text-align: right !important;
7684
7685  white-space: nowrap !important;
7686
7687  pointer-events: none !important;
7688}
7689
7690
7691/* Ничего не найдено */
7692.tour-search-panel__empty {
7693  padding:
7694    27px 30px !important;
7695
7696  color: #777777 !important;
7697
7698  font-size: 26px !important;
7699
7700  line-height: 1.35 !important;
7701
7702  text-align: left !important;
7703}
7704
7705
7706
7707/* =====================================================
7708   MOBILE SEARCH — ME403
7709   ===================================================== */
7710
7711/*
7712  На мобильном поиск вызывается пунктом ME403:
7713
7714  Найти услугу -> #tour-search-mobile
7715
7716  Десктопные размеры выше НЕ меняются.
7717*/
7718.tour-search-mobile-backdrop {
7719  position: fixed !important;
7720
7721  inset: 0 !important;
7722
7723  background:
7724    rgba(0, 0, 0, 0.58) !important;
7725
7726  opacity: 0 !important;
7727  visibility: hidden !important;
7728
7729  pointer-events: none !important;
7730
7731  z-index: 2147482900 !important;
7732
7733  transition:
7734    opacity 0.16s ease,
7735    visibility 0.16s ease !important;
7736}
7737
7738
7739.tour-search-mobile-backdrop.is-open {
7740  opacity: 1 !important;
7741  visibility: visible !important;
7742
7743  pointer-events: auto !important;
7744}
7745
7746
7747/*
7748  Пока мобильный поиск открыт,
7749  фон страницы не скроллится.
7750  Сам список результатов при этом скроллится отдельно.
7751*/
7752body.tour-search-mobile-open {
7753  overflow: hidden !important;
7754}
7755
7756
7757@media screen and (max-width: 980px) {
7758
7759  /*
7760    Та же самая панель поиска,
7761    но с отдельной мобильной геометрией.
7762  */
7763  .tour-search-panel.is-mobile {
7764    position: fixed !important;
7765
7766    left: 50% !important;
7767
7768    /*
7769      Панель живёт в верхней части viewport,
7770      а не относительно ME403.
7771    */
7772    top:
7773      max(
7774        12px,
7775        env(safe-area-inset-top)
7776      ) !important;
7777
7778    width:
7779      calc(100vw - 24px) !important;
7780
7781    max-width:
7782      520px !important;
7783
7784    transform:
7785      translate(-50%, -6px) !important;
7786
7787    z-index:
7788      2147483000 !important;
7789  }
7790
7791
7792  .tour-search-panel.is-mobile.is-open {
7793    transform:
7794      translate(-50%, 0) !important;
7795  }
7796
7797
7798  /* ===================================================
7799     MOBILE INPUT
7800     =================================================== */
7801
7802  .tour-search-panel.is-mobile
7803  .tour-search-panel__input-wrap {
7804    height:
7805      58px !important;
7806
7807    border-radius:
7808      15px !important;
7809
7810    box-shadow:
7811      0 10px 30px
7812      rgba(0, 0, 0, 0.16) !important;
7813  }
7814
7815
7816  .tour-search-panel.is-mobile
7817  .tour-search-panel__input {
7818    padding:
7819      0 50px
7820      0 17px !important;
7821
7822    font-size:
7823      17px !important;
7824  }
7825
7826
7827  .tour-search-panel.is-mobile
7828  .tour-search-panel__close {
7829    right: 10px !important;
7830
7831    width: 32px !important;
7832    height: 32px !important;
7833
7834    font-size: 20px !important;
7835  }
7836
7837
7838  /* ===================================================
7839     MOBILE RESULTS SHELL
7840     =================================================== */
7841
7842  .tour-search-panel.is-mobile
7843  .tour-search-panel__results-shell {
7844    /*
7845      dvh учитывает появление экранной клавиатуры.
7846    */
7847    max-height:
7848      calc(100dvh - 94px) !important;
7849
7850    margin-top:
7851      8px !important;
7852
7853    border-radius:
7854      16px !important;
7855
7856    box-shadow:
7857      0 12px 34px
7858      rgba(0, 0, 0, 0.18) !important;
7859  }
7860
7861
7862  .tour-search-panel.is-mobile
7863  .tour-search-panel__results {
7864    max-height:
7865      calc(100dvh - 94px) !important;
7866
7867    padding:
7868      8px
7869      22px
7870      8px
7871      8px !important;
7872
7873    border-radius:
7874      16px !important;
7875
7876    /*
7877      Инерционный touch-scroll для iOS.
7878    */
7879    -webkit-overflow-scrolling:
7880      touch !important;
7881  }
7882
7883
7884  /* ===================================================
7885     MOBILE CUSTOM SCROLLBAR
7886     =================================================== */
7887
7888  .tour-search-panel.is-mobile
7889  .tour-search-panel__scrollbar {
7890    top:
7891      12px !important;
7892
7893    right:
7894      6px !important;
7895
7896    bottom:
7897      12px !important;
7898
7899    width:
7900      8px !important;
7901  }
7902
7903
7904  .tour-search-panel.is-mobile
7905  .tour-search-panel__scrollbar-thumb {
7906    left:
7907      1px !important;
7908
7909    right:
7910      1px !important;
7911
7912    height:
7913      40px;
7914
7915    border-radius:
7916      999px !important;
7917  }
7918
7919
7920  /* ===================================================
7921     MOBILE RESULT
7922     =================================================== */
7923
7924  .tour-search-panel.is-mobile
7925  .tour-search-panel__result {
7926    grid-template-columns:
7927      58px
7928      minmax(0, 1fr)
7929      max-content !important;
7930
7931    column-gap:
7932      10px !important;
7933
7934    min-height:
7935      82px !important;
7936
7937    padding:
7938      10px
7939      9px !important;
7940
7941    border-radius:
7942      12px !important;
7943  }
7944
7945
7946  .tour-search-panel.is-mobile
7947  .tour-search-panel__result-image {
7948    width:
7949      58px !important;
7950
7951    height:
7952      58px !important;
7953
7954    min-width:
7955      58px !important;
7956
7957    min-height:
7958      58px !important;
7959
7960    max-width:
7961      58px !important;
7962
7963    max-height:
7964      58px !important;
7965
7966    border-radius:
7967      9px !important;
7968  }
7969
7970
7971  .tour-search-panel.is-mobile
7972  .tour-search-panel__result-title {
7973    font-size:
7974      15px !important;
7975
7976    line-height:
7977      1.25 !important;
7978  }
7979
7980
7981  .tour-search-panel.is-mobile
7982  .tour-search-panel__result-price {
7983    min-width:
7984      74px !important;
7985
7986    padding-left:
7987      4px !important;
7988
7989    font-size:
7990      15px !important;
7991
7992    line-height:
7993      1.2 !important;
7994  }
7995
7996
7997  .tour-search-panel.is-mobile
7998  .tour-search-panel__empty {
7999    padding:
8000      16px 14px !important;
8001
8002    font-size:
8003      15px !important;
8004  }
8005}
8006
8007</style> 
8007<script>
8008(function () {
8009  'use strict';
8010
8011
8012  /* =====================================================
8013     ОБЩИЕ НАСТРОЙКИ
8014     ===================================================== */
8015
8016  const DESKTOP_MIN_WIDTH =
8017    981;
8018
8019
8020  /*
8021    CSS Class Name текста
8022    "Найти услугу".
8023  */
8024  const SEARCH_TRIGGER_SELECTOR =
8025    '.tour-search-slot';
8026
8027
8028  /*
8029    Пункт ME403 "Найти услугу"
8030    должен иметь именно такую ссылку.
8031  */
8032  const MOBILE_SEARCH_HOOK =
8033    '#tour-search-mobile';
8034
8035
8036  /*
8037    Ширина панели сейчас задаётся CSS:
8038    553px.
8039
8040    Здесь задаём расстояние
8041    от нижнего края хедера до панели.
8042  */
8043  const SEARCH_PANEL_TOP_GAP =
8044    2;
8045
8046
8047  /*
8048    Максимальное количество
8049    вариантов в подсказках.
8050  */
8051  const SEARCH_RESULTS_LIMIT =
8052    50;
8053
8054
8055  const PRODUCT_CARD_SELECTOR =
8056    '.t778 .t-store__card';
8057
8058
8059  const PRODUCT_TITLE_SELECTOR =
8060    '.t-store__card__title';
8061
8062
8063  let tourProductIndex = [];
8064
8065
8066  let searchPanel = null;
8067
8068  let searchInput = null;
8069
8070  let searchCloseButton = null;
8071
8072  let searchResults = null;
8073
8074  let searchResultsShell = null;
8075
8076  let searchScrollbar = null;
8077
8078  let searchScrollbarThumb = null;
8079
8080  let scrollbarDragging = false;
8081
8082  let scrollbarDragStartY = 0;
8083
8084  let scrollbarDragStartScrollTop = 0;
8085
8086  let searchPanelOpen = false;
8087
8088  /*
8089    null / desktop / mobile
8090  */
8091  let searchPanelMode = null;
8092
8093  let mobileSearchBackdrop = null;
8094
8095  let activeTrigger = null;
8096
8097  let currentMatches = [];
8098
8099  let activeResultIndex = -1;
8100
8101
8102  /* =====================================================
8103     DESKTOP?
8104     ===================================================== */
8105
8106  function isSearchDesktop() {
8107
8108    return window.innerWidth >=
8109      DESKTOP_MIN_WIDTH;
8110  }
8111
8112
8113  function isSearchMobile() {
8114
8115    return !isSearchDesktop();
8116  }
8117
8118
8119  /*
8120    Находим именно пункт ME403 с нашей технической ссылкой.
8121  */
8122  function getMobileSearchTrigger(
8123    eventTarget
8124  ) {
8125
8126    if (!eventTarget) {
8127
8128      return null;
8129    }
8130
8131
8132    const link =
8133      eventTarget.closest(
8134        'a[href]'
8135      );
8136
8137
8138    if (!link) {
8139
8140      return null;
8141    }
8142
8143
8144    const href =
8145      link.getAttribute(
8146        'href'
8147      ) || '';
8148
8149
8150    if (
8151      href ===
8152      MOBILE_SEARCH_HOOK
8153    ) {
8154
8155      return link;
8156    }
8157
8158
8159    /*
8160      На случай если Tilda превратит ссылку
8161      в абсолютный URL с тем же hash.
8162    */
8163    try {
8164
8165      const url =
8166        new URL(
8167          href,
8168          window.location.href
8169        );
8170
8171
8172      if (
8173        url.hash ===
8174        MOBILE_SEARCH_HOOK
8175      ) {
8176
8177        return link;
8178      }
8179
8180    } catch (error) {
8181
8182      return null;
8183    }
8184
8185
8186    return null;
8187  }
8188
8189
8190  function removeMobileSearchHash() {
8191
8192    if (
8193      window.location.hash !==
8194      MOBILE_SEARCH_HOOK
8195    ) {
8196
8197      return;
8198    }
8199
8200
8201    history.replaceState(
8202      history.state,
8203      '',
8204      window.location.pathname +
8205      window.location.search
8206    );
8207  }
8208
8209
8210  function createMobileSearchBackdrop() {
8211
8212    if (mobileSearchBackdrop) {
8213
8214      return;
8215    }
8216
8217
8218    mobileSearchBackdrop =
8219      document.createElement(
8220        'div'
8221      );
8222
8223
8224    mobileSearchBackdrop.className =
8225      'tour-search-mobile-backdrop';
8226
8227
8228    mobileSearchBackdrop.setAttribute(
8229      'aria-hidden',
8230      'true'
8231    );
8232
8233
8234    document.body.appendChild(
8235      mobileSearchBackdrop
8236    );
8237
8238
8239    mobileSearchBackdrop.addEventListener(
8240      'click',
8241      function () {
8242
8243        closeSearchPanel();
8244      }
8245    );
8246  }
8247
8248
8249  /* =====================================================
8250     НОРМАЛИЗАЦИЯ НАЗВАНИЯ
8251     ===================================================== */
8252
8253  function normalizeTourSearchText(
8254    value
8255  ) {
8256
8257    return String(
8258      value || ''
8259    )
8260
8261      .normalize('NFKC')
8262
8263      .toLocaleLowerCase(
8264        'ru-RU'
8265      )
8266
8267      /*
8268        Ё и Е считаем одинаковыми.
8269      */
8270      .replace(
8271        /ё/g,
8272        'е'
8273      )
8274
8275      /*
8276        Знаки превращаем в пробелы.
8277      */
8278      .replace(
8279        /[^a-zа-я0-9]+/gi,
8280        ' '
8281      )
8282
8283      /*
8284        Убираем повторяющиеся пробелы.
8285      */
8286      .replace(
8287        /\s+/g,
8288        ' '
8289      )
8290
8291      .trim();
8292  }
8293
8294
8295  /* =====================================================
8296     ГЛАВНОЕ ФОТО ТОВАРА
8297     ===================================================== */
8298
8299  function getTourProductImage(
8300    card
8301  ) {
8302
8303    /*
8304      В каталоге Tilda data-product-img
8305      содержит главное изображение товара.
8306    */
8307    let imageUrl =
8308      card.getAttribute(
8309        'data-product-img'
8310      ) || '';
8311
8312
8313    /*
8314      Fallback на реальный элемент картинки карточки.
8315    */
8316    if (!imageUrl) {
8317
8318      const imageElement =
8319        card.querySelector(
8320          '.t-store__card__img, ' +
8321          '.t-store__card__bgimg, ' +
8322          '.js-product-img'
8323        );
8324
8325
8326      if (imageElement) {
8327
8328        imageUrl =
8329          imageElement.getAttribute(
8330            'data-original'
8331          ) ||
8332
8333          imageElement.getAttribute(
8334            'src'
8335          ) ||
8336
8337          '';
8338
8339
8340        /*
8341          У некоторых карточек картинка задана
8342          через background-image.
8343        */
8344        if (!imageUrl) {
8345
8346          const backgroundImage =
8347            imageElement.style
8348              .backgroundImage || '';
8349
8350
8351          const match =
8352            backgroundImage.match(
8353              /url\(["']?(.*?)["']?\)/
8354            );
8355
8356
8357          if (
8358            match &&
8359            match[1]
8360          ) {
8361
8362            imageUrl =
8363              match[1];
8364          }
8365        }
8366      }
8367    }
8368
8369
8370    return String(
8371      imageUrl || ''
8372    )
8373      .replace(
8374        /&amp;/g,
8375        '&'
8376      )
8377      .trim();
8378  }
8379
8380
8381  /* =====================================================
8382     ЦЕНА ТОВАРА
8383     ===================================================== */
8384
8385  function getTourProductPrice(
8386    card
8387  ) {
8388
8389    /*
8390      Сначала берём видимую цену из карточки,
8391      но извлекаем из неё только само числовое значение.
8392
8393      Это устраняет дублирование вида "15 000р.р.",
8394      которое может появляться из-за нескольких
8395      вложенных price-элементов Tilda.
8396    */
8397    const priceWrapper =
8398      card.querySelector(
8399        '.t-store__card__price-wrapper'
8400      );
8401
8402
8403    if (priceWrapper) {
8404
8405      const visiblePrice =
8406        String(
8407          priceWrapper.textContent ||
8408          ''
8409        )
8410          .replace(
8411            /[\u00A0\u202F]/g,
8412            ' '
8413          )
8414          .replace(
8415            /\s+/g,
8416            ' '
8417          )
8418          .trim();
8419
8420
8421      const visibleNumberMatch =
8422        visiblePrice.match(
8423          /\d[\d\s]*(?:[.,]\d+)?/
8424        );
8425
8426
8427      if (
8428        visibleNumberMatch &&
8429        visibleNumberMatch[0]
8430      ) {
8431
8432        const numericValue =
8433          Number(
8434            visibleNumberMatch[0]
8435              .replace(
8436                /\s/g,
8437                ''
8438              )
8439              .replace(
8440                ',',
8441                '.'
8442              )
8443          );
8444
8445
8446        if (
8447          Number.isFinite(
8448            numericValue
8449          )
8450        ) {
8451
8452          return new Intl.NumberFormat(
8453            'ru-RU',
8454            {
8455              maximumFractionDigits: 2
8456            }
8457          ).format(
8458            numericValue
8459          ) + ' ₽';
8460        }
8461      }
8462    }
8463
8464
8465    /*
8466      Fallback на атрибуты товара Tilda.
8467    */
8468    const rawPrice =
8469      card.getAttribute(
8470        'data-product-price-def-str'
8471      )
8472
8473      ||
8474
8475      card.getAttribute(
8476        'data-product-price-def'
8477      )
8478
8479      ||
8480
8481      '';
8482
8483
8484    if (!rawPrice) {
8485
8486      return '';
8487    }
8488
8489
8490    const rawNumberMatch =
8491      String(
8492        rawPrice
8493      )
8494        .replace(
8495          /[\u00A0\u202F]/g,
8496          ' '
8497        )
8498        .match(
8499          /\d[\d\s]*(?:[.,]\d+)?/
8500        );
8501
8502
8503    if (
8504      !rawNumberMatch ||
8505      !rawNumberMatch[0]
8506    ) {
8507
8508      return '';
8509    }
8510
8511
8512    const number =
8513      Number(
8514        rawNumberMatch[0]
8515          .replace(
8516            /\s/g,
8517            ''
8518          )
8519          .replace(
8520            ',',
8521            '.'
8522          )
8523      );
8524
8525
8526    if (
8527      Number.isFinite(number)
8528    ) {
8529
8530      return new Intl.NumberFormat(
8531        'ru-RU',
8532        {
8533          maximumFractionDigits: 2
8534        }
8535      ).format(number) + ' ₽';
8536    }
8537
8538
8539    return '';
8540  }
8541
8542
8543  /* =====================================================
8544     СТРОИМ ИНДЕКС ИЗ КАРТОЧЕК ST310N
8545     ===================================================== */
8546
8547  function buildTourProductIndex() {
8548
8549    const cards =
8550      document.querySelectorAll(
8551        PRODUCT_CARD_SELECTOR
8552      );
8553
8554
8555    const products = [];
8556
8557    const usedProducts =
8558      new Set();
8559
8560
8561    cards.forEach(
8562      function (card) {
8563
8564        const titleElement =
8565          card.querySelector(
8566            PRODUCT_TITLE_SELECTOR
8567          );
8568
8569
8570        if (!titleElement) {
8571
8572          return;
8573        }
8574
8575
8576        const title =
8577          String(
8578            titleElement.textContent ||
8579            ''
8580          )
8581
8582            .replace(
8583              /\s+/g,
8584              ' '
8585            )
8586
8587            .trim();
8588
8589
8590        if (!title) {
8591
8592          return;
8593        }
8594
8595
8596        const normalizedTitle =
8597          normalizeTourSearchText(
8598            title
8599          );
8600
8601
8602        if (!normalizedTitle) {
8603
8604          return;
8605        }
8606
8607
8608        const uid =
8609
8610          card.getAttribute(
8611            'data-product-uid'
8612          )
8613
8614          ||
8615
8616          card.getAttribute(
8617            'data-product-gen-uid'
8618          )
8619
8620          ||
8621
8622          card.getAttribute(
8623            'data-product-lid'
8624          )
8625
8626          ||
8627
8628          '';
8629
8630
8631        const uniqueKey =
8632          uid
8633            ? 'uid:' + uid
8634            : 'name:' +
8635              normalizedTitle;
8636
8637
8638        if (
8639          usedProducts.has(
8640            uniqueKey
8641          )
8642        ) {
8643
8644          return;
8645        }
8646
8647
8648        usedProducts.add(
8649          uniqueKey
8650        );
8651
8652
8653        products.push({
8654          title:
8655            title,
8656
8657          normalizedTitle:
8658            normalizedTitle,
8659
8660          uid:
8661            uid,
8662
8663          image:
8664            getTourProductImage(
8665              card
8666            ),
8667
8668          price:
8669            getTourProductPrice(
8670              card
8671            ),
8672
8673          card:
8674            card
8675        });
8676      }
8677    );
8678
8679
8680    tourProductIndex =
8681      products;
8682  }
8683
8684
8685  /* =====================================================
8686     ИЩЕМ ТОВАРЫ
8687     ===================================================== */
8688
8689  function findTourProducts(
8690    query
8691  ) {
8692
8693    const normalizedQuery =
8694      normalizeTourSearchText(
8695        query
8696      );
8697
8698
8699    if (!normalizedQuery) {
8700
8701      return [];
8702    }
8703
8704
8705    const queryWords =
8706      normalizedQuery
8707
8708        .split(' ')
8709
8710        .filter(
8711          Boolean
8712        );
8713
8714
8715    return tourProductIndex
8716
8717      .filter(
8718        function (product) {
8719
8720          /*
8721            Все введённые части должны
8722            находиться в названии.
8723          */
8724          return queryWords.every(
8725            function (word) {
8726
8727              return product
8728                .normalizedTitle
8729                .includes(
8730                  word
8731                );
8732            }
8733          );
8734        }
8735      )
8736
8737      .map(
8738        function (product) {
8739
8740          let score =
8741            30;
8742
8743
8744          /*
8745            Полное совпадение.
8746          */
8747          if (
8748            product
8749              .normalizedTitle ===
8750            normalizedQuery
8751          ) {
8752
8753            score = 0;
8754
8755          }
8756
8757
8758          /*
8759            Название начинается
8760            с полного запроса.
8761          */
8762          else if (
8763            product
8764              .normalizedTitle
8765              .startsWith(
8766                normalizedQuery
8767              )
8768          ) {
8769
8770            score = 10;
8771
8772          }
8773
8774
8775          else {
8776
8777            const titleWords =
8778              product
8779                .normalizedTitle
8780                .split(' ');
8781
8782
8783            /*
8784              Какое-нибудь слово
8785              начинается с запроса.
8786            */
8787            const startsWord =
8788              titleWords.some(
8789                function (word) {
8790
8791                  return word
8792                    .startsWith(
8793                      normalizedQuery
8794                    );
8795                }
8796              );
8797
8798
8799            if (startsWord) {
8800
8801              score = 20;
8802            }
8803          }
8804
8805
8806          return {
8807            product:
8808              product,
8809
8810            score:
8811              score
8812          };
8813        }
8814      )
8815
8816      .sort(
8817        function (a, b) {
8818
8819          if (
8820            a.score !==
8821            b.score
8822          ) {
8823
8824            return a.score -
8825              b.score;
8826          }
8827
8828
8829          return a
8830            .product
8831            .title
8832            .localeCompare(
8833              b.product.title,
8834              'ru'
8835            );
8836        }
8837      )
8838
8839      .slice(
8840        0,
8841        SEARCH_RESULTS_LIMIT
8842      )
8843
8844      .map(
8845        function (entry) {
8846
8847          return entry.product;
8848        }
8849      );
8850  }
8851
8852
8853  /* =====================================================
8854     НАХОДИМ АКТУАЛЬНУЮ КАРТОЧКУ
8855     ===================================================== */
8856
8857  function findCurrentProductCard(
8858    product
8859  ) {
8860
8861    /*
8862      Если DOM-элемент всё ещё существует,
8863      просто используем его.
8864    */
8865    if (
8866      product.card &&
8867      product.card.isConnected
8868    ) {
8869
8870      return product.card;
8871    }
8872
8873
8874    const cards =
8875      document.querySelectorAll(
8876        PRODUCT_CARD_SELECTOR
8877      );
8878
8879
8880    /*
8881      Сначала ищем по UID.
8882    */
8883    if (product.uid) {
8884
8885      for (
8886        let i = 0;
8887        i < cards.length;
8888        i++
8889      ) {
8890
8891        const card =
8892          cards[i];
8893
8894
8895        const uid =
8896
8897          card.getAttribute(
8898            'data-product-uid'
8899          )
8900
8901          ||
8902
8903          card.getAttribute(
8904            'data-product-gen-uid'
8905          )
8906
8907          ||
8908
8909          card.getAttribute(
8910            'data-product-lid'
8911          )
8912
8913          ||
8914
8915          '';
8916
8917
8918        if (
8919          String(uid) ===
8920          String(product.uid)
8921        ) {
8922
8923          return card;
8924        }
8925      }
8926    }
8927
8928
8929    /*
8930      Fallback:
8931      точное совпадение названия.
8932    */
8933    for (
8934      let i = 0;
8935      i < cards.length;
8936      i++
8937    ) {
8938
8939      const titleElement =
8940        cards[i]
8941          .querySelector(
8942            PRODUCT_TITLE_SELECTOR
8943          );
8944
8945
8946      if (!titleElement) {
8947
8948        continue;
8949      }
8950
8951
8952      const title =
8953        normalizeTourSearchText(
8954          titleElement.textContent
8955        );
8956
8957
8958      if (
8959        title ===
8960        product.normalizedTitle
8961      ) {
8962
8963        return cards[i];
8964      }
8965    }
8966
8967
8968    return null;
8969  }
8970
8971
8972  /* =====================================================
8973     ОТКРЫВАЕМ РОДНОЙ POPUP TILDA
8974     ===================================================== */
8975
8976  function openNativeTourPopup(
8977    product
8978  ) {
8979
8980    const card =
8981      findCurrentProductCard(
8982        product
8983      );
8984
8985
8986    if (!card) {
8987
8988      console.warn(
8989        'Поиск услуги: карточка не найдена:',
8990        product.title
8991      );
8992
8993      return;
8994    }
8995
8996
8997    /*
8998      В ST310N обработчик открытия popup
8999      висит не обязательно на корневом .t-store__card.
9000
9001      Поэтому кликаем по настоящей ссылке товара
9002      внутри карточки — именно по тому элементу,
9003      по которому кликает пользователь.
9004    */
9005    const clickTarget =
9006
9007      card.querySelector(
9008        '.t-store__card__imgwrapper a[href*="/tproduct/"]'
9009      )
9010
9011      ||
9012
9013      card.querySelector(
9014        'a[href*="/tproduct/"]'
9015      )
9016
9017      ||
9018
9019      card.querySelector(
9020        '.t-store__card__imgwrapper'
9021      )
9022
9023      ||
9024
9025      card.querySelector(
9026        '.t-store__card__title'
9027      );
9028
9029
9030    /*
9031      Закрываем и полностью очищаем поиск
9032      перед открытием popup товара.
9033    */
9034    closeSearchPanel();
9035
9036
9037    if (
9038      clickTarget &&
9039      typeof clickTarget.click ===
9040      'function'
9041    ) {
9042
9043      clickTarget.click();
9044
9045      return;
9046    }
9047
9048
9049    /*
9050      Последний fallback:
9051      посылаем обычный bubbling click
9052      по самой карточке.
9053    */
9054    card.dispatchEvent(
9055      new MouseEvent(
9056        'click',
9057        {
9058          bubbles:
9059            true,
9060
9061          cancelable:
9062            true,
9063
9064          view:
9065            window
9066        }
9067      )
9068    );
9069  }
9070
9071
9072  /* =====================================================
9073     СОЗДАЁМ ПАНЕЛЬ
9074     ===================================================== */
9075
9076  function createSearchPanel() {
9077
9078    if (searchPanel) {
9079
9080      return;
9081    }
9082
9083
9084    searchPanel =
9085      document.createElement(
9086        'div'
9087      );
9088
9089
9090    searchPanel.className =
9091      'tour-search-panel';
9092
9093
9094    searchPanel.setAttribute(
9095      'aria-hidden',
9096      'true'
9097    );
9098
9099
9100    searchPanel.innerHTML =
9101      '<div class="tour-search-panel__input-wrap">' +
9102
9103        '<input ' +
9104          'class="tour-search-panel__input" ' +
9105          'type="search" ' +
9106          'placeholder="Введите интересующую услугу" ' +
9107          'autocomplete="off" ' +
9108          'spellcheck="false" ' +
9109          'aria-label="Введите интересующую услугу" ' +
9110          'aria-autocomplete="list"' +
9111        '>' +
9112
9113        '<button ' +
9114          'class="tour-search-panel__close" ' +
9115          'type="button" ' +
9116          'aria-label="Закрыть поиск"' +
9117        '>
9117×</button>' +
9118
9119      '</div>' +
9120
9121      '<div class="tour-search-panel__results-shell">' +
9122
9123        '<div ' +
9124          'class="tour-search-panel__results" ' +
9125          'role="listbox"' +
9126        '></div>' +
9127
9128        '<div ' +
9129          'class="tour-search-panel__scrollbar" ' +
9130          'aria-hidden="true"' +
9131        '>' +
9132
9133          '<div ' +
9134            'class="tour-search-panel__scrollbar-thumb"' +
9135          '></div>' +
9136
9137        '</div>' +
9138
9139      '</div>';
9140
9141
9142    document.body.appendChild(
9143      searchPanel
9144    );
9145
9146
9147    searchInput =
9148      searchPanel.querySelector(
9149        '.tour-search-panel__input'
9150      );
9151
9152
9153    searchCloseButton =
9154      searchPanel.querySelector(
9155        '.tour-search-panel__close'
9156      );
9157
9158
9159    searchResults =
9160      searchPanel.querySelector(
9161        '.tour-search-panel__results'
9162      );
9163
9164
9165    searchResultsShell =
9166      searchPanel.querySelector(
9167        '.tour-search-panel__results-shell'
9168      );
9169
9170
9171    searchScrollbar =
9172      searchPanel.querySelector(
9173        '.tour-search-panel__scrollbar'
9174      );
9175
9176
9177    searchScrollbarThumb =
9178      searchPanel.querySelector(
9179        '.tour-search-panel__scrollbar-thumb'
9180      );
9181
9182
9183    initialiseCustomScrollbar();
9184
9185
9186    searchCloseButton.addEventListener(
9187      'click',
9188      function (event) {
9189
9190        event.preventDefault();
9191        event.stopPropagation();
9192
9193
9194        closeSearchPanel();
9195
9196      }
9197    );
9198
9199
9200    searchInput.addEventListener(
9201      'input',
9202      renderSearchResults
9203    );
9204
9205
9206    searchInput.addEventListener(
9207      'keydown',
9208      handleSearchKeyboard
9209    );
9210  }
9211
9212
9213  /* =====================================================
9214     КАСТОМНЫЙ SCROLLBAR РЕЗУЛЬТАТОВ
9215     ===================================================== */
9216
9217  function setSearchResultsOpen(
9218    isOpen
9219  ) {
9220
9221    if (!searchResultsShell) {
9222
9223      return;
9224    }
9225
9226
9227    if (isOpen) {
9228
9229      searchResultsShell.classList.add(
9230        'is-open'
9231      );
9232
9233
9234      /*
9235        Ждём один кадр, чтобы браузер уже рассчитал
9236        реальную высоту списка.
9237      */
9238      requestAnimationFrame(
9239        updateCustomScrollbar
9240      );
9241
9242    } else {
9243
9244      searchResultsShell.classList.remove(
9245        'is-open'
9246      );
9247
9248      searchResultsShell.classList.remove(
9249        'has-scrollbar'
9250      );
9251
9252      searchResultsShell.classList.remove(
9253        'is-scrollbar-dragging'
9254      );
9255
9256
9257      if (searchScrollbarThumb) {
9258
9259        searchScrollbarThumb.style.height =
9260          '';
9261
9262        searchScrollbarThumb.style.transform =
9263          'translateY(0px)';
9264      }
9265    }
9266  }
9267
9268
9269  function updateCustomScrollbar() {
9270
9271    if (
9272      !searchResults ||
9273      !searchResultsShell ||
9274      !searchScrollbar ||
9275      !searchScrollbarThumb
9276    ) {
9277
9278      return;
9279    }
9280
9281
9282    /*
9283      Пока shell скрыт, его размеры равны нулю.
9284    */
9285    if (
9286      !searchResultsShell.classList.contains(
9287        'is-open'
9288      )
9289    ) {
9290
9291      return;
9292    }
9293
9294
9295    const clientHeight =
9296      searchResults.clientHeight;
9297
9298
9299    const scrollHeight =
9300      searchResults.scrollHeight;
9301
9302
9303    /*
9304      Скролл не нужен.
9305    */
9306    if (
9307      scrollHeight <=
9308      clientHeight + 1
9309    ) {
9310
9311      searchResultsShell.classList.remove(
9312        'has-scrollbar'
9313      );
9314
9315
9316      searchScrollbarThumb.style.transform =
9317        'translateY(0px)';
9318
9319
9320      return;
9321    }
9322
9323
9324    searchResultsShell.classList.add(
9325      'has-scrollbar'
9326    );
9327
9328
9329    const trackHeight =
9330      searchScrollbar.clientHeight;
9331
9332
9333    if (trackHeight <= 0) {
9334
9335      return;
9336    }
9337
9338
9339    /*
9340      Thumb пропорционален видимой части,
9341      но никогда не становится слишком маленьким.
9342    */
9343    const minimumThumbHeight =
9344      searchPanelMode === 'mobile'
9345        ? 40
9346        : 52;
9347
9348
9349    const thumbHeight =
9350      Math.max(
9351        minimumThumbHeight,
9352        Math.round(
9353          trackHeight *
9354          (
9355            clientHeight /
9356            scrollHeight
9357          )
9358        )
9359      );
9360
9361
9362    const safeThumbHeight =
9363      Math.min(
9364        thumbHeight,
9365        trackHeight
9366      );
9367
9368
9369    const maxThumbTravel =
9370      Math.max(
9371        0,
9372        trackHeight -
9373        safeThumbHeight
9374      );
9375
9376
9377    const maxScrollTop =
9378      Math.max(
9379        1,
9380        scrollHeight -
9381        clientHeight
9382      );
9383
9384
9385    const thumbTop =
9386      maxThumbTravel *
9387      (
9388        searchResults.scrollTop /
9389        maxScrollTop
9390      );
9391
9392
9393    searchScrollbarThumb.style.height =
9394      safeThumbHeight + 'px';
9395
9396
9397    searchScrollbarThumb.style.transform =
9398      'translateY(' +
9399      thumbTop +
9400      'px)';
9401  }
9402
9403
9404  function initialiseCustomScrollbar() {
9405
9406    if (
9407      !searchResults ||
9408      !searchResultsShell ||
9409      !searchScrollbar ||
9410      !searchScrollbarThumb
9411    ) {
9412
9413      return;
9414    }
9415
9416
9417    /*
9418      Колесо мыши / touchpad / клавиатура
9419      двигают настоящий scrollTop.
9420      Нам остаётся только синхронизировать thumb.
9421    */
9422    searchResults.addEventListener(
9423      'scroll',
9424      updateCustomScrollbar,
9425      {
9426        passive:
9427          true
9428      }
9429    );
9430
9431
9432    /*
9433      Перетаскивание thumb мышью / pointer.
9434    */
9435    searchScrollbarThumb.addEventListener(
9436      'pointerdown',
9437      function (event) {
9438
9439        if (
9440          !searchResultsShell.classList.contains(
9441            'has-scrollbar'
9442          )
9443        ) {
9444
9445          return;
9446        }
9447
9448
9449        event.preventDefault();
9450
9451        event.stopPropagation();
9452
9453
9454        scrollbarDragging =
9455          true;
9456
9457
9458        scrollbarDragStartY =
9459          event.clientY;
9460
9461
9462        scrollbarDragStartScrollTop =
9463          searchResults.scrollTop;
9464
9465
9466        searchResultsShell.classList.add(
9467          'is-scrollbar-dragging'
9468        );
9469
9470
9471        searchScrollbarThumb.setPointerCapture(
9472          event.pointerId
9473        );
9474      }
9475    );
9476
9477
9478    searchScrollbarThumb.addEventListener(
9479      'pointermove',
9480      function (event) {
9481
9482        if (!scrollbarDragging) {
9483
9484          return;
9485        }
9486
9487
9488        event.preventDefault();
9489
9490
9491        const trackHeight =
9492          searchScrollbar.clientHeight;
9493
9494
9495        const thumbHeight =
9496          searchScrollbarThumb
9497            .getBoundingClientRect()
9498            .height;
9499
9500
9501        const maxThumbTravel =
9502          Math.max(
9503            1,
9504            trackHeight -
9505            thumbHeight
9506          );
9507
9508
9509        const maxScrollTop =
9510          Math.max(
9511            0,
9512            searchResults.scrollHeight -
9513            searchResults.clientHeight
9514          );
9515
9516
9517        const deltaY =
9518          event.clientY -
9519          scrollbarDragStartY;
9520
9521
9522        searchResults.scrollTop =
9523          scrollbarDragStartScrollTop +
9524          (
9525            deltaY *
9526            (
9527              maxScrollTop /
9528              maxThumbTravel
9529            )
9530          );
9531      }
9532    );
9533
9534
9535    function finishScrollbarDrag(
9536      event
9537    ) {
9538
9539      if (!scrollbarDragging) {
9540
9541        return;
9542      }
9543
9544
9545      scrollbarDragging =
9546        false;
9547
9548
9549      searchResultsShell.classList.remove(
9550        'is-scrollbar-dragging'
9551      );
9552
9553
9554      if (
9555        event &&
9556        typeof event.pointerId !==
9557        'undefined' &&
9558        searchScrollbarThumb.hasPointerCapture(
9559          event.pointerId
9560        )
9561      ) {
9562
9563        searchScrollbarThumb.releasePointerCapture(
9564          event.pointerId
9565        );
9566      }
9567    }
9568
9569
9570    searchScrollbarThumb.addEventListener(
9571      'pointerup',
9572      finishScrollbarDrag
9573    );
9574
9575
9576    searchScrollbarThumb.addEventListener(
9577      'pointercancel',
9578      finishScrollbarDrag
9579    );
9580
9581
9582    /*
9583      Клик по track перемещает позицию прокрутки
9584      к месту клика.
9585    */
9586    searchScrollbar.addEventListener(
9587      'pointerdown',
9588      function (event) {
9589
9590        if (
9591          event.target ===
9592          searchScrollbarThumb
9593        ) {
9594
9595          return;
9596        }
9597
9598
9599        if (
9600          !searchResultsShell.classList.contains(
9601            'has-scrollbar'
9602          )
9603        ) {
9604
9605          return;
9606        }
9607
9608
9609        event.preventDefault();
9610
9611        event.stopPropagation();
9612
9613
9614        const trackRect =
9615          searchScrollbar
9616            .getBoundingClientRect();
9617
9618
9619        const thumbHeight =
9620          searchScrollbarThumb
9621            .getBoundingClientRect()
9622            .height;
9623
9624
9625        const maxThumbTravel =
9626          Math.max(
9627            1,
9628            trackRect.height -
9629            thumbHeight
9630          );
9631
9632
9633        const desiredThumbTop =
9634          Math.min(
9635            maxThumbTravel,
9636            Math.max(
9637              0,
9638              event.clientY -
9639              trackRect.top -
9640              (
9641                thumbHeight /
9642                2
9643              )
9644            )
9645          );
9646
9647
9648        const maxScrollTop =
9649          Math.max(
9650            0,
9651            searchResults.scrollHeight -
9652            searchResults.clientHeight
9653          );
9654
9655
9656        searchResults.scrollTop =
9657          (
9658            desiredThumbTop /
9659            maxThumbTravel
9660          ) *
9661          maxScrollTop;
9662      }
9663    );
9664  }
9665
9666
9667  /* =====================================================
9668     НАХОДИМ НИЖНЮЮ ГРАНИЦУ ХЕДЕРА
9669     ===================================================== */
9670
9671  function getHeaderBottom(
9672    trigger
9673  ) {
9674
9675    /*
9676      Находим Zero Block,
9677      внутри которого расположена кнопка.
9678    */
9679    const zeroBlock =
9680      trigger.closest(
9681        '.t396'
9682      );
9683
9684
9685    if (zeroBlock) {
9686
9687      const artboard =
9688        zeroBlock.querySelector(
9689          '.t396__artboard'
9690        );
9691
9692
9693      if (artboard) {
9694
9695        return artboard
9696          .getBoundingClientRect()
9697          .bottom;
9698      }
9699
9700
9701      return zeroBlock
9702        .getBoundingClientRect()
9703        .bottom;
9704    }
9705
9706
9707    /*
9708      Fallback:
9709      используем нижнюю границу
9710      самой кнопки.
9711    */
9712    return trigger
9713      .getBoundingClientRect()
9714      .bottom;
9715  }
9716
9717
9718  /* =====================================================
9719     ПОЗИЦИОНИРУЕМ ПАНЕЛЬ
9720     ===================================================== */
9721
9722  function positionSearchPanel() {
9723
9724    if (
9725      !searchPanel ||
9726      !activeTrigger
9727    ) {
9728
9729      return;
9730    }
9731
9732
9733    const headerBottom =
9734      getHeaderBottom(
9735        activeTrigger
9736      );
9737
9738
9739    const panelTop =
9740      Math.round(
9741        headerBottom +
9742        SEARCH_PANEL_TOP_GAP
9743      );
9744
9745
9746    searchPanel.style.top =
9747      panelTop + 'px';
9748  }
9749
9750
9751  /* =====================================================
9752     ОТКРЫВАЕМ
9753     ===================================================== */
9754
9755  function openSearchPanel(
9756    trigger
9757  ) {
9758
9759    /*
9760      НА МОБИЛКЕ НИЧЕГО НЕ ДЕЛАЕМ.
9761    */
9762    if (!isSearchDesktop()) {
9763
9764      return;
9765    }
9766
9767
9768    createSearchPanel();
9769
9770    createMobileSearchBackdrop();
9771
9772
9773    searchPanelMode =
9774      'desktop';
9775
9776
9777    searchPanel.classList.remove(
9778      'is-mobile'
9779    );
9780
9781
9782    mobileSearchBackdrop.classList.remove(
9783      'is-open'
9784    );
9785
9786
9787    document.body.classList.remove(
9788      'tour-search-mobile-open'
9789    );
9790
9791
9792    activeTrigger =
9793      trigger;
9794
9795
9796    /*
9797      Обновляем товары непосредственно
9798      перед открытием.
9799    */
9800    buildTourProductIndex();
9801
9802
9803    positionSearchPanel();
9804
9805
9806    searchPanel.classList.add(
9807      'is-open'
9808    );
9809
9810
9811    searchPanel.setAttribute(
9812      'aria-hidden',
9813      'false'
9814    );
9815
9816
9817    searchPanelOpen =
9818      true;
9819
9820
9821    /*
9822      Курсор сразу в поле.
9823    */
9824    requestAnimationFrame(
9825      function () {
9826
9827        searchInput.focus();
9828
9829        /*
9830          Если там уже был текст,
9831          сразу снова показываем варианты.
9832        */
9833        if (
9834          normalizeTourSearchText(
9835            searchInput.value
9836          )
9837        ) {
9838
9839          renderSearchResults();
9840        }
9841      }
9842    );
9843  }
9844
9845
9846  /* =====================================================
9847     ОТКРЫВАЕМ MOBILE SEARCH ИЗ ME403
9848     ===================================================== */
9849
9850  function openMobileSearchPanel(
9851    trigger
9852  ) {
9853
9854    if (!isSearchMobile()) {
9855
9856      return;
9857    }
9858
9859
9860    createSearchPanel();
9861
9862    createMobileSearchBackdrop();
9863
9864
9865    searchPanelMode =
9866      'mobile';
9867
9868
9869    activeTrigger =
9870      trigger;
9871
9872
9873    /*
9874      На мобильном panel НЕ позиционируется
9875      относительно хедера. Она всегда в верхней
9876      части viewport.
9877    */
9878    searchPanel.style.top =
9879      '';
9880
9881
9882    searchPanel.classList.add(
9883      'is-mobile'
9884    );
9885
9886
9887    buildTourProductIndex();
9888
9889
9890    mobileSearchBackdrop.classList.add(
9891      'is-open'
9892    );
9893
9894
9895    document.body.classList.add(
9896      'tour-search-mobile-open'
9897    );
9898
9899
9900    searchPanel.classList.add(
9901      'is-open'
9902    );
9903
9904
9905    searchPanel.setAttribute(
9906      'aria-hidden',
9907      'false'
9908    );
9909
9910
9911    searchPanelOpen =
9912      true;
9913
9914
9915    /*
9916      Важно делать focus прямо внутри пользовательского tap,
9917      иначе iOS может не открыть клавиатуру.
9918    */
9919    try {
9920
9921      searchInput.focus({
9922        preventScroll:
9923          true
9924      });
9925
9926    } catch (error) {
9927
9928      searchInput.focus();
9929    }
9930
9931
9932    requestAnimationFrame(
9933      updateCustomScrollbar
9934    );
9935
9936
9937    /*
9938      Fallback для ME403:
9939      штатно Tilda закрывает меню сама при клике по #ссылке.
9940      Если конкретная версия блока этого не сделала,
9941      аккуратно снимаем только её open-классы.
9942    */
9943    requestAnimationFrame(
9944      function () {
9945
9946        const mobileMenu =
9947          trigger.closest(
9948            '.r'
9949          );
9950
9951
9952        const t450 =
9953          mobileMenu
9954            ? mobileMenu.querySelector(
9955                '.t450'
9956              )
9957            : document.querySelector(
9958                '.t450.t450__menu_show'
9959              );
9960
9961
9962        const overlay =
9963          mobileMenu
9964            ? mobileMenu.querySelector(
9965                '.t450__overlay'
9966              )
9967            : document.querySelector(
9968                '.t450__overlay.t450__menu_show'
9969              );
9970
9971
9972        if (t450) {
9973
9974          t450.classList.remove(
9975            't450__menu_show'
9976          );
9977        }
9978
9979
9980        if (overlay) {
9981
9982          overlay.classList.remove(
9983            't450__menu_show'
9984          );
9985        }
9986
9987
9988        document.body.classList.remove(
9989          't450__body_menushowed'
9990        );
9991      }
9992    );
9993  }
9994
9995
9996  /* =====================================================
9997     ЗАКРЫВАЕМ
9998     ===================================================== */
9999
10000  function closeSearchPanel() {
10001
10002    if (!searchPanel) {
10003
10004      return;
10005    }
10006
10007
10008    /*
10009      Сначала снимаем focus с input,
10010      потом скрываем контейнер от assistive technology.
10011      Так не возникает предупреждения aria-hidden.
10012    */
10013    if (searchInput) {
10014
10015      searchInput.value =
10016        '';
10017
10018      searchInput.blur();
10019    }
10020
10021
10022    if (searchResults) {
10023
10024      setSearchResultsOpen(
10025        false
10026      );
10027
10028      searchResults.innerHTML =
10029        '';
10030    }
10031
10032
10033    currentMatches =
10034      [];
10035
10036
10037    searchPanel.classList.remove(
10038      'is-open'
10039    );
10040
10041
10042    searchPanel.setAttribute(
10043      'aria-hidden',
10044      'true'
10045    );
10046
10047
10048    searchPanel.classList.remove(
10049      'is-mobile'
10050    );
10051
10052
10053    if (mobileSearchBackdrop) {
10054
10055      mobileSearchBackdrop.classList.remove(
10056        'is-open'
10057      );
10058    }
10059
10060
10061    document.body.classList.remove(
10062      'tour-search-mobile-open'
10063    );
10064
10065
10066    searchPanelOpen =
10067      false;
10068
10069
10070    searchPanelMode =
10071      null;
10072
10073
10074    activeResultIndex =
10075      -1;
10076  }
10077
10078
10079  /* =====================================================
10080     TOGGLE
10081     ===================================================== */
10082
10083  function toggleSearchPanel(
10084    trigger
10085  ) {
10086
10087    if (!isSearchDesktop()) {
10088
10089      return;
10090    }
10091
10092
10093    if (
10094      searchPanelOpen &&
10095      activeTrigger === trigger
10096    ) {
10097
10098      closeSearchPanel();
10099
10100      return;
10101    }
10102
10103
10104    openSearchPanel(
10105      trigger
10106    );
10107  }
10108
10109
10110  /* =====================================================
10111     АКТИВНАЯ ПОДСКАЗКА
10112     ===================================================== */
10113
10114  function updateActiveSearchResult() {
10115
10116    if (!searchResults) {
10117
10118      return;
10119    }
10120
10121
10122    const buttons =
10123      searchResults
10124        .querySelectorAll(
10125          '.tour-search-panel__result'
10126        );
10127
10128
10129    buttons.forEach(
10130      function (
10131        button,
10132        index
10133      ) {
10134
10135        if (
10136          index ===
10137          activeResultIndex
10138        ) {
10139
10140          button.classList.add(
10141            'is-active'
10142          );
10143
10144
10145          button.scrollIntoView({
10146            block:
10147              'nearest'
10148          });
10149
10150        } else {
10151
10152          button.classList.remove(
10153            'is-active'
10154          );
10155        }
10156      }
10157    );
10158  }
10159
10160
10161  /* =====================================================
10162     РИСУЕМ ПОДСКАЗКИ
10163     ===================================================== */
10164
10165  function renderSearchResults() {
10166
10167    if (
10168      !searchInput ||
10169      !searchResults
10170    ) {
10171
10172      return;
10173    }
10174
10175
10176    const query =
10177      searchInput.value;
10178
10179
10180    const normalizedQuery =
10181      normalizeTourSearchText(
10182        query
10183      );
10184
10185
10186    searchResults.innerHTML =
10187      '';
10188
10189
10190    activeResultIndex =
10191      -1;
10192
10193
10194    /*
10195      Поле пустое:
10196      ничего не показываем.
10197    */
10198    if (!normalizedQuery) {
10199
10200      currentMatches =
10201        [];
10202
10203
10204      setSearchResultsOpen(
10205        false
10206      );
10207
10208
10209      return;
10210    }
10211
10212
10213    if (
10214      tourProductIndex.length ===
10215      0
10216    ) {
10217
10218      buildTourProductIndex();
10219    }
10220
10221
10222    currentMatches =
10223      findTourProducts(
10224        query
10225      );
10226
10227
10228    /*
10229      Ничего не найдено.
10230    */
10231    if (
10232      currentMatches.length ===
10233      0
10234    ) {
10235
10236      const empty =
10237        document.createElement(
10238          'div'
10239        );
10240
10241
10242      empty.className =
10243        'tour-search-panel__empty';
10244
10245
10246      empty.textContent =
10247        'Ничего не найдено';
10248
10249
10250      searchResults.appendChild(
10251        empty
10252      );
10253
10254
10255      setSearchResultsOpen(
10256        true
10257      );
10258
10259
10260      return;
10261    }
10262
10263
10264    currentMatches.forEach(
10265      function (
10266        product,
10267        index
10268      ) {
10269
10270        const button =
10271          document.createElement(
10272            'button'
10273          );
10274
10275
10276        button.type =
10277          'button';
10278
10279
10280        button.className =
10281          'tour-search-panel__result';
10282
10283
10284        button.setAttribute(
10285          'role',
10286          'option'
10287        );
10288
10289
10290        /*
10291          Фото слева.
10292        */
10293        const image =
10294          document.createElement(
10295            'img'
10296          );
10297
10298
10299        image.className =
10300          'tour-search-panel__result-image';
10301
10302
10303        image.alt =
10304          '';
10305
10306
10307        image.loading =
10308          'lazy';
10309
10310
10311        if (product.image) {
10312
10313          image.src =
10314            product.image;
10315
10316
10317          image.addEventListener(
10318            'load',
10319            updateCustomScrollbar,
10320            {
10321              once:
10322                true
10323            }
10324          );
10325
10326        } else {
10327
10328          image.classList.add(
10329            'is-empty'
10330          );
10331        }
10332
10333
10334        /*
10335          Название по центру.
10336        */
10337        const title =
10338          document.createElement(
10339            'span'
10340          );
10341
10342
10343        title.className =
10344          'tour-search-panel__result-title';
10345
10346
10347        title.textContent =
10348          product.title;
10349
10350
10351        /*
10352          Цена справа.
10353        */
10354        const price =
10355          document.createElement(
10356            'span'
10357          );
10358
10359
10360        price.className =
10361          'tour-search-panel__result-price';
10362
10363
10364        price.textContent =
10365          product.price || '';
10366
10367
10368        button.appendChild(
10369          image
10370        );
10371
10372
10373        button.appendChild(
10374          title
10375        );
10376
10377
10378        button.appendChild(
10379          price
10380        );
10381
10382
10383        /*
10384          Не теряем focus input
10385          до обработки выбора.
10386        */
10387        button.addEventListener(
10388          'mousedown',
10389          function (event) {
10390
10391            event.preventDefault();
10392          }
10393        );
10394
10395
10396        /*
10397          Нажали на вариант.
10398        */
10399        button.addEventListener(
10400          'click',
10401          function (event) {
10402
10403            event.preventDefault();
10404
10405            event.stopPropagation();
10406
10407
10408            searchInput.value =
10409              product.title;
10410
10411
10412            openNativeTourPopup(
10413              product
10414            );
10415          }
10416        );
10417
10418
10419        button.addEventListener(
10420          'mouseenter',
10421          function () {
10422
10423            activeResultIndex =
10424              index;
10425
10426
10427            updateActiveSearchResult();
10428          }
10429        );
10430
10431
10432        searchResults.appendChild(
10433          button
10434        );
10435      }
10436    );
10437
10438
10439    setSearchResultsOpen(
10440      true
10441    );
10442  }
10443
10444
10445  /* =====================================================
10446     КЛАВИАТУРА
10447     ===================================================== */
10448
10449  function handleSearchKeyboard(
10450    event
10451  ) {
10452
10453    /*
10454      ESC — закрыть.
10455    */
10456    if (
10457      event.key ===
10458      'Escape'
10459    ) {
10460
10461      event.preventDefault();
10462
10463      closeSearchPanel();
10464
10465      return;
10466    }
10467
10468
10469    /*
10470      Стрелка вниз.
10471    */
10472    if (
10473      event.key ===
10474      'ArrowDown'
10475    ) {
10476
10477      if (
10478        currentMatches.length ===
10479        0
10480      ) {
10481
10482        return;
10483      }
10484
10485
10486      event.preventDefault();
10487
10488
10489      activeResultIndex++;
10490
10491
10492      if (
10493        activeResultIndex >=
10494        currentMatches.length
10495      ) {
10496
10497        activeResultIndex =
10498          0;
10499      }
10500
10501
10502      updateActiveSearchResult();
10503
10504      return;
10505    }
10506
10507
10508    /*
10509      Стрелка вверх.
10510    */
10511    if (
10512      event.key ===
10513      'ArrowUp'
10514    ) {
10515
10516      if (
10517        currentMatches.length ===
10518        0
10519      ) {
10520
10521        return;
10522      }
10523
10524
10525      event.preventDefault();
10526
10527
10528      activeResultIndex--;
10529
10530
10531      if (
10532        activeResultIndex < 0
10533      ) {
10534
10535        activeResultIndex =
10536          currentMatches.length -
10537          1;
10538      }
10539
10540
10541      updateActiveSearchResult();
10542
10543      return;
10544    }
10545
10546
10547    /*
10548      ENTER:
10549      выбранный вариант,
10550      либо первый результат.
10551    */
10552    if (
10553      event.key ===
10554      'Enter'
10555    ) {
10556
10557      if (
10558        currentMatches.length ===
10559        0
10560      ) {
10561
10562        return;
10563      }
10564
10565
10566      event.preventDefault();
10567
10568
10569      const index =
10570        activeResultIndex >= 0
10571          ? activeResultIndex
10572          : 0;
10573
10574
10575      const product =
10576        currentMatches[
10577          index
10578        ];
10579
10580
10581      if (!product) {
10582
10583        return;
10584      }
10585
10586
10587      searchInput.value =
10588        product.title;
10589
10590
10591      openNativeTourPopup(
10592        product
10593      );
10594    }
10595  }
10596
10597
10598  /* =====================================================
10599     КЛИКИ
10600     ===================================================== */
10601
10602  document.addEventListener(
10603    'click',
10604    function (event) {
10605
10606      /*
10607        MOBILE:
10608        пункт ME403 со ссылкой #tour-search-mobile.
10609
10610        Tilda сама подписывает ME403 на a[href*="#"]
10611        и штатно закрывает t450 после клика по такому пункту.
10612        Здесь мы только отменяем переход к несуществующему якорю
10613        и открываем наш mobile UI.
10614      */
10615      const mobileTrigger =
10616        getMobileSearchTrigger(
10617          event.target
10618        );
10619
10620
10621      if (
10622        mobileTrigger &&
10623        isSearchMobile()
10624      ) {
10625
10626        event.preventDefault();
10627
10628
10629        /*
10630          НЕ вызываем stopPropagation:
10631          штатный обработчик ME403 должен получить клик
10632          и закрыть hamburger-menu.
10633        */
10634        removeMobileSearchHash();
10635
10636
10637        openMobileSearchPanel(
10638          mobileTrigger
10639        );
10640
10641
10642        return;
10643      }
10644
10645
10646      /*
10647        DESKTOP:
10648        Zero Block текст с CSS Class Name tour-search-slot.
10649      */
10650      const trigger =
10651        event.target.closest(
10652          SEARCH_TRIGGER_SELECTOR
10653        );
10654
10655
10656      if (
10657        trigger &&
10658        isSearchDesktop()
10659      ) {
10660
10661        event.preventDefault();
10662
10663        event.stopPropagation();
10664
10665
10666        toggleSearchPanel(
10667          trigger
10668        );
10669
10670
10671        return;
10672      }
10673
10674
10675      /*
10676        Клик внутри панели —
10677        НЕ закрываем.
10678      */
10679      if (
10680        searchPanel &&
10681        event.target.closest(
10682          '.tour-search-panel'
10683        )
10684      ) {
10685
10686        return;
10687      }
10688
10689
10690      /*
10691        Любой другой клик —
10692        закрываем.
10693      */
10694      if (searchPanelOpen) {
10695
10696        closeSearchPanel();
10697      }
10698    }
10699  );
10700
10701
10702  /* =====================================================
10703     RESIZE / SCROLL
10704     ===================================================== */
10705
10706  window.addEventListener(
10707    'resize',
10708    function () {
10709
10710      if (!searchPanelOpen) {
10711
10712        return;
10713      }
10714
10715
10716      /*
10717        Реальный переход desktop -> mobile
10718        или mobile -> desktop закрывает текущий UI.
10719
10720        Изменение высоты viewport из-за мобильной клавиатуры
10721        НЕ закрывает mobile-search.
10722      */
10723      if (
10724        searchPanelMode === 'desktop' &&
10725        !isSearchDesktop()
10726      ) {
10727
10728        closeSearchPanel();
10729
10730        return;
10731      }
10732
10733
10734      if (
10735        searchPanelMode === 'mobile' &&
10736        isSearchDesktop()
10737      ) {
10738
10739        closeSearchPanel();
10740
10741        return;
10742      }
10743
10744
10745      if (
10746        searchPanelMode === 'desktop'
10747      ) {
10748
10749        positionSearchPanel();
10750      }
10751
10752
10753      requestAnimationFrame(
10754        updateCustomScrollbar
10755      );
10756    }
10757  );
10758
10759
10760  /*
10761    Хедер fixed, поэтому при scroll его нижняя
10762    граница обычно не меняется.
10763
10764    Но пересчёт оставляем, чтобы всё было устойчиво.
10765  */
10766  window.addEventListener(
10767    'scroll',
10768    function () {
10769
10770      if (
10771        searchPanelOpen &&
10772        searchPanelMode === 'desktop' &&
10773        isSearchDesktop()
10774      ) {
10775
10776        positionSearchPanel();
10777      }
10778    },
10779    {
10780      passive:
10781        true
10782    }
10783  );
10784
10785
10786  /* =====================================================
10787     ПЕРВИЧНАЯ ИНДЕКСАЦИЯ
10788     ===================================================== */
10789
10790  function initialiseTourSearch() {
10791
10792    /*
10793      Панель заранее не создаём.
10794      Индекс товаров строим сразу.
10795    */
10796    buildTourProductIndex();
10797
10798
10799    /*
10800      Если браузер восстановил наш технический hash,
10801      не оставляем его в URL.
10802    */
10803    removeMobileSearchHash();
10804  }
10805
10806
10807  if (
10808    document.readyState ===
10809    'loading'
10810  ) {
10811
10812    document.addEventListener(
10813      'DOMContentLoaded',
10814      initialiseTourSearch
10815    );
10816
10817  } else {
10818
10819    initialiseTourSearch();
10820  }
10821
10822
10823  /*
10824    Tilda иногда дорисовывает каталог
10825    после DOMContentLoaded.
10826  */
10827  window.addEventListener(
10828    'load',
10829    function () {
10830
10831      buildTourProductIndex();
10832
10833
10834      setTimeout(
10835        buildTourProductIndex,
10836        800
10837      );
10838    }
10839  );
10840
10841})();
10842</script>
10842 
10842<script>
10843(function () {
10844  'use strict';
10845
10846
10847  /* =====================================================
10848     ПЛАВНЫЙ СКРОЛЛ ХЕДЕРА
10849     ===================================================== */
10850
10851  if ('scrollRestoration' in history) {
10852    history.scrollRestoration = 'manual';
10853  }
10854
10855
10856  const SCROLL_DURATION =
10857    1800;
10858
10859
10860  const DESKTOP_MIN_WIDTH =
10861    981;
10862
10863
10864  /*
10865    ТУРЫ:
10866    начало блока под хедером.
10867  */
10868  const TOURS_DESKTOP_TOP_OFFSET =
10869    130;
10870
10871
10872  /*
10873    ТУРЫ на мобильном:
10874    к началу блока.
10875  */
10876  const TOURS_MOBILE_TOP_OFFSET =
10877    0;
10878
10879
10880  /*
10881    О НАС / ОТЗЫВЫ / КОНТАКТЫ
10882    на десктопе центрируются.
10883  */
10884  const DESKTOP_CENTER_EXTRA_OFFSET_Y =
10885    0;
10886
10887
10888  /*
10889    На мобильном:
10890    начало обычного блока.
10891  */
10892  const MOBILE_TOP_OFFSET =
10893    0;
10894
10895
10896  let animationFrameId =
10897    null;
10898
10899
10900  function easeInOutCubic(t) {
10901
10902    return t < 0.5
10903      ? 4 * t * t * t
10904      : 1 -
10905        Math.pow(
10906          -2 * t + 2,
10907          3
10908        ) / 2;
10909  }
10910
10911
10912  function clamp(
10913    value,
10914    min,
10915    max
10916  ) {
10917
10918    return Math.min(
10919      Math.max(
10920        value,
10921        min
10922      ),
10923      max
10924    );
10925  }
10926
10927
10928  function isDesktop() {
10929
10930    return window.innerWidth >=
10931      DESKTOP_MIN_WIDTH;
10932  }
10933
10934
10935  function isToursLink(
10936    link
10937  ) {
10938
10939    const text =
10940      (link.textContent || '')
10941        .trim()
10942        .toLowerCase();
10943
10944
10945    return text === 'туры';
10946  }
10947
10948
10949  function getToursScrollPosition(
10950    target
10951  ) {
10952
10953    const rect =
10954      target.getBoundingClientRect();
10955
10956
10957    const targetTop =
10958      rect.top +
10959      window.scrollY;
10960
10961
10962    let destinationY;
10963
10964
10965    if (isDesktop()) {
10966
10967      destinationY =
10968        targetTop -
10969        TOURS_DESKTOP_TOP_OFFSET;
10970
10971    } else {
10972
10973      destinationY =
10974        targetTop -
10975        TOURS_MOBILE_TOP_OFFSET;
10976    }
10977
10978
10979    const maxScroll =
10980      Math.max(
10981        0,
10982        document
10983          .documentElement
10984          .scrollHeight -
10985        window.innerHeight
10986      );
10987
10988
10989    return clamp(
10990      destinationY,
10991      0,
10992      maxScroll
10993    );
10994  }
10995
10996
10997  function getDefaultScrollPosition(
10998    target
10999  ) {
11000
11001    const rect =
11002      target.getBoundingClientRect();
11003
11004
11005    const targetTop =
11006      rect.top +
11007      window.scrollY;
11008
11009
11010    let destinationY;
11011
11012
11013    if (isDesktop()) {
11014
11015      const targetCenter =
11016        targetTop +
11017        (
11018          rect.height /
11019          2
11020        );
11021
11022
11023      const viewportCenter =
11024        window.innerHeight /
11025        2;
11026
11027
11028      destinationY =
11029        targetCenter -
11030        viewportCenter -
11031        DESKTOP_CENTER_EXTRA_OFFSET_Y;
11032
11033    } else {
11034
11035      destinationY =
11036        targetTop -
11037        MOBILE_TOP_OFFSET;
11038    }
11039
11040
11041    const maxScroll =
11042      Math.max(
11043        0,
11044        document
11045          .documentElement
11046          .scrollHeight -
11047        window.innerHeight
11048      );
11049
11050
11051    return clamp(
11052      destinationY,
11053      0,
11054      maxScroll
11055    );
11056  }
11057
11058
11059  function smoothScrollTo(
11060    targetY
11061  ) {
11062
11063    if (
11064      animationFrameId !==
11065      null
11066    ) {
11067
11068      cancelAnimationFrame(
11069        animationFrameId
11070      );
11071    }
11072
11073
11074    const startY =
11075      window.scrollY;
11076
11077
11078    const distance =
11079      targetY -
11080      startY;
11081
11082
11083    const startTime =
11084      performance.now();
11085
11086
11087    function animation(
11088      currentTime
11089    ) {
11090
11091      const elapsed =
11092        currentTime -
11093        startTime;
11094
11095
11096      const progress =
11097        Math.min(
11098          elapsed /
11099          SCROLL_DURATION,
11100          1
11101        );
11102
11103
11104      const easedProgress =
11105        easeInOutCubic(
11106          progress
11107        );
11108
11109
11110      window.scrollTo(
11111        0,
11112        startY +
11113        distance *
11114        easedProgress
11115      );
11116
11117
11118      if (
11119        progress < 1
11120      ) {
11121
11122        animationFrameId =
11123          requestAnimationFrame(
11124            animation
11125          );
11126
11127      } else {
11128
11129        animationFrameId =
11130          null;
11131      }
11132    }
11133
11134
11135    animationFrameId =
11136      requestAnimationFrame(
11137        animation
11138      );
11139  }
11140
11141
11142  function removeHashFromUrl() {
11143
11144    history.replaceState(
11145      history.state,
11146      '',
11147      window.location.pathname +
11148      window.location.search
11149    );
11150  }
11151
11152
11153  function getTargetFromLink(
11154    link
11155  ) {
11156
11157    const rawHref =
11158      link.getAttribute(
11159        'href'
11160      );
11161
11162
11163    if (
11164      !rawHref ||
11165      rawHref === '#' ||
11166      rawHref.startsWith(
11167        'javascript:'
11168      )
11169    ) {
11170
11171      return null;
11172    }
11173
11174
11175    let url;
11176
11177
11178    try {
11179
11180      url =
11181        new URL(
11182          rawHref,
11183          window.location.href
11184        );
11185
11186    } catch (error) {
11187
11188      return null;
11189    }
11190
11191
11192    if (
11193      url.origin !==
11194      window.location.origin
11195    ) {
11196
11197      return null;
11198    }
11199
11200
11201    if (
11202      url.pathname !==
11203      window.location.pathname
11204    ) {
11205
11206      return null;
11207    }
11208
11209
11210    if (!url.hash) {
11211
11212      return null;
11213    }
11214
11215
11216    let id;
11217
11218
11219    try {
11220
11221      id =
11222        decodeURIComponent(
11223          url.hash.substring(1)
11224        );
11225
11226    } catch (error) {
11227
11228      id =
11229        url.hash.substring(1);
11230    }
11231
11232
11233    if (!id) {
11234
11235      return null;
11236    }
11237
11238
11239    return (
11240      document.getElementById(id) ||
11241      document.getElementsByName(id)[0] ||
11242      null
11243    );
11244  }
11245
11246
11247  document.addEventListener(
11248    'click',
11249    function (event) {
11250
11251      const link =
11252        event.target.closest(
11253          'a[href]'
11254        );
11255
11256
11257      if (!link) {
11258
11259        return;
11260      }
11261
11262
11263      const target =
11264        getTargetFromLink(
11265          link
11266        );
11267
11268
11269      if (!target) {
11270
11271        return;
11272      }
11273
11274
11275      event.preventDefault();
11276
11277
11278      removeHashFromUrl();
11279
11280
11281      requestAnimationFrame(
11282        function () {
11283
11284          let destinationY;
11285
11286
11287          if (
11288            isToursLink(
11289              link
11290            )
11291          ) {
11292
11293            destinationY =
11294              getToursScrollPosition(
11295                target
11296              );
11297
11298          } else {
11299
11300            destinationY =
11301              getDefaultScrollPosition(
11302                target
11303              );
11304          }
11305
11306
11307          smoothScrollTo(
11308            destinationY
11309          );
11310        }
11311      );
11312    }
11313  );
11314
11315
11316  const initialHash =
11317    window.location.hash;
11318
11319
11320  if (initialHash) {
11321
11322    let initialId;
11323
11324
11325    try {
11326
11327      initialId =
11328        decodeURIComponent(
11329          initialHash.substring(1)
11330        );
11331
11332    } catch (error) {
11333
11334      initialId =
11335        initialHash.substring(1);
11336    }
11337
11338
11339    removeHashFromUrl();
11340
11341
11342    function scrollToInitialHash() {
11343
11344      setTimeout(
11345        function () {
11346
11347          const target =
11348            document.getElementById(initialId) ||
11349            document.getElementsByName(initialId)[0] ||
11350            null;
11351
11352
11353          if (!target) {
11354
11355            return;
11356          }
11357
11358
11359          const rect =
11360            target
11361              .getBoundingClientRect();
11362
11363
11364          const targetTop =
11365            rect.top +
11366            window.scrollY;
11367
11368
11369          const offset =
11370            isDesktop()
11371              ? TOURS_DESKTOP_TOP_OFFSET
11372              : TOURS_MOBILE_TOP_OFFSET;
11373
11374
11375          const maxScroll =
11376            Math.max(
11377              0,
11378              document
11379                .documentElement
11380                .scrollHeight -
11381              window.innerHeight
11382            );
11383
11384
11385          const destinationY =
11386            clamp(
11387              targetTop -
11388              offset,
11389              0,
11390              maxScroll
11391            );
11392
11393
11394          smoothScrollTo(
11395            destinationY
11396          );
11397
11398        },
11399        150
11400      );
11401    }
11402
11403
11404    if (
11405      document.readyState ===
11406      'complete'
11407    ) {
11408
11409      scrollToInitialHash();
11410
11411    } else {
11412
11413      window.addEventListener(
11414        'load',
11415        scrollToInitialHash,
11416        {
11417          once:
11418            true
11419        }
11420      );
11421    }
11422  }
11423
11424})();
11425</script>
11425 <!-- nominify end --> </div> </div> </div> </div> <div id="rec4303067901" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> 
11425<script>
11426(function () {
11427
11428  'use strict';
11429
11430
11431  /* ============================================================
11432     PT METRIKA GOALS
11433     ============================================================ */
11434
11435  const METRIKA_COUNTER_ID =
11436    94209232;
11437
11438
11439  const LEAD_SUCCESS_GOAL =
11440    'lead_success';
11441
11442
11443  const MOBILE_CALL_GOAL =
11444    'call_intent_mobile';
11445
11446
11447  /* ============================================================
11448     METRIKA
11449     ============================================================ */
11450
11451  function sendMetrikaGoal(
11452    goalName
11453  ) {
11454
11455    if (
11456      typeof window.ym !==
11457      'function'
11458    ) {
11459
11460      console.warn(
11461        '[PT Metrika] ym() недоступна. Цель не отправлена:',
11462        goalName
11463      );
11464
11465      return;
11466
11467    }
11468
11469
11470    window.ym(
11471      METRIKA_COUNTER_ID,
11472      'reachGoal',
11473      goalName
11474    );
11475
11476
11477    console.log(
11478      '[PT Metrika] Отправлена цель:',
11479      goalName
11480    );
11481
11482  }
11483
11484
11485  /* ============================================================
11486     SUCCESSFUL TILDA FORMS
11487     ============================================================
11488
11489     Одна общая логика для всех штатных форм Tilda:
11490
11491     - верхняя форма;
11492     - BF901 "Позвоните мне" на ПК;
11493     - форма "Контакты";
11494     - корзина ST100.
11495
11496     Срабатывает ТОЛЬКО после реальной успешной отправки.
11497     ============================================================ */
11498
11499  function initialiseSuccessfulFormsGoal() {
11500
11501    document.addEventListener(
11502      'tildaform:aftersuccess',
11503      function (
11504        event
11505      ) {
11506
11507        const form =
11508          event.target;
11509
11510
11511        if (
11512          !form
11513          ||
11514          form.nodeType !== 1
11515        ) {
11516
11517          return;
11518
11519        }
11520
11521
11522        if (
11523          !form.matches(
11524            '.js-form-proccess'
11525          )
11526        ) {
11527
11528          return;
11529
11530        }
11531
11532
11533        sendMetrikaGoal(
11534          LEAD_SUCCESS_GOAL
11535        );
11536
11537      }
11538    );
11539
11540  }
11541
11542
11543  /* ============================================================
11544     MOBILE BF901 CALL BUTTON
11545     ============================================================
11546
11547     В живом DOM BF901 кликабельный элемент:
11548
11549     button.t651__btn
11550
11551     На ПК эта кнопка открывает popup-форму.
11552     На мобильном Tilda использует эту же кнопку
11553     для запуска сценария звонка.
11554
11555     Поэтому считаем call_intent_mobile только
11556     на мобильном устройстве.
11557     ============================================================ */
11558
11559  function isMobileDevice() {
11560
11561    /*
11562      Сначала используем собственный mobile-флаг Tilda.
11563    */
11564    if (
11565      typeof window.isMobile ===
11566      'boolean'
11567    ) {
11568
11569      return window.isMobile;
11570
11571    }
11572
11573
11574    /*
11575      Fallback на случай, если Tilda-флаг недоступен.
11576    */
11577    return window.matchMedia(
11578      '(max-width: 980px)'
11579    ).matches;
11580
11581  }
11582
11583
11584  function initialiseMobileCallGoal() {
11585
11586    document.addEventListener(
11587      'click',
11588      function (
11589        event
11590      ) {
11591
11592        if (
11593          !isMobileDevice()
11594        ) {
11595
11596          return;
11597
11598        }
11599
11600
11601        if (
11602          !event.target
11603          ||
11604          typeof event.target.closest !==
11605          'function'
11606        ) {
11607
11608          return;
11609
11610        }
11611
11612
11613        /*
11614          Именно кнопка штатного BF901.
11615        */
11616        const callbackButton =
11617          event.target.closest(
11618            '.t651__btn'
11619          );
11620
11621
11622        if (!callbackButton) {
11623
11624          return;
11625
11626        }
11627
11628
11629        /*
11630          Дополнительная проверка:
11631          кнопка действительно находится внутри BF901/t651.
11632        */
11633        const callbackBlock =
11634          callbackButton.closest(
11635            '.t651'
11636          );
11637
11638
11639        if (!callbackBlock) {
11640
11641          return;
11642
11643        }
11644
11645
11646        sendMetrikaGoal(
11647          MOBILE_CALL_GOAL
11648        );
11649
11650      },
11651
11652      /*
11653        Capture=true:
11654        наш обработчик успевает сообщить Метрике о клике
11655        до того, как Tilda передаст управление системному звонку.
11656      */
11657      true
11658    );
11659
11660  }
11661
11662
11663  /* ============================================================
11664     INIT
11665     ============================================================ */
11666
11667  function initialisePtMetrikaGoals() {
11668
11669    initialiseSuccessfulFormsGoal();
11670
11671    initialiseMobileCallGoal();
11672
11673  }
11674
11675
11676  if (
11677    document.readyState ===
11678    'loading'
11679  ) {
11680
11681    document.addEventListener(
11682      'DOMContentLoaded',
11683      initialisePtMetrikaGoals
11684    );
11685
11686  } else {
11687
11688    initialisePtMetrikaGoals();
11689
11690  }
11691
11692})();
11693</script>
11693 <!-- nominify end --> </div> </div> </div> </div> <div id="rec612653494" class="r t-rec" style=" " data-record-type="390"> <div class="t390"> <div
11694class="t-popup" data-tooltip-hook="#popup:infoblock"
11695role="dialog"
11696aria-modal="true"
11697tabindex="-1"
11698aria-label="Политика конфиденциальности"> <div class="t-popup__close t-popup__block-close"> <button
11699type="button"
11700class="t-popup__close-wrapper t-popup__block-close-button"
11701aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#fff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_9" style="background-color:#fbfbf9;"> <div class="t390__wrapper t-align_left"> <div class="t390__title t-heading t-heading_lg" id="popuptitle_612653494">Политика конфиденциальности</div> <div class="t390__descr t-descr t-descr_xs"><div style="font-size: 22px;" data-customstyle="yes">Настоящая Политика конфиденциальности персональной информации (далее — Политика) действует в отношении всей информации, которую сайт «Индивидуальные экскурсии» может получить о пользователе во время использования им сайта personaltourskmv.ru.<br /><br />Использование сайта personaltourskmv.ru означает ознакомление пользователя с настоящей Политикой и указанными в ней условиями обработки его персональной информации.<br /><br />В случаях, когда для обработки персональных данных законодательством Российской Федерации требуется согласие пользователя, такое согласие предоставляется пользователем отдельно посредством соответствующей формы на сайте.<br /><br /><strong>1. Персональная информация пользователей, которую получает и обрабатывает сайт personaltourskmv.ru </strong><br /><strong></strong><br /><strong>1.1. В рамках настоящей Политики под «персональной информацией пользователя» понимаются: </strong><br /><br /><strong>1.1.1.</strong><br />Персональная информация, которую пользователь предоставляет о себе самостоятельно при заполнении форм на сайте, направлении заявки, бронировании или заказе услуг, обращении через формы обратной связи, а также при оставлении отзыва.<br /><br /><strong>1.1.2.</strong><br />Данные, которые автоматически передаются сайту personaltourskmv.ru в процессе его использования с помощью установленного на устройстве пользователя программного обеспечения, в том числе IP-адрес, информация из cookie, информация о браузере пользователя или иной программе, с помощью которой осуществляется доступ к сайту, время доступа, адрес запрашиваемой страницы.<br /><br /><strong>1.1.3.</strong><br />Данные, которые предоставляются сайту в целях обработки заявок, бронирования и окаÐ
11701·Ð°Ð½Ð¸Ñ услуг, связи с пользователем, получения обратной связи и отзывов и/или предоставления иных услуг и возможностей посетителям сайта в соответствии с деятельностью настоящего ресурса:<br /><ul><li data-list="bullet">имя пользователя;</li><li data-list="bullet">фамилия пользователя;</li><li data-list="bullet">отчество пользователя;</li><li data-list="bullet">адрес пользователя — в случаях, когда он необходим для оказания услуги;</li><li data-list="bullet">телефон пользователя;</li><li data-list="bullet">адрес электронной почты;</li><li data-list="bullet">текст обращения или отзыва;</li><li data-list="bullet">оценка услуги, указанная пользователем при оставлении отзыва.</li></ul>Обрабатываются только те данные из указанного перечня, которые фактически предоставляются пользователем либо необходимы для соответствующей цели обработки.<br /><br /><strong>1.2. </strong><br />Настоящая Политика применима только к сайту personaltourskmv.ru и не контролирует и не несёт ответственность за сайты третьих лиц, на которые пользователь может перейти по ссылкам, доступным на сайте personaltourskmv.ru.<br />На таких сайтах у пользователя может собираться или запрашиваться иная персональная информация, а также могут совершаться иные действия.<br /><br /><strong>1.3. </strong><br />Сайт в общем случае не проверяет достоверность персональной информации, предоставляемой пользователями, и не осуществляет контроль за их дееспособностью.<br />Однако сайт personaltourskmv.ru исходит из того, что пользователь предоставляет достоверную и достаточную персональную информацию по вопросам, предлагаемым в формах настоящего ресурса, и поддерживает эту информацию в актуальном состоянии.<br /><br /><strong>2. Цели сбора и обработки персональной информации пользователей </strong><br /><br /><strong>2.1.</strong><br />Сайт собирает и хранит только те персональные данные, которые необходимы для:<br /><ul><li data-list="bullet">обработки обращений и заявок пользователей;</li><li data-list="bullet">организации бронирования и оказания услуг;</li><li data-list="bullet">связи с пользователями;</li><li data-list="bullet">предоставления информации об экскурсиях, поездках и иных оказываемых услугах;</li><li data-list="bullet">получения обратной связи;</li><li data-list="bullet">сбора, хранения и отображения отзывов;</li><li data-list="bullet">обеспечения функционирования и безопасности сайта personaltourskmv.ru.</li></ul><br /><strong>2.2. Персональная информация пользователя может использоваться в следующих целях:</strong><br /><br /><strong>2.2.1.</strong><br />Связь с пользователем, в том числе направление уведомлений, запросов и информации, касающихся использования сайта, окаÐ
11701·Ð°Ð½Ð¸Ñ услуг, а также обработка запросов, заявок и обращений пользователя.<br /><br /><strong>2.2.2.</strong><br />Обработка заявок пользователя, организация бронирования и оказание заказанных пользователем услуг.<br /><strong>2.2.3.</strong><br />Получение обратной связи пользователя об оказанных услугах.<br /><strong>2.2.4.</strong><br />Сбор, хранение и отображение отзывов пользователей об оказанных услугах.<br />При публикации на сайте персональных данных пользователя в составе отзыва, включая имя пользователя, такая публикация осуществляется при наличии соответствующего законного основания.<br />В случаях, когда законодательством Российской Федерации требуется согласие на обработку персональных данных, разрешённых субъектом персональных данных для распространения, такое согласие предоставляется отдельно от иных согласий пользователя.<br /><br /><strong>2.2.5.</strong><br />Обеспечение работоспособности и безопасности сайта, предотвращение спама, злоупотреблений, автоматизированных атак и иных неправомерных действий.<br /><strong>2.2.6.</strong><br />При использовании на сайте отзывов, первоначально размещённых пользователями на сторонних интернет-площадках, обработка и отображение содержащихся в них данных осуществляются только при наличии соответствующего правового основания и с учётом условий использования соответствующей интернет-площадки.<br /><br /><strong>3. Условия обработки персональной информации пользователя и её передачи третьим лицам </strong><br /><br /><strong>3.1.</strong><br />Сайт personaltourskmv.ru хранит и обрабатывает персональную информацию пользователей в соответствии с требованиями законодательства Российской Федерации, настоящей Политикой и правилами применяемых для работы сайта информационных систем и сервисов.<br />Для хранения и обработки персональных данных используется инфраструктура, размещённая на территории Российской Федерации.<br />При сборе персональных данных граждан Российской Федерации посредством сайта запись, систематизация, накопление, хранение, уточнение и извлечение таких персональных данных осуществляются с использованием баз данных, находящихся на территории Российской Федерации, за исключением случаев, прямо предусмотренных законодательством Российской Федерации.<br /><br /><strong>3.2.</strong><br />В отношении персональной информации пользователя сохраняется её конфиденциальность, кроме случаев добровольного предоставления пользователем информации о себе для общего доступа или распространения неограниченному кругу лиц в установленном законодательством порядке.<br /><br /><strong>3.3. Сайт personaltourskmv.ru вправе передать персональную информацию пользователя третьим лицам в следующих случаях:</strong><br /><br /><strong>3.3.1.</strong><br />Пользователь выразил своё согласие на такие действия в случаях, когда получение такого согласия требуется законодательством Российской Федерации.<br /><br /><strong>3.3.2.</strong><br />Передача необходима в рамках использования пользователем сайта personaltourskmv.ru либо для предоставления товаров и/или окаÐ
11701·Ð°Ð½Ð¸Ñ услуги пользователю.<br /><br /><strong>3.3.3.</strong><br />Передача предусмотрена российским или иным применимым законодательством в рамках установленной законодательством процедуры.<br /><br /><strong>3.3.4.</strong><br />В целях обеспечения возможности защиты прав и законных интересов сайта personaltourskmv.ru или третьих лиц в случаях, когда пользователь нарушает условия использования сайта либо требования законодательства Российской Федерации.<br /><br /><strong>3.4.</strong><br />Для технического обеспечения работы сайта, хранения информации и функционирования отдельных сервисов обработка персональных данных может осуществляться с использованием привлечённых информационных систем и сервисов.<br />Лица, которым поручается обработка персональных данных, обязаны обеспечивать конфиденциальность и безопасность персональных данных в соответствии с требованиями законодательства Российской Федерации и условиями соответствующего поручения на обработку персональных данных.<br /><br /><strong>3.5.</strong><br />Персональные данные могут подвергаться операциям записи, систематизации, накопления, хранения, уточнения, извлечения, использования, удаления и иным операциям, необходимым для функционирования сайта, обработки заявок и работы системы отзывов.<br />Доступ к данным предоставляется только в объёме, необходимом для выполнения соответствующих функций.<br /><br /><strong>3.6.</strong><br />Отзывы, полученные непосредственно через сайт personaltourskmv.ru, могут отображаться на сайте вместе с указанным пользователем именем, текстом отзыва, оценкой и датой публикации при наличии предусмотренного законодательством основания для такого распространения.<br />Пользователь вправе потребовать прекращения распространения его персональных данных, удаления либо обезличивания опубликованной информации в случаях и порядке, предусмотренных законодательством Российской Федерации.<br /><br /><strong>4. Сроки обработки и хранения персональных данных</strong><br /><strong> </strong><br /><strong>4.1.</strong><br />Персональные данные пользователей обрабатываются и хранятся не дольше, чем этого требуют цели их обработки, если иной срок хранения не предусмотрен законодательством Российской Федерации, договором с пользователем либо иным законным основанием.<br /><br /><strong>4.2.</strong><br />Персональные данные, полученные при направлении заявок, бронирований и обращений, могут храниться в течение срока, необходимого для обработки соответствующей заявки или обращения, окаÐ
11701·Ð°Ð½Ð¸Ñ услуги, исполнения обязательств перед пользователем и разрешения возможных спорных вопросов.<br /><br /><strong>4.3.</strong><br />Персональные данные, связанные с отзывами пользователей, могут обрабатываться в течение периода размещения соответствующего отзыва либо до получения требования пользователя о прекращении обработки или распространения персональных данных, если отсутствуют иные законные основания для продолжения их обработки.<br /><br /><strong>4.4.</strong><br />При достижении целей обработки персональных данных либо при утрате необходимости в их достижении персональные данные подлежат уничтожению или обезличиванию в порядке и сроки, установленные законодательством Российской Федерации, если отсутствует иное законное основание для продолжения их обработки.<br /><br /><strong>5. Права пользователя</strong> <br /><br /><strong>5.1.</strong><br />Пользователь вправе получать предусмотренные законодательством Российской Федерации сведения об обработке своих персональных данных, а также требовать их уточнения, блокирования или уничтожения при наличии предусмотренных законом оснований.<br /><br /><strong>5.2.</strong><br />Пользователь вправе отозвать ранее предоставленное согласие на обработку персональных данных в порядке, предусмотренном законодательством Российской Федерации.<br />Отзыв согласия не влияет на законность обработки персональных данных, осуществлённой до момента получения отзыва согласия, и не препятствует дальнейшей обработке в случаях, когда для неё имеются иные предусмотренные законодательством основания.<br /><br /><strong>5.3.</strong><br />Пользователь вправе потребовать прекращения распространения персональных данных, ранее разрешённых им для распространения, в порядке, предусмотренном законодательством Российской Федерации.<br /><br /><strong>6. Защита персональных данных</strong> <br /><br /><strong>6.1.</strong><br />При обработке персональных данных принимаются необходимые правовые, организационные и технические меры для защиты персональных данных пользователей от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, предоставления, распространения персональных данных, а также иных неправомерных действий.<br /><br /><strong>6.2.</strong><br />Доступ к информационным системам, содержащим персональные данные, предоставляется только лицам и техническим средствам, которым такой доступ необходим для выполнения соответствующих функций.<br /><br /><strong>6.3.</strong><br />Для защиты серверных компонентов системы могут применяться разграничение прав доступа, защищённые соединения, средства аутентификации, журналирование действий, резервирование и иные технические и организационные меры.<br /><br /><strong>7. Использование файлов cookie и технической информации<
11701/strong> <br /><br /><strong>7.1.</strong><br />Сайт personaltourskmv.ru может использовать файлы cookie и иные аналогичные технологии, необходимые для корректной работы сайта, сохранения пользовательских настроек, обеспечения безопасности и получения технической информации об использовании сайта.<br /><br /><strong>7.2.</strong><br />Пользователь может ограничить или отключить использование файлов cookie средствами используемого браузера. При этом отдельные функции сайта могут работать некорректно.<br /><br /><strong>8. Изменение Политики конфиденциальности</strong><br /><br /><strong>8.1.</strong><br />В настоящую Политику могут вноситься изменения в случае изменения законодательства Российской Федерации, способов обработки персональных данных, используемых информационных систем или функциональности сайта.<br /><br /><strong>8.2.</strong><br />Новая редакция Политики вступает в силу с момента её размещения на сайте personaltourskmv.ru, если иное не предусмотрено новой редакцией Политики.</div></div> </div> </div> </div> </div> 
11701<script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec612653494');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('612653494');});});</script>
11701 </div> <div id="rec599976277" class="r t-rec" style=" " data-animationappear="off" data-record-type="651"> <!-- T651 --> <div class="t651"> <button type="button" class="t651__btn" style=""> <div class="t651__btn-text t-name t-name_xs">Заказать</div> <div class="t651__btn_wrapper t651__btn_animate" style="background:#f2931d;"> <svg role="presentation" class="t651__icon" style="fill:#ffffff;" xmlns="http://www.w3.org/2000/svg" width="30px" height="30px" viewBox="0 0 19.3 20.1"> <path d="M4.6 7.6l-.5-.9 2-1.2L4.6 3l-2 1.3-.6-.9 2.9-1.7 2.6 4.1"/> <path d="M9.9 20.1c-.9 0-1.9-.3-2.9-.9-1.7-1-3.4-2.7-4.7-4.8-3-4.7-3.1-9.2-.3-11l.5.9C.2 5.7.4 9.7 3 13.9c1.2 2 2.8 3.6 4.3 4.5 1.1.6 2.7 1.1 4.1.3l1.9-1.2L12 15l-2 1.2c-1.2.7-2.8.3-3.5-.8l-3.2-5.2c-.7-1.2-.4-2.7.8-3.5l.5.9c-.7.4-.9 1.3-.5 2l3.2 5.2c.4.7 1.5.9 2.2.5l2.8-1.7 2.6 4.1-2.8 1.7c-.7.5-1.4.7-2.2.7zM13.7 11.3l-.9-.3c.4-1.1.2-2.2-.4-3.1-.6-1-1.7-1.6-2.8-1.7l.1-1c1.5.1 2.8.9 3.6 2.1.7 1.2.9 2.7.4 4z"/> <path d="M16.5 11.9l-1-.3c.5-1.8.2-3.7-.8-5.3-1-1.6-2.7-2.6-4.7-2.9l.1-1c2.2.3 4.2 1.5 5.4 3.3 1.2 1.9 1.6 4.1 1 6.2z"/> <path d="M18.9 12.5l-1-.3c.7-2.5.2-5.1-1.1-7.2-1.4-2.2-3.7-3.6-6.3-4l.1-1c2.9.4 5.4 2 7 4.4 1.6 2.4 2.1 5.3 1.3 8.1z"/> </svg> <svg role="presentation" class="t651__icon-close" width="16px" height="16px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#000" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </div> </button> <div class="t651__popup" data-track-popup='/tilda/popup/rec599976277/opened'> <div class="t651__popup-container" style=""> <div class="t651__wrapper"> <div class="t651__title t-name t-name_xl">
11702Оставьте свой номер телефона и мы свяжемся с вами!
11703</div> <form id="form599976277" name='form599976277' role="form" action='https://forms.tildacdn.com/procces/' method='POST' data-formactiontype="2" data-inputbox=".t651__blockinput" class="js-form-proccess "> <input type="hidden" name="formservices[]" value="db44e47e746f78b5644c6551a0777971" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="6380486f3b28b35680f9f0a3dda0c8e1" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="a2180241862c90aa2166b1589a2e2af3" class="js-formaction-services"> <div class="t651__input-container"> <div class="t651__allert-wrapper"> <div class="js-errorbox-all t651__blockinput-errorbox t-form__errorbox-text" style="display:none;">
11703 <div class="t651__blockinput-errors-text t-descr t-descr_xs"> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-all"></p> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-req"></p> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-email"></p> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-name"></p> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-phone"></p> <p class="t651__blockinput-errors-item js-rule-error js-rule-error-string"></p> </div> </div> <div class="js-successbox t651__blockinput-success t-text t-text_md" style="display:none;"> <div class="t651__success-icon"> <svg role="img" width="50px" height="50px" viewBox="0 0 50 50"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="#222"> <path d="M25.0982353,49.2829412 C11.5294118,49.2829412 0.490588235,38.2435294 0.490588235,24.6752941 C0.490588235,11.1064706 11.53,0.0670588235 25.0982353,0.0670588235 C38.6664706,0.0670588235 49.7058824,11.1064706 49.7058824,24.6752941 C49.7058824,38.2441176 38.6664706,49.2829412 25.0982353,49.2829412 L25.0982353,49.2829412 Z M25.0982353,1.83176471 C12.5023529,1.83176471 2.25529412,12.0794118 2.25529412,24.6752941 C2.25529412,37.2705882 12.5023529,47.5182353 25.0982353,47.5182353 C37.6941176,47.5182353 47.9411765,37.2705882 47.9411765,24.6752941 C47.9411765,12.0794118 37.6941176,1.83176471 25.0982353,1.83176471 L25.0982353,1.83176471 Z"></path> <path d="M22.8435294,30.5305882 L18.3958824,26.0829412 C18.0511765,25.7382353 18.0511765,25.18 18.3958824,24.8352941 C18.7405882,24.4905882 19.2988235,24.4905882 19.6435294,24.8352941 L22.8429412,28.0347059 L31.7282353,19.1488235 C32.0729412,18.8041176 32.6311765,18.8041176 32.9758824,19.1488235 C33.3205882,19.4935294 33.3205882,20.0517647 32.9758824,20.3964706 L22.8435294,30.5305882 L22.8435294,30.5305882 Z"></path> </g> </g> </svg> </div>
11703 <div class="t651__success-message t-descr t-descr_sm">
11704Данные успешно отправлены. Спасибо! </div> </div> </div> <div class="t651__input-wrapper"> <div class="t651__blockinput"> <input type="text" id="input_599976277" name="phone" class="t651__input t-input js-tilda-rule " value="" placeholder="+7 (928)000-00-00" data-tilda-req="1" data-tilda-rule="phone" style=" border:1px solid #d1d1d1; "> </div> <div class="t651__blockbutton"> <button
11705class="t-submit t-btnflex t-btnflex_type_submit t-btnflex_smd t651__submit"
11706type="submit"><span class="t-btnflex__text">Позвоните мне</span> <style>#rec599976277 .t-btnflex.t-btnflex_type_submit{background-color:#f2931d;--border-width:0px;border-style:none !important;border-radius:7px;box-shadow:none !important;text-transform:uppercase;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}</style></button> </div> </div> </div> </form> <div class="t651__additional-info">
11706 <div class="t651__text t-descr t-descr_sm">Или вы можете позвонить нам сами:</div> <div class="t651__phone t-descr t-descr_sm">+7 (928) 316-55-66</div> <div class="t651__bottom-text t-text t-text_xs">Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c <a href="#popup:infoblock" rel="nofollow" style="color: rgb(255, 133, 98); box-shadow: none; text-decoration: none; border-bottom: 2px solid rgb(255, 133, 98);">политикой конфиденциальности</a></div> </div> </div> </div> </div> </div> <style></style> 
11706<script type="text/javascript">t_onReady(function() {t_onFuncLoad('t651_initPopup',function() {t651_initPopup('599976277');});});</script>
11706 </div> <!--footer--> <footer id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="6804315" data-tilda-page-id="154104356" data-tilda-formskey="667f45b9dcc28fb788688f89c6804315" data-tilda-lazy="yes" data-tilda-project-lang="RU" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-project-country="RU"> <div id="rec2469469061" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec2469469061 .t396__artboard{height:180px;background-color:#2d2a2a;}#rec2469469061 .t396__filter{height:180px;}#rec2469469061 .t396__carrier{height:180px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px){#rec2469469061 .t396__artboard,#rec2469469061 .t396__filter,#rec2469469061 .t396__carrier{}#rec2469469061 .t396__filter{}#rec2469469061 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:959px){#rec2469469061 .t396__artboard,#rec2469469061 .t396__filter,#rec2469469061 .t396__carrier{height:230px;}#rec2469469061 .t396__filter{}#rec2469469061 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:639px){#rec2469469061 .t396__artboard,#rec2469469061 .t396__filter,#rec2469469061 .t396__carrier{}#rec2469469061 .t396__filter{}#rec2469469061 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:479px){#rec2469469061 .t396__artboard,#rec2469469061 .t396__filter,#rec2469469061 .t396__carrier{height:370px;}#rec2469469061 .t396__filter{}#rec2469469061 .t396__carrier{background-attachment:scroll;}}#rec2469469061 .tn-elem[data-elem-id="1685183901178"]{z-index:3;top:43px;left:calc(50% - 600px + 70px);width:132px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685183901178"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec2469469061 .tn-elem[data-elem-id="1685183901178"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685183901178"]{display:table;left:calc(50% - 480px + 10px);width:110px;height:auto;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685183901178"]{display:table;top:4px;left:calc(50% - 320px + 274px);width:92px;height:auto;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685183901178"]{display:table;left:calc(50% - 240px + 194px);height:auto;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685183901178"]{display:table;top:7px;left:calc(50% - 160px + 114px);height:auto;}}#rec2469469061 .tn-elem[data-elem-id="1685782800170"]{color:#ffffff;text-align:center;z-index:3;top:74px;left:calc(50% - 600px + 384px);width:114px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782800170"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685782800170"]{display:table;top:69px;left:calc(50% - 480px + 301px);width:95px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782800170"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685782800170"]{display:table;top:79px;left:calc(50% - 320px + 141px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782800170"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685782800170"]{display:table;left:calc(50% - 240px + 61px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782800170"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685782800170"]{display:table;top:195px;left:calc(50% - 160px + 14px);width:px;height:auto;text-align:left;}#rec2469469061 .tn-elem[data-elem-id="1685782800170"] .tn-atom{white-space:normal;font-size:18px;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1685782835556"]{color:#ffffff;text-align:center;z-index:3;top:74px;left:calc(50% - 600px + 497px);width:114px;
11706height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782835556"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685782835556"]{display:table;top:69px;left:calc(50% - 480px + 395px);width:95px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782835556"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685782835556"]{display:table;top:79px;left:calc(50% - 320px + 235px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782835556"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685782835556"]{display:table;left:calc(50% - 240px + 155px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782835556"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685782835556"]{display:table;top:81px;left:calc(50% - 160px + 14px);width:px;height:auto;text-align:left;}#rec2469469061 .tn-elem[data-elem-id="1685782835556"] .tn-atom{white-space:normal;font-size:18px;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1685782838878"]{color:#ffffff;text-align:center;z-index:3;top:74px;left:calc(50% - 600px + 601px);width:114px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782838878"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685782838878"]{display:table;top:69px;left:calc(50% - 480px + 481px);width:95px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782838878"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685782838878"]{display:table;top:79px;left:calc(50% - 320px + 321px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782838878"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685782838878"]{display:table;left:calc(50% - 240px + 241px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782838878"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685782838878"]{display:table;top:119px;left:calc(50% - 160px + 14px);width:px;height:auto;text-align:left;}#rec2469469061 .tn-elem[data-elem-id="1685782838878"] .tn-atom{white-space:normal;font-size:18px;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1685782844457"]{color:#ffffff;text-align:center;z-index:3;top:74px;left:calc(50% - 600px + 701px);width:114px;
11706height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782844457"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685782844457"]{display:table;top:69px;left:calc(50% - 480px + 564px);width:95px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782844457"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685782844457"]{display:table;top:79px;left:calc(50% - 320px + 404px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782844457"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685782844457"]{display:table;left:calc(50% - 240px + 324px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685782844457"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685782844457"]{display:table;top:157px;left:calc(50% - 160px + 14px);width:px;height:auto;text-align:left;}#rec2469469061 .tn-elem[data-elem-id="1685782844457"] .tn-atom{white-space:normal;font-size:18px;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1685802560210"]{color:#ff8562;z-index:3;top:132px;left:calc(50% - 600px + 467px);width:241px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685802560210"] .tn-atom{vertical-align:middle;color:#ff8562;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1685802560210"]{display:table;top:121px;left:calc(50% - 480px + 370px);width:251px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685802560210"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1685802560210"]{display:table;left:calc(50% - 320px + 195px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685802560210"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1685802560210"]{display:table;left:calc(50% - 240px + 115px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685802560210"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1685802560210"]{display:table;top:226px;left:calc(50% - 160px + 13px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1685802560210"] .tn-atom{white-space:normal;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"]{color:#ffffff;z-index:3;top:56px;left:calc(50% - 600px + 942px);width:171px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:400;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"]{display:table;left:calc(50% - 480px + 942px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"]{display:table;left:calc(50% - 320px + 942px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"]{display:table;left:calc(50% - 240px + 942px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"]{display:table;left:calc(50% - 160px + 942px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050048000001"] .tn-atom{white-space:normal;background-size:cover;}}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"]{color:#ff8562;z-index:3;top:87px;left:calc(50% - 600px + 937px);width:175px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"] .tn-atom{vertical-align:middle;color:#ff8562;font-size:20px;font-family:var(--t-text-font,Arial);line-height:1.55;font-weight:700;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"]{display:table;left:calc(50% - 480px + 937px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"]{display:table;left:calc(50% - 320px + 937px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"]{display:table;left:calc(50% - 240px + 937px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:479px){#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"]{display:table;left:calc(50% - 160px + 937px);width:px;height:auto;}#rec2469469061 .tn-elem[data-elem-id="1790625050049000002"] .tn-atom{white-space:normal;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="2469469061" data-artboard-screens="320,480,640,960,1200" data-artboard-height="180" data-artboard-valign="center" data-artboard-upscale="window" data-artboard-height-res-320="370" data-artboard-height-res-640="230"> <div class="t396__carrier" data-artboard-recid="2469469061"></div> <div class="t396__filter" data-artboard-recid="2469469061"></div> <div class='t396__elem tn-elem tn-elem__24694690611685183901178' data-elem-id='1685183901178' data-elem-type='image' data-field-top-value="43" data-field-left-value="70" data-field-height-value="94" data-field-width-value="132" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-imagefit-value="auto" data-field-filewidth-value="1280" data-field-fileheight-value="907" data-field-heightmode-value="hug" data-field-top-res-320-value="7" data-field-left-res-320-value="114" data-field-height-res-320-value="65" data-field-left-res-480-value="194" data-field-top-res-640-value="4" data-field-left-res-640-value="274" data-field-width-res-640-value="92" data-field-left-res-960-value="10" data-field-width-res-960-value="110"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6137-3931-4134-b033-643465616437/logo-3rHFkVjR6-trans.png'
11707src='https://thb.tildacdn.com/tild6137-3931-4134-b033-643465616437/-/resize/20x/logo-3rHFkVjR6-trans.png'
11708alt='Поездки на Чёрное море. Экскурсии по Кавказ
11708у. Экскурсии на Чегемские водопады из Ессентуков.' imgfield='tn_img_1685183901178'
11709/> </div> </div> <div class='t396__elem tn-elem tn-elem__24694690611685782800170' data-elem-id='1685782800170' data-elem-type='text' data-field-top-value="74" data-field-left-value="384" data-field-height-value="31" data-field-width-value="114" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20" data-field-top-res-320-value="195" data-field-left-res-320-value="14" data-field-fontsize-res-320-value="18" data-field-left-res-480-value="61" data-field-top-res-640-value="79" data-field-left-res-640-value="141" data-field-top-res-960-value="69" data-field-left-res-960-value="301" data-field-width-res-960-value="95"> <div class='tn-atom'><a style="color: inherit" href="/">Главная</a></div> </div> <div class='t396__elem tn-elem tn-elem__24694690611685782835556' data-elem-id='1685782835556' data-elem-type='text' data-field-top-value="74" data-field-left-value="497" data-field-height-value="31" data-field-width-value="114" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20" data-field-top-res-320-value="81" data-field-left-res-320-value="14" data-field-fontsize-res-320-value="18" data-field-left-res-480-value="155" data-field-top-res-640-value="79" data-field-left-res-640-value="235" data-field-top-res-960-value="69" data-field-left-res-960-value="395" data-field-width-res-960-value="95"> <div class='tn-atom'><a style="color: inherit" href="#rec599918893">Туры</a></div> </div> <div class='t396__elem tn-elem tn-elem__24694690611685782838878' data-elem-id='1685782838878' data-elem-type='text' data-field-top-value="74" data-field-left-value="601" data-field-height-value="31" data-field-width-value="114" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20" data-field-top-res-320-value="119" data-field-left-res-320-value="14" data-field-fontsize-res-320-value="18" data-field-left-res-480-value="241" data-field-top-res-640-value="79" data-field-left-res-640-value="321" data-field-top-res-960-value="69" data-field-left-res-960-value="481" data-field-width-res-960-value="95"> <div class='tn-atom'><a style="color: inherit" href="#rec596853556">О нас</a></div> </div> <div class='t396__elem tn-elem tn-elem__24694690611685782844457' data-elem-id='1685782844457' data-elem-type='text' data-field-top-value="74" data-field-left-value="701" data-field-height-value="31" data-field-width-value="114" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20" data-field-top-res-320-value="157" data-field-left-res-320-value="14" data-field-fontsize-res-320-value="18" data-field-left-res-480-value="324" data-field-top-res-640-value="79" data-field-left-res-640-value="404" data-field-top-res-960-value="69" data-field-left-res-960-value="564" data-field-width-res-960-value="95"> <div class='tn-atom'><a style="color: inherit" href="#rec4183257101">Отзывы</a></div> </div> <div class='t396__elem tn-elem tn-elem__24694690611685802560210' data-elem-id='1685802560210' data-elem-type='text' data-field-top-value="132" data-field-left-value="467" data-field-height-value="31" data-field-width-value="241" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20" data-field-top-res-320-value="226" data-field-left-res-320-value="13" data-field-left-res-480-value="115" data-field-left-res-640-value="195" data-field-top-res-960-value="121" data-field-left-res-960-value="370" data-field-width-res-960-value="251"> <div class='tn-atom'field='tn_text_1685802560210'>[email protected]</div> </div> <div class='t396__elem tn-elem tn-elem__24694690611790625050048000001' data-elem-id='1790625050048000001' data-elem-type='text' data-field-top-value="56" data-field-left-value="942" data-field-height-value="31" data-field-width-value="171" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'field='tn_text_1790625050048000001'>По всем вопросам:</div> </div> <div class='t396__elem tn-elem tn-elem__24694690611790625050049000002' data-elem-id='1790625050049000002' data-elem-type='text' data-field-top-value="87" data-field-left-value="937" data-field-height-value="31" data-field-width-value="175" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="20"> <div class='tn-atom'field='tn_text_1790625050049000002'>+7 (928) 316-55-66</div> </div> </div> </div> 
11709<script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('2469469061');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('2469469061');});});</script>
11709 <!-- /T396 --> </div> <div id="rec2469469071" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec2469469071 .t396__artboard{height:49px;background-color:#ffffff;}#rec2469469071 .t396__filter{height:49px;}#rec2469469071 .t396__carrier{height:49px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px){#rec2469469071 .t396__artboard,#rec2469469071 .t396__filter,#rec2469469071 .t396__carrier{}#rec2469469071 .t396__filter{}#rec2469469071 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:959px){#rec2469469071 .t396__artboard,#rec2469469071 .t396__filter,#rec2469469071 .t396__carrier{}#rec2469469071 .t396__filter{}#rec2469469071 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:639px){#rec2469469071 .t396__artboard,#rec2469469071 .t396__filter,#rec2469469071 .t396__carrier{}#rec2469469071 .t396__filter{}#rec2469469071 .t396__carrier{background-attachment:scroll;}}@media screen and (max-width:479px){#rec2469469071 .t396__artboard,#rec2469469071 .t396__filter,#rec2469469071 .t396__carrier{height:69px;}#rec2469469071 .t396__filter{}#rec2469469071 .t396__carrier{background-attachment:scroll;}}#rec2469469071 .tn-elem[data-elem-id="1685786891942"]{color:#000000;text-align:center;z-index:3;top:10px;left:calc(50% - 600px + 517px);width:166px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786891942"] .tn-atom{vertical-align:middle;color:#000000;font-size:18px;font-family:'TildaSans',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469071 .tn-elem[data-elem-id="1685786891942"]{display:table;left:calc(50% - 480px + 385px);width:166px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786891942"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469071 .tn-elem[data-elem-id="1685786891942"]{display:table;top:10px;left:calc(50% - 320px + 257px);width:126px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786891942"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:639px){#rec2469469071 .tn-elem[data-elem-id="1685786891942"]{display:table;left:calc(50% - 240px + 184px);width:112px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786891942"] .tn-atom{white-space:normal;font-size:12px;background-size:cover;}}@media screen and (max-width:479px){#rec2469469071 .tn-elem[data-elem-id="1685786891942"]{display:table;top:50px;left:calc(50% - 160px + 104px);width:px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786891942"] .tn-atom{white-space:normal;background-size:cover;}}#rec2469469071 .tn-elem[data-elem-id="1685786940293"]{color:#000000;z-index:4;top:9px;left:calc(50% - 600px + 79px);width:283px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786940293"] .tn-atom{vertical-align:middle;color:#000000;font-size:18px;font-family:'TildaSans',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469071 .tn-elem[data-elem-id="1685786940293"]{display:table;left:calc(50% - 480px + 25px);width:271px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786940293"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469071 .tn-elem[data-elem-id="1685786940293"]{display:table;top:9px;left:calc(50% - 320px + 11px);width:199px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786940293"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:639px){#rec2469469071 .tn-elem[data-elem-id="1685786940293"]{display:table;left:calc(50% - 240px + 11px);width:169px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786940293"] .tn-atom{white-space:normal;font-size:12px;background-size:cover;}}@media screen and (max-width:479px){#rec2469469071 .tn-elem[data-elem-id="1685786940293"]{display:table;top:2px;left:calc(50% - 160px + 76px);width:px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786940293"] .tn-atom{white-space:normal;background-size:cover;}}#rec2469469071 .tn-elem[data-elem-id="1685786963475"]{color:#000000;z-index:5;top:10px;left:calc(50% - 600px + 948px);width:176px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786963475"] .tn-atom{vertical-align:middle;color:#000000;font-size:18px;font-family:'TildaSans',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec2469469071 .tn-elem[data-elem-id="1685786963475"]{display:table;left:calc(50% - 480px + 739px);width:196px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786963475"] .tn-atom{white-space:normal;background-size:cover;}}@media screen and (max-width:959px){#rec2469469071 .tn-elem[data-elem-id="1685786963475"]{display:table;top:10px;left:calc(50% - 320px + 493px);width:146px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786963475"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;}}@media screen and (max-width:639px){#rec2469469071 .tn-elem[data-elem-id="1685786963475"]{display:table;left:calc(50% - 240px + 353px);width:118px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786963475"] .tn-atom{white-space:normal;font-size:12px;background-size:cover;}}@media screen and (max-width:479px){#rec2469469071 .tn-elem[data-elem-id="1685786963475"]{display:table;top:26px;left:calc(50% - 160px + 101px);width:px;height:auto;}#rec2469469071 .tn-elem[data-elem-id="1685786963475"] .tn-atom{white-space:normal;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="2469469071" data-artboard-screens="320,480,640,960,1200" data-artboard-height="49" data-artboard-valign="center" data-artboard-upscale="window" data-artboard-height-res-320="69"> <div class="t396__carrier" data-artboard-recid="2469469071"></div> <div class="t396__filter" data-artboard-recid="2469469071"></div> <div class='t396__elem tn-elem tn-elem__24694690711685786891942' data-elem-id='1685786891942' data-elem-type='text' data-field-top-value="10" data-field-left-value="517" data-field-height-value="28" data-field-width-value="166" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="50" data-field-left-res-320-value="104" data-field-left-res-480-value="184" data-field-width-res-480-value="112" data-field-fontsize-res-480-value="12" data-field-top-res-640-value="10" data-field-left-res-640-value="257" data-field-width-res-640-value="126" data-field-fontsize-res-640-value="14" data-field-left-res-960-value="385" data-field-width-res-960-value="166"> <div class='tn-atom'field='tn_text_1685786891942'>Copyright © 2026</div> </div> <div class='t396__elem tn-elem tn-elem__24694690711685786940293' data-elem-id='1685786940293' data-elem-type='text' data-field-top-value="9" data-field-left-value="79" data-field-height-value="28" data-field-width-value="283" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="2" data-field-left-res-320-value="76" data-field-width-res-480-value="169" data-field-fontsize-res-480-value="12" data-field-top-res-640-value="9" data-field-left-res-640-value="11" data-field-width-res-640-value="199" data-field-fontsize-res-640-value="14" data-field-left-res-960-value="25" data-field-width-res-960-value="271"> <div class='tn-atom'><a style="color: inherit" href="#popup:infoblock">Политика конфиденциальности</a></div> </div> <div class='t396__elem tn-elem tn-elem__24694690711685786963475' data-elem-id='1685786963475' data-elem-type='text' data-field-top-value="10" data-field-left-value="948" data-field-height-value="28" data-field-width-value="176" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="26" data-field-left-res-320-value="101" data-field-left-res-480-value="353" data-field-width-res-480-value="118" data-field-fontsize-res-480-value="12" data-field-top-res-640-value="10" data-field-left-res-640-value="493" data-field-width-res-640-value="146" data-field-fontsize-res-640-value="14" data-field-left-res-960-value="739" data-field-width-res-960-value="196"> <div class='tn-atom'field='tn_text_1685786963475'>ANDRE TOUR 2026</div> </div> </div> </div> 
11709<script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('2469469071');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('2469469071');});});</script>
11709 <!-- /T396 --> </div> <div id="rec2469469101" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
11710.t-popup__container {
11711  border-radius: 30px 30px 30px 30px;
11712}
11713
11714/*Для BF501N, BF502N, BF503*/
11715.t-popup__container > .t-img {
11716  border-radius: 30px 30px 0px 0px;
11717}
11718.t-popup__container > .t1014__wrapper {
11719  border-radius: 0px 0px 30px 30px;
11720}
11721
11722</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec2469478371" class="r t-rec" style=" " data-animationappear="off" data-record-type="886"> <!-- T886 --> <div class="t886 t886_closed" data-storage-item="t886cookiename_6804315" style="left:20px;"> <div class="t886__wrapper" style="background-color:#ebebeb; width:600px;"> <div class="t886__text t-text t-text_xs t-valign_middle" field="text">Этот сайт использует файлы cookie для обеспечения наилучшего взаимодействия с пользователем.</div> <div
11723class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
11724type="button"><span class="t-btnflex__text">OK</span> <style>#rec2469478371 .t-btnflex.t-btnflex_type_button{color:#555555;background-color:#ebebeb;border-style:solid !important;border-color:#999999 !important;--border-width:1px;border-radius:5px;box-shadow:none !important;font-weight:500;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover){#rec2469478371 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover{color:#111111 !important;border-color:#111111 !important;background-color:#e8e8e8 !important;}#rec2469478371 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible{color:#111111 !important;border-color:#111111 !important;background-color:#e8e8e8 !important;}}</style></div> </div> </div> 
11724<script type="text/javascript">t_onReady(function() {t_onFuncLoad('t886_init',function() {t886_init('2469478371');});});</script>
11724 <style>#rec2469478371 .t886__text{text-align:left;}</style> <style>#rec2469478371 .t886__wrapper{box-shadow:0px 0px 5px rgba(0,0,0,0.1);}</style> <style>#rec2469478371 .t886__wrapper{border-radius:5px;}</style> </div> </footer> <!--/footer--> </div> <!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 94209232 --> 
11724<script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='94209232';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0","cmsCatalog":"1"}}},ecommerce:"dataLayer"});},2000);</script>
11724 <noscript><div><img src="https://mc.yandex.ru/watch/94209232" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> 
11724<script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
11725setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'72b43911a63c8fb22ca15f715443af43','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script>
11725 </body> </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.