{"id":6962,"date":"2025-11-06T19:45:56","date_gmt":"2025-11-06T19:45:56","guid":{"rendered":"https:\/\/cloudtivity.com\/?page_id=6962"},"modified":"2025-11-06T20:30:39","modified_gmt":"2025-11-06T20:30:39","slug":"register","status":"publish","type":"page","link":"https:\/\/cloudtivity.com\/en\/register\/","title":{"rendered":"Register"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6962\" class=\"elementor elementor-6962\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1209d08 e-con-full e-flex e-con e-parent\" data-id=\"1209d08\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-46b6ef8 elementor-widget elementor-widget-shortcode\" data-id=\"46b6ef8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n        <div class=\"ct-card-reg\">\n\n\n            <!-- POPUP DE MENSAJES -->\n            <div\n                id=\"ct-reg-popup\"\n                class=\"ct-reg-popup\"\n                aria-hidden=\"true\"\n            >\n\n                <div\n                    class=\"ct-reg-popup__backdrop\"\n                    data-ct-popup-close\n                ><\/div>\n\n                <div\n                    class=\"ct-reg-popup__dialog\"\n                    role=\"alertdialog\"\n                    aria-modal=\"true\"\n                    aria-labelledby=\"ct-reg-popup-title\"\n                >\n\n                    <button\n                        type=\"button\"\n                        class=\"ct-reg-popup__x\"\n                        data-ct-popup-close\n                        aria-label=\"Close\"\n                    >\n                        \u00d7\n                    <\/button>\n\n                    <div class=\"ct-reg-popup__icon\">\n                        <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"><\/i>\n                    <\/div>\n\n                    <h3 id=\"ct-reg-popup-title\">\n                        Please review your information                    <\/h3>\n\n                    <div id=\"ct-reg-popup-message\" class=\"ct-reg-popup__message\">\n\n                        \n                            <p><\/p>\n\n                        \n                    <\/div>\n\n                    <button\n                        type=\"button\"\n                        class=\"ct-reg-popup__button\"\n                        data-ct-popup-close\n                    >\n                        Got it                    <\/button>\n\n                <\/div>\n\n            <\/div>\n\n\n            <!-- PANEL IZQUIERDO -->\n\n            <div class=\"ct-card-left\">\n\n\n                <img decoding=\"async\"\n\n                    class=\"ct-card-logo\"\n\n                    src=\"https:\/\/cloudtivity.com\/wp-content\/uploads\/2025\/07\/logo-cloudtivity-1.svg\"\n\n                    alt=\"Cloudtivity\"\n                >\n\n\n            <\/div>\n\n\n\n            <!-- PANEL DERECHO -->\n\n            <div class=\"ct-card-right\">\n\n\n                \n\n                    <h2 class=\"ct-card-title\">\n\n                        Registra usuario\n                    <\/h2>\n\n                    <!-- ERRORES: se muestran en el popup -->\n\n\n\n                    <!-- FORMULARIO -->\n\n\n                    <form\n\n                        id=\"ct-register-form\"\n\n                        class=\"ct-reg-form\"\n\n                        action=\"https:\/\/cloudtivity.com\/en\/register\/\"\n\n                        method=\"post\"\n                    >\n\n\n                        <input\n                            type=\"hidden\"\n                            name=\"ct_reg_lang\"\n                            value=\"en\"\n                        >\n\n\n                        <!-- NOMBRE + APELLIDO -->\n\n                        <div class=\"ct-row\">\n\n\n                            <div class=\"ct-field\">\n\n\n                                <label for=\"ct_first\">\n\n                                    Nombre:\n\n                                <\/label>\n\n\n                                <input\n\n                                    id=\"ct_first\"\n\n                                    name=\"first_name\"\n\n                                    type=\"text\"\n\n                                    value=\"\"\n\n                                    placeholder=\"Ingresa tu nombre\"\n\n                                    autocomplete=\"given-name\"\n\n                                    required\n                                >\n\n\n                            <\/div>\n\n\n\n                            <div class=\"ct-field\">\n\n\n                                <label for=\"ct_last\">\n\n                                    Apellido:\n\n                                <\/label>\n\n\n                                <input\n\n                                    id=\"ct_last\"\n\n                                    name=\"last_name\"\n\n                                    type=\"text\"\n\n                                    value=\"\"\n\n                                    placeholder=\"Ingresa tu apellido\"\n\n                                    autocomplete=\"family-name\"\n\n                                    required\n                                >\n\n\n                            <\/div>\n\n\n                        <\/div>\n\n\n\n                        <!-- EMAIL -->\n\n                        <div class=\"ct-field\">\n\n\n                            <label for=\"ct_email\">\n\n                                Correo:\n\n                            <\/label>\n\n\n                            <input\n\n                                id=\"ct_email\"\n\n                                name=\"email\"\n\n                                type=\"email\"\n\n                                value=\"\"\n\n                                placeholder=\"Ingresa tu correo\"\n\n                                autocomplete=\"email\"\n\n                                required\n                            >\n\n\n                        <\/div>\n\n\n\n                        <!-- TEL\u00c9FONO + EMPRESA -->\n\n                        <div class=\"ct-row\">\n\n\n                            <div class=\"ct-field\">\n\n\n                                <label for=\"ct_phone\">\n\n                                    Tel\u00e9fono:\n\n                                <\/label>\n\n\n                                <input\n\n                                    id=\"ct_phone\"\n\n                                    name=\"phone\"\n\n                                    type=\"tel\"\n\n                                    value=\"\"\n\n                                    placeholder=\"Ingresa tu tel\u00e9fono\"\n\n                                    autocomplete=\"tel\"\n\n                                    required\n                                >\n\n\n                            <\/div>\n\n\n\n                            <div class=\"ct-field\">\n\n\n                                <label for=\"ct_company\">\n\n                                    Empresa (opcional):\n\n                                <\/label>\n\n\n                                <input\n\n                                    id=\"ct_company\"\n\n                                    name=\"company\"\n\n                                    type=\"text\"\n\n                                    value=\"\"\n\n                                    placeholder=\"Ingresa tu empresa\"\n\n                                    autocomplete=\"organization\"\n                                >\n\n\n                            <\/div>\n\n\n                        <\/div>\n\n\n\n                        <!-- =================================================\n                             CONTRASE\u00d1A\n                             ================================================= -->\n\n\n                        <div class=\"ct-field\">\n\n\n                            <label for=\"ct_pass\">\n\n                                Contrase\u00f1a:\n\n                            <\/label>\n\n\n                            <div class=\"ct-password-wrap\">\n\n\n                                <input\n\n                                    id=\"ct_pass\"\n\n                                    name=\"password\"\n\n                                    type=\"password\"\n\n                                    placeholder=\"Ingresa tu contrase\u00f1a\"\n\n                                    minlength=\"8\"\n\n                                    autocomplete=\"new-password\"\n\n                                    required\n                                >\n\n\n\n                                <button\n\n                                    type=\"button\"\n\n                                    class=\"ct-password-toggle\"\n\n                                    data-target=\"ct_pass\"\n\n                                    aria-label=\"Show password\"\n\n                                    title=\"Show password\"\n                                >\n\n\n                                    <svg\n                                        class=\"ct-eye-open\"\n                                        viewBox=\"0 0 24 24\"\n                                        aria-hidden=\"true\"\n                                    >\n\n                                        <path\n                                            d=\"M12 5c-5 0-9 4.5-10 6.2a1.5 1.5 0 0 0 0 1.6C3 14.5 7 19 12 19s9-4.5 10-6.2a1.5 1.5 0 0 0 0-1.6C21 9.5 17 5 12 5Zm0 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm0-2a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"\n                                        \/>\n\n                                    <\/svg>\n\n\n                                    <svg\n                                        class=\"ct-eye-closed\"\n                                        viewBox=\"0 0 24 24\"\n                                        aria-hidden=\"true\"\n                                    >\n\n                                        <path\n                                            d=\"m3.3 2 18.7 18.7-1.3 1.3-3.1-3.1A10.6 10.6 0 0 1 12 20C7 20 3 15.5 2 13.8a1.6 1.6 0 0 1 0-1.6 18 18 0 0 1 3.2-3.8L2 3.3 3.3 2Zm4.1 7.7a4.7 4.7 0 0 0-.4 1.8A5 5 0 0 0 12 16c.6 0 1.2-.1 1.8-.4l-1.6-1.6H12a2 2 0 0 1-2-2v-.2L7.4 9.7ZM12 5c5 0 9 4.5 10 6.2a1.5 1.5 0 0 1 0 1.6 17 17 0 0 1-2.4 3.1l-2.2-2.2A5 5 0 0 0 10.3 8L8.1 5.8A10 10 0 0 1 12 5Z\"\n                                        \/>\n\n                                    <\/svg>\n\n\n                                <\/button>\n\n\n                            <\/div>\n\n\n\n                            <!-- INDICADOR DE SEGURIDAD -->\n\n\n                            <div class=\"ct-password-security\">\n\n\n                                <div class=\"ct-password-strength\">\n\n\n                                    <span\n                                        id=\"ct-password-strength-bar\"\n                                        class=\"ct-password-strength__bar\"\n                                    ><\/span>\n\n\n                                <\/div>\n\n\n\n                                <div\n                                    id=\"ct-password-strength-text\"\n                                    class=\"ct-password-strength-text\"\n                                >\n\n                                    Password strength\n                                <\/div>\n\n\n\n                                <ul class=\"ct-password-rules\">\n\n\n                                    <li data-rule=\"length\">\n\n                                        At least 8 characters\n                                    <\/li>\n\n\n                                    <li data-rule=\"upper\">\n\n                                        One uppercase letter\n                                    <\/li>\n\n\n                                    <li data-rule=\"lower\">\n\n                                        One lowercase letter\n                                    <\/li>\n\n\n                                    <li data-rule=\"number\">\n\n                                        One number\n                                    <\/li>\n\n\n                                    <li data-rule=\"symbol\">\n\n                                        One symbol\n                                    <\/li>\n\n\n                                <\/ul>\n\n\n                            <\/div>\n\n\n                        <\/div>\n\n\n\n                        <!-- =================================================\n                             CONFIRMAR CONTRASE\u00d1A\n                             ================================================= -->\n\n\n                        <div class=\"ct-field\">\n\n\n                            <label for=\"ct_pass2\">\n\n                                Confirmar contrase\u00f1a:\n\n                            <\/label>\n\n\n                            <div class=\"ct-password-wrap\">\n\n\n                                <input\n\n                                    id=\"ct_pass2\"\n\n                                    name=\"password2\"\n\n                                    type=\"password\"\n\n                                    placeholder=\"Ingresa tu contrase\u00f1a nuevamente\"\n\n                                    minlength=\"8\"\n\n                                    autocomplete=\"new-password\"\n\n                                    required\n                                >\n\n\n\n                                <button\n\n                                    type=\"button\"\n\n                                    class=\"ct-password-toggle\"\n\n                                    data-target=\"ct_pass2\"\n\n                                    aria-label=\"Show password\"\n\n                                    title=\"Show password\"\n                                >\n\n\n                                    <svg\n                                        class=\"ct-eye-open\"\n                                        viewBox=\"0 0 24 24\"\n                                        aria-hidden=\"true\"\n                                    >\n\n                                        <path\n                                            d=\"M12 5c-5 0-9 4.5-10 6.2a1.5 1.5 0 0 0 0 1.6C3 14.5 7 19 12 19s9-4.5 10-6.2a1.5 1.5 0 0 0 0-1.6C21 9.5 17 5 12 5Zm0 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm0-2a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"\n                                        \/>\n\n                                    <\/svg>\n\n\n                                    <svg\n                                        class=\"ct-eye-closed\"\n                                        viewBox=\"0 0 24 24\"\n                                        aria-hidden=\"true\"\n                                    >\n\n                                        <path\n                                            d=\"m3.3 2 18.7 18.7-1.3 1.3-3.1-3.1A10.6 10.6 0 0 1 12 20C7 20 3 15.5 2 13.8a1.6 1.6 0 0 1 0-1.6 18 18 0 0 1 3.2-3.8L2 3.3 3.3 2Zm4.1 7.7a4.7 4.7 0 0 0-.4 1.8A5 5 0 0 0 12 16c.6 0 1.2-.1 1.8-.4l-1.6-1.6H12a2 2 0 0 1-2-2v-.2L7.4 9.7ZM12 5c5 0 9 4.5 10 6.2a1.5 1.5 0 0 1 0 1.6 17 17 0 0 1-2.4 3.1l-2.2-2.2A5 5 0 0 0 10.3 8L8.1 5.8A10 10 0 0 1 12 5Z\"\n                                        \/>\n\n                                    <\/svg>\n\n\n                                <\/button>\n\n\n                            <\/div>\n\n\n\n                            <div\n                                id=\"ct-password-match\"\n                                class=\"ct-password-match\"\n                            ><\/div>\n\n\n                        <\/div>\n\n\n\n                        <!-- T\u00c9RMINOS -->\n\n\n                        <label class=\"ct-check\">\n\n\n                            <input\n\n                                type=\"checkbox\"\n\n                                name=\"terms\"\n\n                                value=\"1\"\n\n                                required\n                            >\n\n\n                            Acepto los t\u00e9rminos y condiciones\n\n\n                        <\/label>\n\n\n\n                        <!-- reCAPTCHA -->\n\n\n                        \n\n                            <input\n\n                                type=\"hidden\"\n\n                                name=\"ct_recaptcha_token\"\n\n                                id=\"ct_recaptcha_token\"\n\n                                value=\"\"\n                            >\n\n\n                        \n\n\n                        <input type=\"hidden\" id=\"ct_reg_nonce\" name=\"ct_reg_nonce\" value=\"3851a84f75\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/6962\" \/>\n\n\n                        <button\n\n                            type=\"submit\"\n\n                            class=\"ct-btn\"\n\n                            id=\"ct-register-submit\"\n                        >\n\n                            Create account\n                        <\/button>\n\n\n                    <\/form>\n\n\n                \n\n            <\/div>\n\n\n        <\/div>\n\n\n\n        <!-- ====================================================\n             ESTILOS CONTRASE\u00d1A\n             ==================================================== -->\n\n\n        <style>\n\n\n        \/* =====================================================\n           POPUP REGISTRO\n           ===================================================== *\/\n\n        .ct-reg-popup {\n            position: fixed;\n            inset: 0;\n            z-index: 999999;\n            display: none;\n            align-items: center;\n            justify-content: center;\n            padding: 20px;\n        }\n\n        .ct-reg-popup.is-open {\n            display: flex;\n        }\n\n        .ct-reg-popup__backdrop {\n            position: absolute;\n            inset: 0;\n            background: rgba(9, 22, 36, .58);\n            backdrop-filter: blur(3px);\n        }\n\n        .ct-reg-popup__dialog {\n            position: relative;\n            z-index: 1;\n            width: min(440px, 100%);\n            padding: 30px 28px 24px;\n            border-radius: 18px;\n            background: #fff;\n            box-shadow: 0 24px 70px rgba(9, 22, 36, .24);\n            text-align: center;\n            animation: ctPopupIn .18s ease-out;\n        }\n\n        @keyframes ctPopupIn {\n            from {\n                opacity: 0;\n                transform: translateY(8px) scale(.98);\n            }\n            to {\n                opacity: 1;\n                transform: translateY(0) scale(1);\n            }\n        }\n\n        .ct-reg-popup__x {\n            position: absolute;\n            top: 12px;\n            right: 14px;\n            width: 36px;\n            height: 36px;\n            padding: 0;\n            border: 0;\n            border-radius: 50%;\n            background: transparent;\n            color: #667085;\n            font-size: 27px;\n            line-height: 1;\n            cursor: pointer;\n        }\n\n        .ct-reg-popup__x:hover {\n            background: #F2F4F7;\n            color: #172033;\n        }\n\n        .ct-reg-popup__icon {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            width: 58px;\n            height: 58px;\n            margin: 0 auto 16px;\n            border-radius: 50%;\n            background: #FFF4E5;\n            color: #D97706;\n            font-size: 23px;\n        }\n\n        .ct-reg-popup__dialog h3 {\n            margin: 0 0 10px;\n            color: #172033;\n            font-size: 21px;\n            line-height: 1.3;\n            font-weight: 800;\n        }\n\n        .ct-reg-popup__message {\n            color: #667085;\n            font-size: 14px;\n            line-height: 1.6;\n        }\n\n        .ct-reg-popup__message p {\n            margin: 0;\n        }\n\n        .ct-reg-popup__message ul {\n            margin: 10px 0 0;\n            padding: 0;\n            list-style: none;\n            text-align: left;\n        }\n\n        .ct-reg-popup__message li {\n            position: relative;\n            padding: 6px 0 6px 19px;\n        }\n\n        .ct-reg-popup__message li::before {\n            content: \"\u2022\";\n            position: absolute;\n            left: 4px;\n            color: #D92D20;\n            font-weight: 900;\n        }\n\n        .ct-reg-popup__button {\n            width: 100%;\n            min-height: 44px;\n            margin-top: 22px;\n            border: 0;\n            border-radius: 10px;\n            background: #0076BE;\n            color: #fff;\n            font-family: inherit;\n            font-size: 14px;\n            font-weight: 700;\n            cursor: pointer;\n        }\n\n        .ct-reg-popup__button:hover {\n            background: #0067A6;\n        }\n\n        body.ct-reg-popup-open {\n            overflow: hidden;\n        }\n\n\n        .ct-password-wrap {\n\n            position: relative;\n\n            width: 100%;\n\n        }\n\n\n        .ct-password-wrap input {\n\n            width: 100%;\n\n            padding-right: 52px !important;\n\n        }\n\n\n\n        \/* OJITO *\/\n\n\n        .ct-password-toggle {\n\n            position: absolute;\n\n            top: 50%;\n\n            right: 8px;\n\n            transform: translateY(-50%);\n\n            display: flex;\n\n            align-items: center;\n\n            justify-content: center;\n\n            width: 40px;\n\n            height: 40px;\n\n            padding: 0;\n\n            border: 0 !important;\n\n            border-radius: 8px;\n\n            background: transparent !important;\n\n            color: #667085;\n\n            cursor: pointer;\n\n            box-shadow: none !important;\n\n            transition:\n                background .18s ease,\n                color .18s ease;\n\n        }\n\n\n        .ct-password-toggle:hover {\n\n            background: #EFF8FD !important;\n\n            color: #0076BE;\n\n        }\n\n\n        .ct-password-toggle:focus {\n\n            outline:\n                2px solid\n                rgba(\n                    0,\n                    118,\n                    190,\n                    .20\n                );\n\n        }\n\n\n        .ct-password-toggle svg {\n\n            width: 21px;\n\n            height: 21px;\n\n            fill: currentColor;\n\n        }\n\n\n        .ct-eye-closed {\n\n            display: none;\n\n        }\n\n\n        .ct-password-toggle.is-visible\n        .ct-eye-open {\n\n            display: none;\n\n        }\n\n\n        .ct-password-toggle.is-visible\n        .ct-eye-closed {\n\n            display: block;\n\n        }\n\n\n\n        \/* MEDIDOR *\/\n\n\n        .ct-password-security {\n\n            margin-top: 10px;\n\n        }\n\n\n        .ct-password-strength {\n\n            width: 100%;\n\n            height: 5px;\n\n            overflow: hidden;\n\n            border-radius: 100px;\n\n            background: #E5E7EB;\n\n        }\n\n\n        .ct-password-strength__bar {\n\n            display: block;\n\n            width: 0;\n\n            height: 100%;\n\n            border-radius: inherit;\n\n            background: #D92D20;\n\n            transition:\n                width .25s ease,\n                background .25s ease;\n\n        }\n\n\n        .ct-password-strength-text {\n\n            margin-top: 6px;\n\n            color: #667085;\n\n            font-size: 12px;\n\n            font-weight: 600;\n\n        }\n\n\n\n        \/* REGLAS *\/\n\n\n        .ct-password-rules {\n\n            display: grid;\n\n            grid-template-columns:\n                repeat(\n                    2,\n                    minmax(0, 1fr)\n                );\n\n            gap: 5px 14px;\n\n            margin:\n                9px 0 0;\n\n            padding: 0;\n\n            list-style: none;\n\n        }\n\n\n        .ct-password-rules li {\n\n            position: relative;\n\n            padding-left: 18px;\n\n            color: #7C8797;\n\n            font-size: 11px;\n\n            line-height: 1.4;\n\n            transition:\n                color .18s ease;\n\n        }\n\n\n        .ct-password-rules li::before {\n\n            content: \"\u25cb\";\n\n            position: absolute;\n\n            left: 0;\n\n            color: #A0AEC0;\n\n        }\n\n\n        .ct-password-rules\n        li.is-valid {\n\n            color: #16803C;\n\n        }\n\n\n        .ct-password-rules\n        li.is-valid::before {\n\n            content: \"\u2713\";\n\n            color: #16803C;\n\n            font-weight: 700;\n\n        }\n\n\n\n        \/* COINCIDENCIA *\/\n\n\n        .ct-password-match {\n\n            min-height: 18px;\n\n            margin-top: 6px;\n\n            font-size: 11px;\n\n            font-weight: 600;\n\n        }\n\n\n        .ct-password-match.is-valid {\n\n            color: #16803C;\n\n        }\n\n\n        .ct-password-match.is-invalid {\n\n            color: #D92D20;\n\n        }\n\n\n\n        @media (max-width: 767px) {\n\n\n            .ct-password-rules {\n\n                grid-template-columns:\n                    1fr;\n\n            }\n\n\n            .ct-password-toggle {\n\n                width: 38px;\n\n                height: 38px;\n\n            }\n\n        }\n\n\n        <\/style>\n\n\n\n        \n\n        \n\n            <script\n                src=\"https:\/\/www.google.com\/recaptcha\/api.js?render=6LcwWTwsAAAAAPdW5IBgCY21UW5km9S6kTsqK2zC\"\n            ><\/script>\n\n\n        \n\n\n        <script>\n\n\n        document.addEventListener(\n            'DOMContentLoaded',\n            function () {\n\n\n                \/* =============================================\n                   ELEMENTOS\n                   ============================================= *\/\n\n\n                const form =\n                    document.getElementById(\n                        'ct-register-form'\n                    );\n\n\n                const pass =\n                    document.getElementById(\n                        'ct_pass'\n                    );\n\n\n                const pass2 =\n                    document.getElementById(\n                        'ct_pass2'\n                    );\n\n\n                const strengthBar =\n                    document.getElementById(\n                        'ct-password-strength-bar'\n                    );\n\n\n                const strengthText =\n                    document.getElementById(\n                        'ct-password-strength-text'\n                    );\n\n\n                const matchText =\n                    document.getElementById(\n                        'ct-password-match'\n                    );\n\n\n                const submitButton =\n                    document.getElementById(\n                        'ct-register-submit'\n                    );\n\n\n                const tokenField =\n                    document.getElementById(\n                        'ct_recaptcha_token'\n                    );\n\n\n                const popup =\n                    document.getElementById(\n                        'ct-reg-popup'\n                    );\n\n\n                const popupTitle =\n                    document.getElementById(\n                        'ct-reg-popup-title'\n                    );\n\n\n                const popupMessage =\n                    document.getElementById(\n                        'ct-reg-popup-message'\n                    );\n\n\n                const ctI18n = {\"showPassword\":\"Show password\",\"hidePassword\":\"Hide password\",\"strengthDefault\":\"Password strength\",\"weak\":\"Weak password\",\"medium\":\"Medium password\",\"good\":\"Good password\",\"strong\":\"Strong password\",\"requirements\":\"Complete all password security requirements.\",\"match\":\"\\u2713 Passwords match\",\"mismatch\":\"\\u2715 Passwords do not match\",\"verifying\":\"Verifying...\",\"createAccount\":\"Create account\",\"securityTitle\":\"Security verification\",\"securityLoadError\":\"The security verification could not be loaded. Reload the page and try again.\",\"securityVerifyError\":\"We could not complete the security verification. Please try again.\"};\n\n\n                function ctOpenPopup(\n                    message,\n                    title = ''\n                ) {\n\n                    if (!popup) {\n                        return;\n                    }\n\n                    if (popupTitle && title) {\n                        popupTitle.textContent = title;\n                    }\n\n                    if (popupMessage) {\n                        popupMessage.innerHTML = '';\n\n                        const paragraph =\n                            document.createElement('p');\n\n                        paragraph.textContent = message;\n                        popupMessage.appendChild(paragraph);\n                    }\n\n                    popup.classList.add('is-open');\n                    popup.setAttribute('aria-hidden', 'false');\n                    document.body.classList.add('ct-reg-popup-open');\n                }\n\n\n                function ctClosePopup() {\n\n                    if (!popup) {\n                        return;\n                    }\n\n                    popup.classList.remove('is-open');\n                    popup.setAttribute('aria-hidden', 'true');\n                    document.body.classList.remove('ct-reg-popup-open');\n                }\n\n\n                document\n                    .querySelectorAll('[data-ct-popup-close]')\n                    .forEach(\n                        function (element) {\n                            element.addEventListener(\n                                'click',\n                                ctClosePopup\n                            );\n                        }\n                    );\n\n\n                document.addEventListener(\n                    'keydown',\n                    function (event) {\n                        if (event.key === 'Escape') {\n                            ctClosePopup();\n                        }\n                    }\n                );\n\n\n                if (\n                    popup &&\n                    popup.classList.contains('is-open')\n                ) {\n                    document.body.classList.add('ct-reg-popup-open');\n                }\n\n\n\n                \/* =============================================\n                   OJITOS\n                   ============================================= *\/\n\n\n                document\n                .querySelectorAll(\n                    '.ct-password-toggle'\n                )\n                .forEach(\n                    function (button) {\n\n\n                        button.addEventListener(\n                            'click',\n                            function () {\n\n\n                                const target =\n                                    document.getElementById(\n                                        button.dataset.target\n                                    );\n\n\n                                if (!target) {\n                                    return;\n                                }\n\n\n                                const show =\n                                    target.type ===\n                                    'password';\n\n\n                                target.type =\n                                    show\n                                    ? 'text'\n                                    : 'password';\n\n\n                                button.classList\n                                .toggle(\n                                    'is-visible',\n                                    show\n                                );\n\n\n                                button.setAttribute(\n                                    'aria-label',\n\n                                    show\n                                    ? ctI18n.hidePassword\n                                    : ctI18n.showPassword\n                                );\n\n\n                                button.setAttribute(\n                                    'title',\n\n                                    show\n                                    ? ctI18n.hidePassword\n                                    : ctI18n.showPassword\n                                );\n\n                            }\n                        );\n\n                    }\n                );\n\n\n\n                if (\n                    !pass ||\n                    !pass2\n                ) {\n\n                    return;\n                }\n\n\n\n                \/* =============================================\n                   REGLAS\n                   ============================================= *\/\n\n\n                const passwordRules = {\n\n\n                    length:\n                    function (value) {\n\n                        return (\n                            value.length >= 8\n                        );\n\n                    },\n\n\n                    upper:\n                    function (value) {\n\n                        return (\n                            \/[A-Z]\/.test(\n                                value\n                            )\n                        );\n\n                    },\n\n\n                    lower:\n                    function (value) {\n\n                        return (\n                            \/[a-z]\/.test(\n                                value\n                            )\n                        );\n\n                    },\n\n\n                    number:\n                    function (value) {\n\n                        return (\n                            \/[0-9]\/.test(\n                                value\n                            )\n                        );\n\n                    },\n\n\n                    symbol:\n                    function (value) {\n\n                        return (\n                            \/[^A-Za-z0-9]\/.test(\n                                value\n                            )\n                        );\n\n                    }\n\n                };\n\n\n\n                \/* =============================================\n                   \u00bfES FUERTE?\n                   ============================================= *\/\n\n\n                function isStrongPassword(\n                    value\n                ) {\n\n\n                    return (\n                        passwordRules.length(value) &&\n                        passwordRules.upper(value) &&\n                        passwordRules.lower(value) &&\n                        passwordRules.number(value) &&\n                        passwordRules.symbol(value)\n                    );\n\n                }\n\n\n\n                \/* =============================================\n                   EVALUAR SEGURIDAD\n                   ============================================= *\/\n\n\n                function evaluatePassword() {\n\n\n                    const value =\n                        pass.value;\n\n\n                    let score = 0;\n\n\n\n                    Object\n                    .keys(\n                        passwordRules\n                    )\n                    .forEach(\n                        function (\n                            ruleName\n                        ) {\n\n\n                            const valid =\n                                passwordRules[\n                                    ruleName\n                                ](\n                                    value\n                                );\n\n\n                            const element =\n                                document.querySelector(\n                                    '.ct-password-rules [data-rule=\"' +\n                                    ruleName +\n                                    '\"]'\n                                );\n\n\n                            if (valid) {\n\n\n                                score++;\n\n\n                                if (element) {\n\n                                    element\n                                    .classList\n                                    .add(\n                                        'is-valid'\n                                    );\n\n                                }\n\n\n                            }\n\n                            else {\n\n\n                                if (element) {\n\n                                    element\n                                    .classList\n                                    .remove(\n                                        'is-valid'\n                                    );\n\n                                }\n\n                            }\n\n                        }\n                    );\n\n\n\n                    const percentage =\n                        score * 20;\n\n\n\n                    if (\n                        strengthBar\n                    ) {\n\n\n                        strengthBar.style.width =\n                            percentage +\n                            '%';\n\n\n\n                        if (\n                            score <= 1\n                        ) {\n\n                            strengthBar.style.background =\n                                '#D92D20';\n\n                        }\n\n\n                        else if (\n                            score <= 3\n                        ) {\n\n                            strengthBar.style.background =\n                                '#E8A317';\n\n                        }\n\n\n                        else if (\n                            score === 4\n                        ) {\n\n                            strengthBar.style.background =\n                                '#3B82F6';\n\n                        }\n\n\n                        else {\n\n                            strengthBar.style.background =\n                                '#16803C';\n\n                        }\n\n                    }\n\n\n\n                    if (\n                        strengthText\n                    ) {\n\n\n                        if (\n                            value.length === 0\n                        ) {\n\n                            strengthText.textContent =\n                                ctI18n.strengthDefault;\n\n                        }\n\n\n                        else if (\n                            score <= 1\n                        ) {\n\n                            strengthText.textContent =\n                                ctI18n.weak;\n\n                        }\n\n\n                        else if (\n                            score <= 3\n                        ) {\n\n                            strengthText.textContent =\n                                ctI18n.medium;\n\n                        }\n\n\n                        else if (\n                            score === 4\n                        ) {\n\n                            strengthText.textContent =\n                                ctI18n.good;\n\n                        }\n\n\n                        else {\n\n                            strengthText.textContent =\n                                ctI18n.strong;\n\n                        }\n\n                    }\n\n\n                    checkPasswordsMatch();\n\n                }\n\n\n\n                \/* =============================================\n                   COINCIDENCIA\n                   ============================================= *\/\n\n\n                function checkPasswordsMatch() {\n\n\n                    if (\n                        !matchText\n                    ) {\n\n                        return;\n                    }\n\n\n\n                    if (\n                        pass2.value.length === 0\n                    ) {\n\n\n                        matchText.textContent =\n                            '';\n\n\n                        matchText\n                        .classList\n                        .remove(\n                            'is-valid',\n                            'is-invalid'\n                        );\n\n\n                        return;\n                    }\n\n\n\n                    if (\n                        pass.value ===\n                        pass2.value\n                    ) {\n\n\n                        matchText.textContent =\n                            ctI18n.match;\n\n\n                        matchText\n                        .classList\n                        .add(\n                            'is-valid'\n                        );\n\n\n                        matchText\n                        .classList\n                        .remove(\n                            'is-invalid'\n                        );\n\n                    }\n\n                    else {\n\n\n                        matchText.textContent =\n                            ctI18n.mismatch;\n\n\n                        matchText\n                        .classList\n                        .add(\n                            'is-invalid'\n                        );\n\n\n                        matchText\n                        .classList\n                        .remove(\n                            'is-valid'\n                        );\n\n                    }\n\n                }\n\n\n\n                pass.addEventListener(\n                    'input',\n                    evaluatePassword\n                );\n\n\n                pass2.addEventListener(\n                    'input',\n                    checkPasswordsMatch\n                );\n\n\n\n                \/* =============================================\n                   SUBMIT + reCAPTCHA\n                   ============================================= *\/\n\n\n                if (\n                    !form\n                ) {\n\n                    return;\n                }\n\n\n\n                form.addEventListener(\n                    'submit',\n                    function (event) {\n\n\n                        \/*\n                         * Validaci\u00f3n HTML5.\n                         *\/\n\n                        if (\n                            !form.checkValidity()\n                        ) {\n\n\n                            event.preventDefault();\n\n\n                            form.reportValidity();\n\n\n                            return;\n\n                        }\n\n\n\n                        \/*\n                         * Contrase\u00f1a fuerte.\n                         *\/\n\n                        if (\n                            !isStrongPassword(\n                                pass.value\n                            )\n                        ) {\n\n\n                            event.preventDefault();\n\n\n                            if (\n                                strengthText\n                            ) {\n\n                                strengthText.textContent =\n                                    ctI18n.requirements;\n\n                            }\n\n\n                            pass.focus();\n\n\n                            return;\n\n                        }\n\n\n\n                        \/*\n                         * Confirmaci\u00f3n.\n                         *\/\n\n                        if (\n                            pass.value !==\n                            pass2.value\n                        ) {\n\n\n                            event.preventDefault();\n\n\n                            checkPasswordsMatch();\n\n\n                            pass2.focus();\n\n\n                            return;\n\n                        }\n\n\n\n                        \n\n                        \/*\n                         * reCAPTCHA v3.\n                         *\/\n\n                        event.preventDefault();\n\n\n\n                        if (\n                            typeof grecaptcha ===\n                            'undefined'\n                        ) {\n\n\n                            ctOpenPopup(\n                                ctI18n.securityLoadError,\n                                ctI18n.securityTitle\n                            );\n\n\n                            return;\n\n                        }\n\n\n\n                        if (\n                            submitButton\n                        ) {\n\n\n                            submitButton.disabled =\n                                true;\n\n\n                            submitButton.textContent =\n                                ctI18n.verifying;\n\n                        }\n\n\n\n                        grecaptcha.ready(\n                            function () {\n\n\n                                grecaptcha\n                                .execute(\n\n                                    \"6LcwWTwsAAAAAPdW5IBgCY21UW5km9S6kTsqK2zC\",\n\n                                    {\n\n                                        action:\n                                            'ct_register'\n\n                                    }\n\n                                )\n\n\n                                .then(\n                                    function (\n                                        token\n                                    ) {\n\n\n                                        if (\n                                            tokenField\n                                        ) {\n\n                                            tokenField.value =\n                                                token;\n\n                                        }\n\n\n                                        \/*\n                                         * submit() nativo evita\n                                         * ejecutar otra vez el listener.\n                                         *\/\n\n                                        form.submit();\n\n                                    }\n                                )\n\n\n                                .catch(\n                                    function () {\n\n\n                                        if (\n                                            submitButton\n                                        ) {\n\n\n                                            submitButton.disabled =\n                                                false;\n\n\n                                            submitButton.textContent =\n                                                ctI18n.createAccount;\n\n                                        }\n\n\n                                        ctOpenPopup(\n                                            ctI18n.securityVerifyError,\n                                            ctI18n.securityTitle\n                                        );\n\n                                    }\n                                );\n\n                            }\n                        );\n\n\n                        \n\n                    }\n                );\n\n\n            }\n        );\n\n\n        <\/script>\n\n\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-6962","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/pages\/6962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/comments?post=6962"}],"version-history":[{"count":0,"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/pages\/6962\/revisions"}],"wp:attachment":[{"href":"https:\/\/cloudtivity.com\/en\/wp-json\/wp\/v2\/media?parent=6962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}