PageSourceSearch

https://foto.ru/login

html foto.ru collected 2026-10-02 04:57:29 UTC 27,225 bytes, 160 lines download raw bytes

1<!DOCTYPE html><html lang="ru-RU"><head><title>Клуб Foto.ru работаем с 1998 года</title><meta charset="UTF-8"><meta name="description" content="Клуб Foto.ru"/><meta name="keywords" content="Клуб Foto.ru"/><meta name="yandex-verification" content="3af0d5e16deac7e1" /><meta name="google-site-verification" content="EPHXpVkv1yJMlnGYpRexK5lyArmXbWOsltDbnDruLgs" /><meta name="robots" content="index,follow"><link href="https://foto.ru/login" rel="canonical"><link rel="apple-touch-icon" sizes="180x180" href="/custom/foto/images/favicons/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/custom/foto/images/favicons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/custom/foto/images/favicons/favicon-16x16.png"><link rel="manifest" href="/custom/foto/images/favicons/site.webmanifest"><link rel="mask-icon" href="/custom/foto/images/favicons/safari-pinned-tab.svg" color="#5bbad5"><meta name="msapplication-TileColor" content="#da532c"><meta name="theme-color" content="#ffffff"><meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"><link href="/minify/b8a76af01b34796c93dcc6c04a29831d1aae02a9.css" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Inter&amp;family=Rubik:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400&amp;display=swap&amp;_v=20230917113541&amp;v=1" rel="stylesheet"><link href="/minify/c7704278ddff312e4b735b50aa7ae223d0fbe9da.css" rel="stylesheet">
1<script src="/minify/19c776dc751ee24aa2f62796f351b897a985a0ef.js"></script>
1 
1<script type="text/javascript">
2let csrfToken = 'onykM4BrxZdfeE0_N3fPE31ZqaKwvPfAh1q51Pf1lobaBsJixS6W2mwcCUZfPIxpBBLbm4HNsKPJEc62greh6Q==';
3let assetVersion = '5';
4</script>
4<style>
5:root {
6--bg-color-primary: #307ff5;
7--bg-color-secondary: #F6F6F6;
8--text-color: #000;
9--link-color: #000;
10--link-color-hover: #ADAEAE;
11--button-color: #EA1D2E;
12--button-color-hover: #83101a;
13--border-color-primary: #EA1D2E;
14--border-color-secondary: #E0E0E0;
15--toastr-success-color: #51A351;
16--toastr-error-color: #BD362F;
17}
18</style><!--[if lt IE 9]><p class="browserupgrade">Вы используете устаревший <strong>устаревший</strong> браузер. Пожалуйста <a href="//outdatedbrowser.com/ru">обновите ваш браузер</a> чтобы просматривать сайт.</p><![endif]-->
18<script>
19App.isUserLogged = ""
20</script>
20</head><body><div class="wrapper" id="wrapper"><header class="header" id="header"><div class="container"><div class="header__body"><div class="header__top top-header"><div class="top-header__left"><a class="top-header__logo" href="/"><picture><source srcset="/themes/foto/images/logo_pc.svg" media="(min-width: 1200px)"><source srcset="/themes/foto/images/logo_mobile.svg" media="(min-width: 300px)"><img src="/themes/foto/images/logo_pc.svg" alt="логотип"></picture></a><nav class="top-header__menu header-menu" data-da=".menu-mobile__body, 991.98, 0"><ul class="header-menu__list"><li class="header-menu__item js-coming-soon"><a class="header-menu__link js-coming-soon" href="/coming-soon"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-fotolaboratorii.svg" alt="Фотолаборатории" title="Фотолаборатории" width="18" height="18"></span>
21Фотолаборатории
22</a></li><li class="header-menu__item "><a class="header-menu__link" href="/studios"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-fotostudii.svg" alt="Фотостудии" title="Фотостудии" width="16" height="16"></span>
23Фотостудии
24<sup class="header-menu__tag">NEW</sup></a></li><li class="header-menu__item js-coming-soon"><a class="header-menu__link" href="/coming-soon"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-school_photo.svg" alt="Школы фотографий" title="Школы фотографий" width="14" height="14"></span>
25Школы фотографий
26</a></li><li class="header-menu__item "><a class="header-menu__link " href="/faq/terms"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-fotolaboratorii.svg" alt="Словарь" title="Словарь" width="14" height="16"></span>
27Словарь
28</a></li><li class="header-menu__item "><a class="header-menu__link" href="/faq"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-faq.svg" alt="Вопросы и ответы" title="Вопросы и ответы" width="14" height="16"></span>
29Вопросы и ответы
30</a></li></ul></nav></div><div class="top-header__right"><nav class="header__nav nav-header"><ul class="nav-header__list"><li class="nav-header__item"><a class="nav-header__link" target="_blank" href="https://photogora.ru?utm_source=fotoru"><div class="nav-header__icon"><img src="/themes/foto/images/icons/menu/fotogora.svg" alt="Фотогора" title="Фотогора" width="18" height="18"></div><div class="nav-header__text">Фотогора</div></a></li><li class="nav-header__item"><a class="nav-header__link nav-header__link--signin" href="/login"><div class="nav-header__icon"><img src="/themes/foto/images/icons/menu/user.svg" alt="Вход"></div><div class="nav-header__text">Вход</div></a></li></ul></nav><button class="nav-header__button mobile-menu" type="button"><span></span><span></span><span></span></button></div></div><div class="header__search main-page"><form class="search-form form" action="/search" method="get" style="display:flex;"><input type="hidden" name="search_type" value="2" aria-label="false"/><select name="search_type" class="select-search-type-css select-search-type-js" aria-label="false"><option value="1" >Искать в названиях темы</option><option value="2" selected>Искать в названиях темы и в первом сообщении</option><option value="3" >Искать во всех сообщениях</option><option value="4" >Искать по авторам</option><option value="5" >Искать по картинкам</option></select><input class="form__input search-form__input" name="term" value="" type="text" placeholder="поиск по Foto.ru" aria-label="false"><button class="search-form__button" type="submit"><span class="search-form__icon"></span></button></form> </div><div class="header__categories categories-header" data-da=".menu-mobile__body, 767.98, 2"><button class="categories-header__button" type="button">Категории</button><nav class="categories-header__menu menu-categories"><ul class="menu-categories__list"><li class="menu-categories__item "><a class="menu-categories__link" href="/forums/general"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-forum.svg" alt="Форумы" title="Форумы" width="18" height="18"></span><span class="menu-categories__caption">Форумы</span></a></li><li class="menu-categories__item menu-sub-categories__wrapper "><a class="menu-categories__link " href="/gallery"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-gallery.svg" alt="Галерея фотографий" title="Галерея фотографий" width="20" height="18"></span><span class="menu-categories__caption">Галерея фотографий</span></a></li><li class="menu-categories__item "><a class="menu-categories__link" href="/forums/community"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-personal_photo.svg" alt="Сообщества" title="Сообщества" width="19" height="19"></span><span class="menu-categories__caption">Сообщества</span></a></li><li class="menu-categories__item "><a class="menu-categories__link" href="/adverts-catalog"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-barakholka.svg" alt="Барахолка" title="Барахолка" width="14" height="16"></span><span class="menu-categories__caption">Барахолка</span></a></li><li class="menu-categories__item "><a class="menu-categories__link" href="/exhibitions"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-projects.svg" alt="Выставки и проекты" title="Выставки и проекты" width="20" height="20"></span><span class="menu-categories__caption">Выставки и проекты</span></a></li><li class="menu-categories__item "><a class="menu-categories__link " href="/technika-categories"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-discuss_photo.svg" alt="Обсуждение фототеÑ
30…ники" title="Обсуждение фототехники" width="20" height="18"></span><span class="menu-categories__caption">Обсуждение фототехники</span></a></li><li class="menu-categories__item "><a class="menu-categories__link " href="/contests"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-slovar.svg" alt="Фотоконкурсы" title="Фотоконкурсы" width="18" height="20"></span><span class="menu-categories__caption">Фотоконкурсы</span></a></li><li class="menu-categories__item "><a class="menu-categories__link" target="_blank" href="https://fotogora.ru/tags/classic-photographer/"><span class="menu-categories__icon icon-wrap"><img src="/themes/foto/images/icons/icon-classic_photo.svg" alt="Классики фотоискусства" title="Классики фотоискусства" width="20" height="20"></span><span class="menu-categories__caption">Классики фотоискусства</span></a></li></ul></nav></div><div class="menu-mobile"><div class="menu-mobile__body"> </div></div></div></div></header><div class="breadcrumbs"><div class="container"><nav class="breadcrumbs__navigation"><ul class="breadcrumbs__list"><li class="breadcrumbs__item"><span itemprop="name"><a class="breadcrumbs__link" href="/">Главная</a></span><meta itemprop="position" content="1" /></li><li class="breadcrumbs__item active"><span itemprop="name">Авторизация</span><meta itemprop="position" content="2" /></li></ul> </nav></div></div><div class="container" style="width: 100%;"></div><div id="pjax-container" style="height: 100%;flex: 1 0 auto;"><style>
31.gravex-css-alert-info {
32position: relative;
33display: flex;
34justify-content: center;
35align-items: center;
36max-width: 70%;
37line-height: 140%;
38margin: 0 auto 50px;
39text-align: center;
40}
41.gravex-css-alert-close {
42position: absolute;
43right: 15px;
44}
45@media screen and (max-width: 776px) {
46.gravex-css-alert-info {
47max-width: 100%;
48}
49}
50</style><main class="main"><div class="auth auth-login"><div class="container"><div class="auth__body"><form id="w0" class="form auth__form login-form" action="/login" method="post"><input type="hidden" name="_csrf" value="onykM4BrxZdfeE0_N3fPE31ZqaKwvPfAh1q51Pf1lobaBsJixS6W2mwcCUZfPIxpBBLbm4HNsKPJEc62greh6Q=="> <div class="auth__title page-title">Вход в аккаунт</div><p>Введите, пожалуйста, логин или эл. почту указанную при регистрации<
50/p><div class="field-loginform-returnurl" style="display: none;"><div class="help-block"></div><input type="hidden" id="loginform-returnurl" class="form-control" name="LoginForm[returnUrl]" value=""></div> <div class="auth__item field-loginform-loginoremail required"><div class="help-block"></div><input type="text" id="loginform-loginoremail" class="auth__input form-input" name="LoginForm[loginOrEmail]" value="" placeholder="Email или Логин" aria-required="true"></div> <div class="auth__item field-loginform-password required"><div class="help-block"></div><input type="password" id="loginform-password" class="auth__input form-input" name="LoginForm[password]" value="" placeholder="Пароль" aria-required="true"></div><div class="auth__item"><button class="auth__button btn" type="submit">Войти</button></div><div class="auth__bottom"><a class="auth__link" href="/reset">Забыли пароль?</a><a class="auth__link" href="/signup">Зарегистрироваться</a></div></form> </div></div></div></main></div><span class="scroll-to-top-css scroll-to-top-js author-box__arrow"></span><span class="scroll-to-top-css scroll-to-bottom-css scroll-to-bottom-js author-box__arrow"></span><footer class="footer"><div class="container"><div class="footer__top"><nav class="footer__menu menu-footer"><ul class="menu-footer__list"><li class="menu-footer__item " ><a class="menu-footer__link" href="/pravila-kluba">Правила Клуба</a></li><li class="menu-footer__item " ><a class="menu-footer__link" href="/o-klube">О Клубе</a></li><li class="menu-footer__item " ><a class="menu-footer__link" href="/login">Вход / Регистрация</a></li><li class="menu-footer__item " ><a class="menu-footer__link" href="/users/artistic-council-users">ХудСовет</a></li><li class="menu-footer__item " ><a href="javascript:void(0)" class="menu-footer__link main_contact-modal-trigger">Как связаться</a></li><li class="menu-footer__item " ><a class="menu-footer__link js-coming-soon" href="/coming-soon">Статистика</a></li><li class="menu-footer__item " ><a class="menu-footer__link js-coming-soon" href="/coming-soon">Реклама на сайте</a></li><li class="menu-footer__item " ><a class="menu-footer__link" href="/faq">Вопросы и ответы</a></li><li class="menu-footer__item " ><a class="menu-footer__link" href="/privacy-policy">Политика конфиденциальности</a></li></ul></nav></div><div class="footer__bottom"><a class="footer__logo" href="#" data-da=".footer__top, 767.98, 0"><img src="/themes/foto/images/footer-logo_pc.svg" alt="логотип"></a><div class="footer__social social-footer"><ul class="social-footer__list"><li class="social-footer__item"><a class="social-footer__link social-footer__link--mail" href="mailto:[email protected]" target="_blank"> </a></li><li class="social-footer__item"><a class="social-footer__link social-footer__link--vk" href="https://vk.com/foto_ru_club" target="_blank"> </a></li><li class="social-footer__item"><a class="social-footer__link social-footer__link--telegram" href="https://t.me/fotogora_ru" target="_blank"></a></li></ul></div><div class="footer__copy">Все права защищены © 1998-2026</div></div></div></footer></div><div class="gravex-modal gravex-modal-overlay" id="link-to-pagination-page_modal"><div class="gravex-modal__wrapper"><span class="gravex-modal-close"></span><div class="gravex-modal__header"><div class="gravex-modal-header-title">Введите страницу</div></div><div class="gravex-modal__body "><form action="" id="link-to-pagination-page-form"><input type="text" onkeyup="this.value = this.value.replace(/[^\d|^\.]/g, '');" class="form-input pagination-page-input" name="paginationPage" aria-label="false"><input type="hidden" class="pagination-page-url" name="paginationUrl" aria-label="false"><input type="submit" class="btn width-100px mt-15 link-to-pagination-page-but-js" value="Перейти"></form></div></div></div><div class="gravex-modal gravex-modal-overlay" id="send-to-login-page_modal"><div class="gravex-modal__wrapper"><span class="gravex-modal-close"></span><div class="gravex-modal__header"><div class="gravex-modal-header-title">Вы не авторизованы</div></div><div class="gravex-modal__body "><h3>Пожалуйста, авторизуйтесь, чтоб иметь доступ к полному функционалу сайта</h3><div class="d-flex mt-15"><a href="/login" class="btn " >Авторизоваться</a></div></div></div></div><div class="gravex-modal gravex-modal-overlay" id="main_contact_modal"><div class="gravex-modal__wrapper"><span class="gravex-modal-close"></span><div class="gravex-modal__header"><div class="gravex-modal-header-title">Обратная связь</div></div><div class="gravex-modal__body "><form id="send-main-contact-form-js" class="form auth__form gravex-js-no-captcha-form" action="/site/ajax-send-contact" method="post"><input type="hidden" name="_csrf" value="onykM4BrxZdfeE0_N3fPE31ZqaKwvPfAh1q51Pf1lobaBsJixS6W2mwcCUZfPIxpBBLbm4HNsKPJEc62greh6Q=="> <p>
51Здесь вы можете оставить свои контактные данные, чтобы мы могли связаться с вами.
52</p><input type="hidden" id="contactform-pageurl" name="ContactForm[pageUrl]" value="https://foto.ru/login"> <div class="auth__item field-contactform-username required"><label class="control-label" for="contactform-username">Имя пользователя</label><div class="help-block"></div><input type="text" id="contactform-username" class="auth__input form-input" name="ContactForm[username]" aria-required="true"></div> <div class="auth__item field-contactform-email required"><label class="control-label" for="contactform-email">Ваш Email</label><div class="help-block"></div><input type="text" id="contactform-email" class="auth__input form-input" name="ContactForm[email]" aria-required="true"></div> <div class="auth__item field-contactform-phone required"><label class="control-label" for="contactform-phone">Телефон</label><div class="help-block"></div><input type="text" id="contactform-phone" class="auth__input form-input" name="ContactForm[phone]" aria-required="true" data-plugin-inputmask="inputmask_dbd3f62
526"></div> <div class="auth__item field-contactform-message required"><label class="control-label" for="contactform-message">Комментарий</label><div class="help-block"></div><textarea id="contactform-message" class="auth__input form-input" name="ContactForm[message]" rows="8" aria-required="true"></textarea></div> <div class="auth__item"><button class="text-editor__btn btn" type="submit">Написать</button></div></form> </div></div></div><div id="personalDataConsentPopup" class="personal-data-consent-popup"><p>Продолжая пользоваться сайтом, вы принимаете <a href="/privacy-policy" target="_blank">условия</a> и даете <a href="/personal-data-consent" target="_blank">согласие</a> на обработку пользовательских данных и cookies.</p> <div class="personal-data-consent-popup-actions"><button id="personalDataConsentButton">Ok</button></div></div>
52<script type="text/javascript">
53jQuery(document).ready(function() {
54const personalDataConsentPopup = document.getElementById('personalDataConsentPopup');
55const cookiesCookieName = 'is_cookies_accepted';
56const personalDataConsentButton = document.getElementById('personalDataConsentButton');
57if (jQuery.cookie(cookiesCookieName)) {
58personalDataConsentPopup.style.display = 'none';
59} else {
60personalDataConsentPopup.classList.add('show');
61personalDataConsentButton.addEventListener('click', function() {
62jQuery.cookie(cookiesCookieName, 1, { path: '/', expires: 36500, SameSite: 'Strict' })
63personalDataConsentPopup.classList.remove('show');
64});
65}
66})
67</script>
67<!-- Yandex.Metrika counter -->
67<script type="text/javascript" >
vendor: 387 bytes, lines 67-73
67
68(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
69m[i].l=1*new Date();
70for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
71k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
72(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
73ym(
7394905820
vendor: 73 bytes, lines 73-77
73, "init", {
74clickmap:true,
75trackLinks:true,
76accurateTrackBounce:true
77});
78</script>
78<noscript><div><img src="https://mc.yandex.ru/watch/94905820" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter --><!-- Google tag (gtag.js) -->
vendor: 63 bytes, line 78
78<script async src="https://www.googletagmanager.com/gtag/js?id=
78G-DQ4X4516ZN
vendor: 11 bytes, line 78
78"></script>
78<script>
vendor: 127 bytes, lines 79-82
79window.dataLayer = window.dataLayer || [];
80function gtag(){dataLayer.push(arguments);}
81gtag('js', new Date());
82gtag('config', '
82G-DQ4X4516ZN
vendor: 4 bytes, line 82
82');
83</script>
83<script src="/minify/f9bd2c37b1cba491d9cd6253a4dfb3d707e9ad3b.js"></script>
83<script>jQuery(function ($) {
84jQuery('#w0').yiiActiveForm([{"id":"loginform-loginoremail","name":"loginOrEmail","container":".field-loginform-loginoremail","input":"#loginform-loginoremail","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Email или Логин»."});value = yii.validation.trim($form, attribute, [], value);yii.validation.string(value, messages, {"message":"Значение «Email или Логин» должно быть строкой.","skipOnEmpty":1});}},{"id":"loginform-password","name":"password","container":".field-loginform-password","input":"#loginform-password","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Пароль»."});}}], []);
85GcmsApp.init(false);
86if (App != undefined) { App.init(false); }
87var inputmask_dbd3f626 = {"mask":["+7 (999) 999-99-99"]};
88jQuery("#contactform-phone").inputmask(inputmask_dbd3f626);
89jQuery('#send-main-contact-form-js').yiiActiveForm([{"id":"contactform-username","name":"username","container":".field-contactform-username","input":"#contactform-username","validate":function (attribute, value, messages, deferred, $form) {yii.validation.string(value, messages, {"message":"Значение «Имя пользователя» должно быть строкой.","min":2,"tooShort":"Значение «Имя пользователя» должно содержать минимум 2 символа.","max":50,"tooLong":"Значение «Имя пользователя» должно содержать максимум 50 символов.","skipOnEmpty":1});yii.validation.required(value, messages, {"message":"Необходимо заполнить «Имя пользователя»."});value = yii.validation.trim($form, attribute, {"skipOnArray":true,"skipOnEmpty":false,"chars":false}, value);}},{"id":"contactform-email","name":"email","container":".field-contactform-email","input":"#contactform-email","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Ваш Email»."});yii.validation.email(value, messages, {"pattern":/^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/,"fullPattern":/^[^@]*<[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?>$/,"allowName":false,"message":"Некорректный формат адреса электронной почты.","enableIDN":false,"skipOnEmpty":1});value = yii.validation.trim($form, attribute, {"skipOnArray":true,"skipOnEmpty":false,"chars":false}, value);}},{"id":"contactform-phone","name":"phone","container":".field-contactform-phone","input":"#contactform-phone","validate":function (attribute, value, messages, deferred, $form) {yii.validation.string(value, messages, {"message":"Значение «Телефон» должно быть строкой.","max":32,"tooLong":"Значение «Телефон» должно содержать максимум 32 символа.","skipOnEmpty":1});yii.validation.regularExpression(value, messages, {"pattern":/^(\+7|7|8) \(\d{3}\) \d{3}-\d{2}-\d{2}$/,"not":false,"message":"Верный формат +7 (###) ###-##-##","skipOnEmpty":1});yii.validation.required(value, messages, {"message":"Необходимо заполнить «Телефон»."});value = yii.validation.trim($form, attribute, {"skipOnArray":true,"skipOnEmpty":false,"chars":false}, value);}},{"id":"contactform-message","name":"message","container":".field-contactform-message","input":"#contactform-message","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Комментарий»."});yii.validation.string(value, messages, {"message":"Значение «Комментарий» должно быть строкой.","max":2000,"tooLong":"Сообщение слишком длинное (макс. 2000 символов).","skipOnEmpty":1});value = yii.validation.trim($form, attribute, {"skipOnArray":true,"skipOnEmpty":false,"chars":false}, value);}}], []);
90});</script>
90</body></html>
90<script>
91function initHeaderMenu() {
92let resizeTimeout;
93function initCategoriesButton() {
94const categoriesButton = document.querySelector('.categories-header__button');
95const categoriesMenu = document.querySelector('.categories-header__menu.menu-categories');
96if (!categoriesButton || !categoriesMenu) return;
97categoriesButton.removeEventListener('click', toggleCategoriesMenu);
98if (window.innerWidth < 768) {
99categoriesButton.addEventListener('click', toggleCategoriesMenu);
100document.addEventListener('click', function closeMenuOnClickOutside(e) {
101if (!categoriesButton.contains(e.target) && !categoriesMenu.contains(e.target)) {
102categoriesMenu.classList.remove('active');
103}
104});
105} else {
106categoriesMenu.classList.remove('active');
107}
108}
109function toggleCategoriesMenu(e) {
110e.preventDefault();
111e.stopPropagation();
112const categoriesMenu = document.querySelector('.categories-header__menu.menu-categories');
113if (categoriesMenu) {
114categoriesMenu.classList.toggle('active');
115}
116}
117function moveMenuOnMobile() {
118const headerMenu = document.querySelector('.top-header__menu.header-menu');
119const categoriesHeader = document.querySelector('.header__categories.categories-header');
120const mobileMenuBody = document.querySelector('.menu-mobile__body');
121const header = document.querySelector('.header__body');
122if (!headerMenu || !categoriesHeader || !header || !mobileMenuBody) return;
123if (window.innerWidth < 768) {
124if (!mobileMenuBody.contains(headerMenu)) {
125mobileMenuBody.appendChild(headerMenu);
126}
127if (mobileMenuBody.contains(headerMenu) && mobileMenuBody.contains(categoriesHeader)) {
128if (headerMenu.nextSibling !== categoriesHeader) {
129mobileMenuBody.insertBefore(headerMenu, categoriesHeader);
130}
131}
132}
133}
134function initMobileMenu() {
135if (window.innerWidth < 768) {
136document.body.addEventListener('click', function(e) {
137if (e.target.closest('.nav-header__button.mobile-menu')) {
138document.querySelector('.menu-mobile').classList.toggle('active');
139}
140});
141}
142}
143function handleResize() {
144clearTimeout(resizeTimeout);
145resizeTimeout = setTimeout(() => {
146initCategoriesButton();
147moveMenuOnMobile();
148}, 150);
149}
150initCategoriesButton();
151moveMenuOnMobile();
152initMobileMenu();
153window.addEventListener('resize', handleResize);
154}
155if (document.readyState === 'loading') {
156document.addEventListener('DOMContentLoaded', initHeaderMenu);
157} else {
158initHeaderMenu();
159}
160</script>

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.