"\n<!DOCTYPE html>\n    <html lang=\"ru-RU\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"csrf-param\" content=\"_csrf\">\n<meta name=\"csrf-token\" content=\"VZd9NP8y7SqmMncRtIYDDv5F7Oe-fukEa5Ap3vC-8UsPwxEZmUahE_JmO13-51Rvs3W2i-4JjGZZpmivis6dDA==\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"theme-color\" content=\"#563d7c\">\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico?v=1757592348\" />\n    <title>Войдите в свой аккаунт</title>\n    <style>\n        .bd-placeholder-img {\n            font-size: 1.125rem;\n            /* text-anchor: middle; */\n            -webkit-user-select: none;\n            -moz-user-select: none;\n            -ms-user-select: none;\n            user-select: none;\n        }\n\n        html, body {\n            touch-action: manipulation;\n        }\n\n        @media (min-width: 768px) {\n            .bd-placeholder-img-lg {\n                font-size: 3.5rem;\n            }\n        }\n\n        .root {           \n            padding-top: 45px;\n            padding-bottom: 49px; \n            width: 100%;\n            height: 100svh;\n            margin: 0 auto;\n            display: flex;\n            flex-direction: column;\n            /* justify-content: center; */\n            color: #fff;\n        }\n        .title{\n            font-family: 'SF Pro Display', sans-serif;\n            font-weight: 700;\n            font-size: 24px;\n            line-height: 36px;\n            color: #505759;\n            position: relative;\n            left: -50px;\n        }\n\n        .title span{\n            display: block;\n            margin-top: 10px;\n            font-weight: 700;\n            font-size: 30px;\n        }\n\n        .authorize-form{\n            display: flex;\n            height: 100%;\n            flex-direction: column;\n            align-items: center;\n            gap: 8px;\n            background-color: #fff;\n            border-radius: 12px;\n        }\n\n        .auth-form-wrapper{\n            align-items: center;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            height: 100%;\n        }\n\n        .authorize-form-content{\n            padding: 0 28px;\n            width: 100%;\n            height: 100%;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .auth-bg{\n            display: block;\n            width: 100%;\n            height: auto;\n        }\n\n        .auth-form-header{\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n\n        .auth-form-header-text{\n           text-align: left;\n        }\n\n        .auth-form-header-descr{\n            font-family: 'Segoe UI', sans-serif;\n            font-weight: 400;\n            font-size: 11px;\n            line-height: 11px;\n            color: #505759;\n        }\n\n        .btn-login {\n            padding: 0;\n            background: #EF3124;\n            max-width: 128px;\n            margin: 0 auto;\n            width: 100%;\n            height: 56px;\n            border-radius: 12px;\n            color: #FFFFFFF0;\n            font-weight: 500;\n            font-size: 16px;\n            line-height: 20px;\n            border: none;\n            cursor: pointer;\n            font-family: 'SF Pro Text', sans-serif;\n        }\n\n        .content-margin{\n            margin-top: 0 !important;\n            margin-bottom: 0 !important;\n            height: 100%;\n        }\n\n        .error-flyout{\n            position: absolute;\n            top: 10px;\n            width: 95%;\n            left: 2.5%;\n            right: 2.5%;\n        }\n\n        .form-check-input {\n            margin-top: 0.2rem !important;\n            position: relative !important;\n            margin-right: 6px;\n            width: 20px;\n            height: 20px;\n            -webkit-appearance: none;\n            -moz-appearance: none;\n            appearance: none;\n            border: 1px solid #505759;\n            border-radius: 3px;\n            background: #fff;\n        }\n\n        .form-check-input:checked {\n            background-color: #fff;\n            border-color: #505759;\n            background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='8' viewBox='0 0 10 8' fill='none'%3E%3Cpath d='M1 4.42857L4 7L9 1' stroke='%23505759' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n            background-repeat: no-repeat;\n            background-position: center;\n            background-size: 12px 12px;\n        }\n\n        .form-check {\n            margin: 30px 0 24px 4px;\n            display: flex !important;\n            text-align: left;\n        }\n\n        .form-check-label {\n            width: 100%;\n            font-weight: 400;\n            font-style: normal;\n            font-size: 12px;\n            line-height: 1;\n            color: #505759;\n        }\n\n        .form-check-label a {\n            font-family: 'Segoe UI', sans-serif;\n            color: #505759;\n            text-decoration: underline;\n        }\n\n        .form-text {\n            text-align: left !important;\n        }\n\n        .form-check-wrapper {\n            margin: 0 auto;\n        }\n\n        .authorization-input {\n            max-height: 40px;\n            padding: 15px 40px 15px 20px;\n            border-radius: 20px;\n            background: #FFFFFF;\n            border: 1px solid #505759;\n            max-width: 340px;\n            width: 100%;\n            margin: 0 auto;\n            text-align: left;\n        }\n\n        .authorization-input::placeholder{\n            color: #505759;\n        }\n\n        .authorization-input:focus-visible {\n            border: 1px solid #505759;\n            background: #FFFFFF;\n        }\n\n        .input-icon {\n            position: absolute;\n        }\n\n        .user-icon {\n            right: 20px;\n            top: 6px;\n        }\n\n        .password-icon {\n            right: 20px;\n            cursor: pointer;\n            top: 50%;\n            transform: translateY(-50%);\n        }\n\n        .password-recovery-form-item {\n            position: relative; \n            max-width: 340px; \n            width: 100%; \n            margin: 10px auto 30px;\n        }\n\n        .signin-form, .password-recovery-form {\n            max-width: 340px;\n            width: 100%;\n        }\n\n        @media screen and (max-width: 380px) {\n            .root {\n                padding-top: 5px;\n                padding-bottom: 10px;\n            }\n            .title {\n                margin-top: 25px;\n            }\n\n            .password-recovery-form {\n                margin-top: 40px;\n            }\n\n            .password-recovery-form-item {\n                margin-bottom: 15px;\n            }\n        }\n    </style>\n    <link href=\"/assets/fbe251c5/css/bootstrap.css?v=1713972735\" rel=\"stylesheet\">\n<link href=\"/css/auth.css?v=1754581662\" rel=\"stylesheet\"></head>\n\n<body style=\"display: block; padding: 0\">\n    <div class=\"root\">\n        <div class=\"error-flyout\">\n                    </div>\n        <div class=\"authorize-form text-center\" style=\"color: #00000066;\">\n                        <div class=\"authorize-form-content\">\n                <div class=\"auth-form-header\">\n                    <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                        <g clip-path=\"url(#clip0_1779_7807)\">\n                        <rect width=\"40\" height=\"40\" rx=\"9.99954\" fill=\"url(#paint0_linear_1779_7807)\"/>\n                        <rect width=\"40\" height=\"40\" rx=\"9.99954\" fill=\"#EF3124\"/>\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5116 19.4361C12.5116 23.5718 15.8643 26.9244 20 26.9244C24.1357 26.9244 27.4883 23.5718 27.4883 19.4361H35.0739C35.0739 27.7612 28.3251 34.51 20 34.51C11.6749 34.51 4.92603 27.7612 4.92603 19.4361H12.5116Z\" fill=\"white\"/>\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M-2.10693 8.3454H35.0738V15.931H-2.10693V8.3454Z\" fill=\"white\"/>\n                        </g>\n                        <defs>\n                        <linearGradient id=\"paint0_linear_1779_7807\" x1=\"52.2042\" y1=\"49.1423\" x2=\"-6.21273\" y2=\"-13.1916\" gradientUnits=\"userSpaceOnUse\">\n                        <stop offset=\"0.184636\"/>\n                        <stop offset=\"1\" stop-color=\"#666666\"/>\n                        </linearGradient>\n                        <clipPath id=\"clip0_1779_7807\">\n                        <rect width=\"40\" height=\"40\" rx=\"9.99954\" fill=\"white\"/>\n                        </clipPath>\n                        </defs>\n                    </svg>\n                    <div class=\"auth-form-header-text\">\n                        <svg width=\"104\" height=\"21\" viewBox=\"0 0 104 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path d=\"M0.320068 15.8206V0.918701H8.92537C12.1786 0.918701 13.9207 2.51383 13.9207 4.96949C13.9207 6.52264 12.8712 7.5301 11.8218 7.94987C13.1231 8.39063 14.2984 9.58697 14.2984 11.5599C14.2984 14.1415 12.5144 15.8206 9.0723 15.8206H0.320068ZM8.35868 3.79413H3.82516V6.73253H8.35868C9.57602 6.73253 10.2896 6.27078 10.2896 5.26333C10.2896 4.23489 9.59701 3.79413 8.35868 3.79413ZM8.44264 9.60796H3.82516V12.9451H8.44264C9.91184 12.9451 10.6674 12.3575 10.6674 11.2661C10.6674 10.1537 9.91184 9.60796 8.44264 9.60796Z\" fill=\"black\"/>\n                            <path d=\"M16.2552 15.8206V0.918701H24.9654C28.3446 0.918701 30.3175 2.59778 30.3175 5.72508C30.3175 8.8104 28.3446 10.5734 24.9654 10.5734H19.8023V15.8206H16.2552ZM24.6296 4.02501H19.8023V7.46713H24.6296C25.9939 7.46713 26.6655 6.7955 26.6655 5.74607C26.6655 4.63367 26.0149 4.02501 24.6296 4.02501Z\" fill=\"black\"/>\n                            <path d=\"M36.5067 4.67565C39.9908 4.67565 42.3206 6.90044 42.3206 10.4475V11.0352H34.0511C34.219 12.3994 35.2474 13.4279 36.7376 13.4279C38.0599 13.4279 38.6895 12.8192 38.8365 12.5883H42.2156C42.0477 13.8896 40.4946 16.0934 36.7376 16.0934C33.0436 16.0934 30.6929 13.7007 30.6929 10.3845C30.6929 6.94242 33.0856 4.67565 36.5067 4.67565ZM36.5067 7.1523C35.2684 7.1523 34.4079 7.84492 34.114 8.95732H38.8994C38.6056 7.82394 37.7241 7.1523 36.5067 7.1523Z\" fill=\"black\"/>\n                            <path d=\"M50.8689 8.74743C50.7009 8.45359 50.1552 7.63504 48.833 7.63504C47.4267 7.63504 46.5032 8.83139 46.5032 10.3845C46.5032 11.9587 47.4267 13.155 48.8539 13.155C50.2182 13.155 50.7849 12.2945 50.9108 12.0426H54.185C54.0591 13.5538 52.6109 16.0934 48.77 16.0934C45.5587 16.0934 43.0821 13.8476 43.0821 10.3845C43.0821 6.94242 45.5587 4.67565 48.728 4.67565C52.5689 4.67565 54.0171 7.17329 54.185 8.74743H50.8689Z\" fill=\"black\"/>\n                            <path d=\"M57.1222 20.0813L58.9482 15.6527L54.0788 4.9485H57.9407L60.6692 11.5179L63.3978 4.9485H66.8399L60.5433 20.0813H57.1222Z\" fill=\"black\"/>\n                            <path d=\"M70.885 14.2674V20.0183H67.5268V4.9485H70.927V6.56462C71.0739 6.24979 72.1863 4.73862 74.453 4.73862C77.2445 4.73862 79.4483 6.87945 79.4483 10.3845C79.4483 13.9106 77.2445 16.0514 74.453 16.0514C72.1443 16.0514 71.0529 14.6032 70.885 14.2674ZM70.885 10.3845C70.885 11.9587 71.8924 13.134 73.4666 13.134C75.0197 13.134 76.0062 11.9587 76.0062 10.3845C76.0062 8.8104 75.0197 7.63504 73.4666 7.63504C71.8924 7.63504 70.885 8.8104 70.885 10.3845Z\" fill=\"black\"/>\n                            <path d=\"M88.0774 8.74743C87.9095 8.45359 87.3638 7.63504 86.0416 7.63504C84.6353 7.63504 83.7118 8.83139 83.7118 10.3845C83.7118 11.9587 84.6353 13.155 86.0625 13.155C87.4268 13.155 87.9935 12.2945 88.1194 12.0426H91.3936C91.2677 13.5538 89.8195 16.0934 85.9786 16.0934C82.7673 16.0934 80.2907 13.8476 80.2907 10.3845C80.2907 6.94242 82.7673 4.67565 85.9366 4.67565C89.7775 4.67565 91.2257 7.17329 91.3936 8.74743H88.0774Z\" fill=\"black\"/>\n                            <path d=\"M97.8173 4.67565C101.301 4.67565 103.631 6.90044 103.631 10.4475V11.0352H95.3617C95.5296 12.3994 96.558 13.4279 98.0482 13.4279C99.3705 13.4279 100 12.8192 100.147 12.5883H103.526C103.358 13.8896 101.805 16.0934 98.0482 16.0934C94.3542 16.0934 92.0035 13.7007 92.0035 10.3845C92.0035 6.94242 94.3962 4.67565 97.8173 4.67565ZM97.8173 7.1523C96.579 7.1523 95.7185 7.84492 95.4246 8.95732H100.21C99.9162 7.82394 99.0347 7.1523 97.8173 7.1523Z\" fill=\"black\"/>\n                        </svg>\n                        <div class=\"auth-form-header-descr\">\n                            система эмоционального тестирования!!!\n                        </div>\n                    </div>\n                </div>\n                <div class=\"auth-form-wrapper\">\n                    <h1 class=\"title\">Добро пожаловать!</h1>\n                    <form id=\"signin-form\" class=\"signin-form\" action=\"/auth/signin\" method=\"post\">\n<input type=\"hidden\" name=\"_csrf\" value=\"VZd9NP8y7SqmMncRtIYDDv5F7Oe-fukEa5Ap3vC-8UsPwxEZmUahE_JmO13-51Rvs3W2i-4JjGZZpmivis6dDA==\"><div class=\"field-loginform-username required\" style=\"position: relative; max-width: 340px; width: 100%; margin: 0 auto;\">\n<label class=\"sr-only\" for=\"loginform-username\">Имя пользователя</label>\n<input type=\"text\" id=\"loginform-username\" class=\"authorization-input\" name=\"LoginForm[username]\" placeholder=\"Имя пользователя\" aria-required=\"true\">\n<div class=\"input-icon user-icon\">\n                <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path d=\"M18.263 19.0008C18.263 17.3348 18.088 15.3777 16.625 14.3017C14.945 13.0657 11.716 11.9478 11.716 10.0008C11.716 8.61976 14.098 7.91674 14.098 4.89073C14.098 1.63072 11.053 1.00073 10.001 1.00073C8.949 1.00073 5.904 1.63072 5.904 4.89073C5.904 7.91674 8.286 8.61976 8.286 10.0008C8.286 11.9478 5.058 13.0657 3.378 14.3017C1.91399 15.3777 1.73999 17.3348 1.73999 19.0008\" stroke=\"#505759\" stroke-width=\"2.00001\" stroke-miterlimit=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                </svg>\n            </div>\n<div class=\"invalid-feedback\"></div>\n</div><div style=\"position: relative; max-width: 340px; width: 100%; margin: 10px auto 0;\"><div class=\"field-password-input-login required\" style=\"margin: 0;\">\n<label class=\"sr-only\" for=\"password-input-login\">Пароль</label>\n<input type=\"password\" id=\"password-input-login\" class=\"authorization-input\" name=\"LoginForm[password]\" placeholder=\"Пароль\" aria-required=\"true\">\n<div class=\"input-icon password-icon password-icon--login\" id=\"toggle-password-login\">\n            <svg class=\"eye-open\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M1.0022 8.5519C3.4982 11.8099 6.66821 13.2959 10.0022 13.2959C13.3352 13.2959 16.5052 11.8099 19.0023 8.5519\" stroke=\"#505759\" stroke-width=\"2.00001\" stroke-miterlimit=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n            </svg>\n            <svg class=\"eye-closed\" style=\"display: none;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M1.00247 10.0014C3.49848 6.74344 6.66849 5.25745 10.0025 5.25745C13.3355 5.25745 16.5055 6.74344 19.0025 10.0014\" stroke=\"#505759\" stroke-width=\"2.00001\" stroke-miterlimit=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                <path d=\"M10.0025 14.3564C12.4077 14.3564 14.3575 12.4066 14.3575 10.0014C14.3575 7.59618 12.4077 5.64636 10.0025 5.64636C7.59728 5.64636 5.64743 7.59618 5.64743 10.0014C5.64743 12.4066 7.59728 14.3564 10.0025 14.3564Z\" stroke=\"#505759\" stroke-width=\"2.00001\" stroke-miterlimit=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                <path d=\"M10.0006 12.372C11.3106 12.372 12.3726 11.31 12.3726 9.99995C12.3726 8.68989 11.3106 7.62787 10.0006 7.62787C8.69049 7.62787 7.62845 8.68989 7.62845 9.99995C7.62845 11.31 8.69049 12.372 10.0006 12.372Z\" fill=\"#505759\"/>\n            </svg>\n        </div>\n<div class=\"invalid-feedback\"></div>\n</div></div><div class=\"form-check-wrapper\"><div class=\"form-check\"><input type=\"checkbox\" class=\"form-check-input\" id=\"personalDataConsent\" required checked><label class=\"form-check-label\" for=\"personalDataConsent\"><a href=\"/mltester/taskwork/license\">Принять условие пользовательского соглашения <br/> и обработку персональных данных</a></label></div></div><button type=\"submit\" class=\"btn-login\">Вход</button></form>\n<p>\n</p>\n<script>\n/*    console.log(\"Тут будет установка ПВА\");\n    window.addEventListener('beforeunload', () => {\n        console.log(\"beforeunload\");\n       // document.cookie = \"_xpwa=; path=/; max-age=0\";\n    });\n    window.addEventListener('load', () => {\n        console.log(\"load\");\n        //console.log('Страница полностью загружена');\n        function isPWA() {\n            return (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches)\n                || window.navigator.standalone === true;\n        }\n        if (isPWA()) {\n            document.cookie = \"_xpwa=1; path=/; SameSite=Lax\";\n        }\n    });*/\n</script>                </div>\n            </div>   \n            <script src=\"/assets/e26b4a44/jquery.js?v=1661536449\"></script>\n<script src=\"/assets/58dd520f/yii.js?v=1668788518\"></script>\n<script src=\"/js/mode.js?v=1760557827\"></script>\n<script src=\"/assets/58dd520f/yii.validation.js?v=1668788518\"></script>\n<script src=\"/assets/58dd520f/yii.activeForm.js?v=1668788518\"></script>\n<script src=\"/assets/fbe251c5/js/bootstrap.bundle.js?v=1713972735\"></script>\n<script>jQuery(function ($) {\njQuery('#signin-form').yiiActiveForm([{\"id\":\"loginform-username\",\"name\":\"username\",\"container\":\".field-loginform-username\",\"input\":\"#loginform-username\",\"error\":\".invalid-feedback\",\"validate\":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {\"message\":\"Необходимо заполнить «Имя пользователя».\"});}},{\"id\":\"password-input-login\",\"name\":\"password\",\"container\":\".field-password-input-login\",\"input\":\"#password-input-login\",\"error\":\".invalid-feedback\",\"validate\":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {\"message\":\"Необходимо заполнить «Пароль».\"});}}], {\"errorSummary\":\".alert.alert-danger\",\"errorCssClass\":\"is-invalid\",\"successCssClass\":\"is-valid\",\"validationStateOn\":\"input\"});\n});</script>        </div>\n    </div>\n    <script>\n        document.addEventListener('DOMContentLoaded', function() {\n            const checkbox = document.getElementById('personalDataConsent');\n            const submitButton = document.querySelector('.btn-login');\n            if (checkbox && submitButton) {\n                const updateButtonState = () => {\n                    const isAllowed = checkbox.checked;\n                    submitButton.disabled = !isAllowed;\n                    submitButton.style.opacity = isAllowed ? '1' : '0.6';\n                };\n                checkbox.addEventListener('change', updateButtonState);\n                updateButtonState();\n            }\n\n            const togglePassword = document.getElementById('toggle-password-login');\n            const passwordInput = document.getElementById('password-input-login');\n            if (togglePassword && passwordInput) {\n                const eyeOpen = togglePassword.querySelector('.eye-open');\n                const eyeClosed = togglePassword.querySelector('.eye-closed');\n\n                const updatePasswordIconTop = () => {\n                    const hasError = passwordInput.classList.contains('is-invalid');\n                    const isOpenState = passwordInput.getAttribute('type') === 'text';\n                    const top = hasError ? (isOpenState ? '32%' : '32%') : '50%';\n                    togglePassword.style.top = top;\n                };\n\n                togglePassword.addEventListener('click', function() {\n                    const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password';\n                    passwordInput.setAttribute('type', type);\n\n                    if (type === 'password') {\n                        eyeOpen.style.display = 'block';\n                        eyeClosed.style.display = 'none';\n                    } else {\n                        eyeOpen.style.display = 'none';\n                        eyeClosed.style.display = 'block';\n                    }\n\n                    updatePasswordIconTop();\n                });\n\n                // Initial alignment in case the field already has an error state\n                updatePasswordIconTop();\n            }\n\n            function updateAuthHeroHeight() {\n                const authHero = document.querySelector('.auth-hero');\n                if (!authHero) return;\n\n                const hasErrors = document.querySelector('.is-invalid') !== null;\n\n                if (window.innerWidth >= 576) {\n                    authHero.style.height = hasErrors ? '54vh' : '58vh';\n                } else if (window.innerWidth <= 380) {\n                    authHero.style.height = hasErrors ? '33vh' : '40vh';\n                } else {\n                    authHero.style.height = hasErrors ? '40vh' : '100%';\n                }\n            }\n\n            // Обновляем заголовок в зависимости от наличия инпута с плейсхолдером «Повторите пароль»\n            function updateTitleBasedOnConfirmInput() {\n                const titleElement = document.querySelector('h1.title');\n                if (!titleElement) return;\n\n                const inputs = Array.from(document.querySelectorAll('input[placeholder]'));\n                const hasRepeatPassword = inputs.some((el) => {\n                    const placeholder = (el.getAttribute('placeholder') || '').toLowerCase().trim();\n                    return placeholder.includes('повторите пароль') || (placeholder.includes('повтор') && placeholder.includes('парол'));\n                });\n\n                const newTitle = hasRepeatPassword ? 'Создать пароль' : 'Добро пожаловать!';\n                if (titleElement.textContent !== newTitle) {\n                    titleElement.textContent = newTitle;\n                }\n\n                const newLeft = hasRepeatPassword ? '-70px' : '-50px';\n                if (titleElement.style.left !== newLeft) {\n                    titleElement.style.left = newLeft;\n                }\n            }\n\n            updateAuthHeroHeight();\n            updateTitleBasedOnConfirmInput();\n            window.addEventListener('resize', updateAuthHeroHeight);\n\n            const formContent = document.querySelector('.authorize-form-content');\n            if (formContent) {\n                const observer = new MutationObserver(() => {\n                    updateAuthHeroHeight();\n                    updateTitleBasedOnConfirmInput();\n                });\n                observer.observe(formContent, {\n                    childList: true,\n                    subtree: true\n                });\n            }\n\n            const passwordInputForIcon = document.getElementById('password-input-login');\n            const passwordIcon = document.getElementById('toggle-password-login');\n\n            if (passwordInputForIcon && passwordIcon) {\n                const observer = new MutationObserver(function(mutations) {\n                    mutations.forEach(function(mutation) {\n                        if (mutation.attributeName === 'class') {\n                            // Recalculate top based on error state and eye visibility\n                            const hasError = passwordInput.classList.contains('is-invalid');\n                            const isOpenState = passwordInput.getAttribute('type') === 'text';\n                            const top = hasError ? (isOpenState ? '32%' : '30%') : '50%';\n                            passwordIcon.style.top = top;\n                        }\n                    });\n                });\n\n                observer.observe(passwordInputForIcon, {\n                    attributes: true\n                });\n\n                const initialHasError = passwordInput.classList.contains('is-invalid');\n                const initialOpenState = passwordInput.getAttribute('type') === 'text';\n                const initialTop = initialHasError ? (initialOpenState ? '32%' : '32%') : '45%';\n                passwordIcon.style.top = initialTop;\n            }\n        });\n\n        // Блокируем масштабирование: pinch, double-tap и Ctrl+wheel\n        (function() {\n            const opts = { passive: false };\n\n            // Pinch-zoom (двумя пальцами)\n            document.addEventListener('touchstart', function(e) {\n                if (e.touches && e.touches.length > 1) {\n                    e.preventDefault();\n                }\n            }, opts);\n\n            document.addEventListener('touchmove', function(e) {\n                if (e.touches && e.touches.length > 1) {\n                    e.preventDefault();\n                }\n            }, opts);\n\n            // iOS специфичные события жестов\n            document.addEventListener('gesturestart', function(e) { e.preventDefault(); }, opts);\n            document.addEventListener('gesturechange', function(e) { e.preventDefault(); }, opts);\n            document.addEventListener('gestureend', function(e) { e.preventDefault(); }, opts);\n\n            // Double-tap zoom\n            let lastTouchEnd = 0;\n            document.addEventListener('touchend', function(e) {\n                const now = Date.now();\n                if (now - lastTouchEnd <= 300) {\n                    e.preventDefault();\n                }\n                lastTouchEnd = now;\n            }, opts);\n\n            // Ctrl + колесо мыши (десктопные браузеры на тач-устройствах)\n            document.addEventListener('wheel', function(e) {\n                if (e.ctrlKey) {\n                    e.preventDefault();\n                }\n            }, opts);\n        })();\n\n\tfunction isPWA() {\n\t\treturn (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches)\n\t\t\t|| window.navigator.standalone === true;\n\t}\n\n        alert(window.matchMedia);\n\tif (isPWA() /*&& location.host == 'zalfatester.marketing-logic.ru'*/) {\n\t\twindow.location = 'https://devalfatester.marketing-logic.ru';\n        }\n    </script>\n</body>\n\n</html>\n"