{"id":24784,"date":"2024-03-02T09:03:25","date_gmt":"2024-03-02T17:03:25","guid":{"rendered":"https:\/\/nuvix.com\/?page_id=24784"},"modified":"2025-09-07T19:10:11","modified_gmt":"2025-09-08T02:10:11","slug":"c_recov_pw","status":"publish","type":"page","link":"https:\/\/nuvix.com\/fr\/c_recov_pw\/","title":{"rendered":"c_recov_pw"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"24784\" class=\"elementor elementor-24784\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2ce1286 elementor-section-height-min-height elementor-section-content-middle elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-id=\"2ce1286\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4fd9aa4\" data-id=\"4fd9aa4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-35bbcb7 elementor-widget elementor-widget-html\" data-id=\"35bbcb7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Password Recovery - Nuvix AI-Powered Trading Platform<\/title>\n    <style>\n        \/* \u2500\u2500\u2500 Modern Font Stack with Elegant Typography \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap');\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n            background: #0a0a14;\n            color: #ffffff;\n            overflow-x: hidden;\n            position: relative;\n            min-height: 100vh;\n            font-weight: 400;\n            letter-spacing: -0.011em;\n            -webkit-font-smoothing: antialiased;\n            -moz-osx-font-smoothing: grayscale;\n        }\n\n        \/* \u2500\u2500\u2500 Nuvix Dark Background with Gradient Mesh \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        body::before {\n            content: '';\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: \n                radial-gradient(ellipse at top left, rgba(139, 92, 246, 0.12) 0%, transparent 50%),\n                radial-gradient(ellipse at bottom right, rgba(236, 72, 153, 0.12) 0%, transparent 50%),\n                radial-gradient(ellipse at center, rgba(59, 130, 246, 0.08) 0%, transparent 50%);\n            z-index: -2;\n        }\n\n        \/* Grid pattern overlay - more subtle *\/\n        body::after {\n            content: '';\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-image: \n                linear-gradient(rgba(255, 255, 255, 0.01) 1px, transparent 1px),\n                linear-gradient(90deg, rgba(255, 255, 255, 0.01) 1px, transparent 1px);\n            background-size: 60px 60px;\n            z-index: -1;\n        }\n\n        \/* Floating gradient orbs - more subtle *\/\n        .gradient-orb {\n            position: fixed;\n            border-radius: 50%;\n            filter: blur(100px);\n            opacity: 0.4;\n            animation: floatOrb 25s infinite ease-in-out;\n            z-index: -1;\n        }\n\n        .orb1 {\n            width: 600px;\n            height: 600px;\n            background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);\n            top: -300px;\n            right: -300px;\n            animation-delay: 0s;\n        }\n\n        .orb2 {\n            width: 500px;\n            height: 500px;\n            background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);\n            bottom: -250px;\n            left: -250px;\n            animation-delay: 10s;\n        }\n\n        \/* \u2500\u2500\u2500 Animations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        @keyframes floatOrb {\n            0%, 100% { transform: translate(0, 0) scale(1) rotate(0deg); }\n            25% { transform: translate(30px, -30px) scale(1.05) rotate(90deg); }\n            50% { transform: translate(-20px, 20px) scale(0.95) rotate(180deg); }\n            75% { transform: translate(25px, 25px) scale(1.02) rotate(270deg); }\n        }\n\n        @keyframes fadeInUp {\n            from {\n                opacity: 0;\n                transform: translateY(20px);\n            }\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n\n        @keyframes shimmer {\n            0% { \n                background-position: -1000px 0;\n            }\n            100% { \n                background-position: 1000px 0;\n            }\n        }\n\n        @keyframes pulse {\n            0% {\n                box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4);\n            }\n            70% {\n                box-shadow: 0 0 0 10px rgba(139, 92, 246, 0);\n            }\n            100% {\n                box-shadow: 0 0 0 0 rgba(139, 92, 246, 0);\n            }\n        }\n\n        \/* \u2500\u2500\u2500 Container \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .c_login_container {\n            display: flex !important;\n            justify-content: center !important;\n            align-items: center !important;\n            min-height: 100vh;\n            padding: 2rem;\n            position: relative;\n            z-index: 1;\n        }\n\n        \/* \u2500\u2500\u2500 Recovery Card with Enhanced Glassmorphism \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .card {\n            position: relative;\n            width: 100%;\n            max-width: 480px;\n            background: rgba(255, 255, 255, 0.03);\n            backdrop-filter: blur(40px) saturate(150%);\n            -webkit-backdrop-filter: blur(40px) saturate(150%);\n            border: 1px solid rgba(255, 255, 255, 0.05);\n            border-radius: 32px;\n            padding: 0;\n            box-shadow: \n                0 30px 60px rgba(0, 0, 0, 0.3),\n                0 0 0 1px rgba(255, 255, 255, 0.05) inset,\n                0 1px 0 0 rgba(255, 255, 255, 0.1) inset;\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1);\n            overflow: hidden;\n            z-index: 1;\n        }\n\n        \/* Progress indicator *\/\n        .card::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 3px;\n            background: linear-gradient(90deg, #8b5cf6 0%, #ec4899 50%, #3b82f6 100%);\n            background-size: 200% 100%;\n            animation: shimmer 3s linear infinite;\n            z-index: 10;\n        }\n\n        .card-body {\n            padding: 4rem 3rem;\n        }\n\n        \/* \u2500\u2500\u2500 Logo Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .card-img-top {\n            display: block !important;\n            max-width: 200px !important;\n            height: auto;\n            margin: 3rem auto 2rem !important;\n            filter: brightness(1.1) contrast(1.1);\n            transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1);\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1) 0.1s both;\n        }\n\n        .card-img-top:hover {\n            transform: scale(1.05) translateY(-2px);\n        }\n\n        \/* \u2500\u2500\u2500 Form Title \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .form-header {\n            text-align: center;\n            margin-bottom: 2.5rem;\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1) 0.2s both;\n        }\n\n        .form-header h2 {\n            font-size: 2rem;\n            font-weight: 600;\n            color: #ffffff;\n            margin-bottom: 0.75rem;\n            letter-spacing: -0.03em;\n            font-family: 'Space Grotesk', sans-serif;\n            line-height: 1.2;\n        }\n\n        .form-header p {\n            color: rgba(255, 255, 255, 0.6);\n            font-size: 0.95rem;\n            font-weight: 400;\n            line-height: 1.6;\n            letter-spacing: -0.01em;\n        }\n\n        \/* \u2500\u2500\u2500 Form Fields with Refined Styling \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .form-group {\n            margin-bottom: 1.5rem;\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1) 0.3s both;\n        }\n\n        .wpforms-field-label {\n            display: block;\n            font-weight: 500;\n            font-size: 0.875rem;\n            color: rgba(255, 255, 255, 0.9);\n            margin-bottom: 0.625rem;\n            letter-spacing: -0.01em;\n            font-family: 'Inter', sans-serif;\n        }\n\n        .wpforms-field-large {\n            width: 100%;\n            padding: 1.125rem 1.375rem;\n            font-size: 1rem;\n            font-family: 'Inter', sans-serif;\n            font-weight: 400;\n            background: rgba(255, 255, 255, 0.04);\n            border: 1.5px solid rgba(255, 255, 255, 0.08);\n            border-radius: 14px;\n            color: #ffffff !important;\n            transition: all 0.3s cubic-bezier(0.23, 1, 0.320, 1);\n            letter-spacing: -0.01em;\n            -webkit-text-fill-color: #ffffff !important;\n        }\n\n        .wpforms-field-large::placeholder {\n            color: rgba(255, 255, 255, 0.35);\n            font-weight: 400;\n        }\n\n        .wpforms-field-large:hover {\n            background: rgba(255, 255, 255, 0.06);\n            border-color: rgba(255, 255, 255, 0.12);\n        }\n\n        .wpforms-field-large:focus {\n            outline: none;\n            background: rgba(255, 255, 255, 0.08);\n            border-color: rgba(139, 92, 246, 0.5);\n            box-shadow: \n                0 0 0 4px rgba(139, 92, 246, 0.08),\n                0 2px 8px rgba(139, 92, 246, 0.15);\n            transform: translateY(-1px);\n        }\n\n        .wpforms-field-large:disabled {\n            opacity: 0.5;\n            cursor: not-allowed;\n        }\n\n        \/* Success state for verified fields *\/\n        .wpforms-field-large.verified {\n            border-color: rgba(16, 185, 129, 0.5);\n            background: rgba(16, 185, 129, 0.05);\n        }\n\n        \/* \u2500\u2500\u2500 Buttons with Premium Feel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .btn-professional {\n            position: relative;\n            width: 100% !important;\n            padding: 1.25rem 2rem !important;\n            font-family: 'Space Grotesk', sans-serif;\n            font-weight: 600;\n            font-size: 1rem;\n            letter-spacing: 0.025em;\n            color: #ffffff !important;\n            background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 50%, #3b82f6 100%) !important;\n            background-size: 200% 200% !important;\n            background-position: 0% 50% !important;\n            border: none !important;\n            border-radius: 14px !important;\n            cursor: pointer;\n            transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1);\n            overflow: hidden;\n            box-shadow: \n                0 4px 20px rgba(139, 92, 246, 0.25),\n                0 1px 3px rgba(0, 0, 0, 0.3);\n            text-transform: uppercase;\n            z-index: 1;\n            text-decoration: none !important;\n            display: inline-flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n        }\n\n        .btn-professional::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: -100%;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(90deg, \n                transparent, \n                rgba(255, 255, 255, 0.3), \n                transparent);\n            transition: left 0.6s ease;\n        }\n\n        .btn-professional:hover:not(:disabled) {\n            transform: translateY(-2px);\n            box-shadow: \n                0 8px 30px rgba(139, 92, 246, 0.35),\n                0 2px 6px rgba(0, 0, 0, 0.4);\n            background-position: 100% 50% !important;\n        }\n\n        .btn-professional:hover:not(:disabled)::before {\n            left: 100%;\n        }\n\n        .btn-professional:active:not(:disabled) {\n            transform: translateY(0);\n        }\n\n        .btn-professional:disabled {\n            opacity: 0.4;\n            cursor: not-allowed;\n            transform: none !important;\n        }\n\n        \/* Secondary button style *\/\n        .btn-secondary-style {\n            background: rgba(255, 255, 255, 0.08) !important;\n            box-shadow: \n                0 4px 20px rgba(0, 0, 0, 0.1),\n                0 1px 3px rgba(0, 0, 0, 0.2),\n                inset 0 1px 0 rgba(255, 255, 255, 0.1);\n        }\n\n        .btn-secondary-style:hover:not(:disabled) {\n            background: rgba(255, 255, 255, 0.12) !important;\n            box-shadow: \n                0 8px 30px rgba(0, 0, 0, 0.15),\n                0 2px 6px rgba(0, 0, 0, 0.3);\n        }\n\n        \/* OTP button with pulse animation when active *\/\n        .btn-send-otp.otp-sent {\n            animation: pulse 2s infinite;\n        }\n\n        \/* \u2500\u2500\u2500 Button Row Layout \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .button-row {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 1rem;\n            margin-top: 2rem;\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1) 0.5s both;\n        }\n\n        \/* \u2500\u2500\u2500 Loading State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .btn-professional.loading {\n            color: transparent !important;\n            pointer-events: none;\n        }\n\n        .btn-professional.loading::after {\n            content: '';\n            position: absolute;\n            width: 20px;\n            height: 20px;\n            top: 50%;\n            left: 50%;\n            margin-left: -10px;\n            margin-top: -10px;\n            border: 2px solid rgba(255, 255, 255, 0.3);\n            border-radius: 50%;\n            border-top-color: #ffffff;\n            animation: spin 0.8s linear infinite;\n        }\n\n        @keyframes spin {\n            to { transform: rotate(360deg); }\n        }\n\n        \/* \u2500\u2500\u2500 Status Messages \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .status-message {\n            padding: 1rem;\n            border-radius: 10px;\n            margin-bottom: 1.5rem;\n            font-size: 0.875rem;\n            text-align: center;\n            animation: fadeInUp 0.4s ease;\n        }\n\n        .status-success {\n            background: rgba(16, 185, 129, 0.1);\n            border: 1px solid rgba(16, 185, 129, 0.3);\n            color: #10b981;\n        }\n\n        .status-error {\n            background: rgba(239, 68, 68, 0.1);\n            border: 1px solid rgba(239, 68, 68, 0.3);\n            color: #ef4444;\n        }\n\n        \/* \u2500\u2500\u2500 Divider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .form-divider {\n            position: relative;\n            text-align: center;\n            margin: 2rem 0 1.5rem;\n            animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.320, 1) 0.4s both;\n        }\n\n        .form-divider span {\n            display: inline-block;\n            padding: 0.5rem 1.5rem;\n            background: rgba(255, 255, 255, 0.05);\n            border: 1px solid rgba(255, 255, 255, 0.08);\n            border-radius: 20px;\n            color: rgba(255, 255, 255, 0.6);\n            font-size: 0.75rem;\n            text-transform: uppercase;\n            letter-spacing: 0.1em;\n            font-weight: 500;\n            position: relative;\n        }\n\n        \/* Ensure all input text is white *\/\n        input[type=\"text\"],\n        input[type=\"email\"],\n        input[type=\"password\"],\n        input {\n            color: #ffffff !important;\n            -webkit-text-fill-color: #ffffff !important;\n        }\n\n        \/* Fix for autofill backgrounds *\/\n        input:-webkit-autofill,\n        input:-webkit-autofill:hover,\n        input:-webkit-autofill:focus {\n            -webkit-text-fill-color: #ffffff !important;\n            -webkit-box-shadow: 0 0 0px 1000px rgba(255, 255, 255, 0.05) inset !important;\n            transition: background-color 5000s ease-in-out 0s;\n        }\n        @media (max-width: 480px) {\n            .card-body {\n                padding: 3rem 2rem;\n            }\n            \n            .card-img-top {\n                max-width: 160px !important;\n            }\n\n            .form-header h2 {\n                font-size: 1.75rem;\n            }\n            \n            .button-row {\n                grid-template-columns: 1fr;\n            }\n\n            .wpforms-field-large {\n                padding: 1rem 1.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <!-- Animated gradient orbs -->\n    <div class=\"gradient-orb orb1\"><\/div>\n    <div class=\"gradient-orb orb2\"><\/div>\n\n    <div class=\"c_login_container\">\n        <div class=\"card\">\n            <img decoding=\"async\"\n                src=\"https:\/\/nuvix.com\/wp-content\/uploads\/2025\/01\/Untitled-design-77.png\"\n                class=\"card-img-top\"\n                alt=\"Nuvix Password Recovery\"\n            >\n            <div class=\"card-body\">\n                <!-- Form Header -->\n                <div class=\"form-header\">\n                    <h2>R\u00e9initialiser le mot de passe<\/h2>\n                    <p>Nous vous enverrons un code de v\u00e9rification pour r\u00e9initialiser votre mot de passe.<\/p>\n                <\/div>\n\n                <!-- Status Message Container -->\n                <div id=\"status-container\"><\/div>\n\n                <form id=\"recovery-form\" action=\"\">\n                    <!-- Step 1: Email Input -->\n                    <div class=\"form-group\">\n                        <label for=\"email\" class=\"wpforms-field-label\">Email ou nom d'utilisateur<\/label>\n                        <input\n                            type=\"email\"\n                            class=\"wpforms-field-large\"\n                            id=\"email\"\n                            name=\"email\"\n                            required\n placeholder=\"you@example.com\"\n                        >\n                    <\/div>\n\n                    <button\n                        type=\"button\"\n                        class=\"btn-send-otp btn-professional\"\n                    >\n                        Envoyer le code de v\u00e9rification\n                    <\/button>\n\n                    <div class=\"form-divider\">\n                        <span>V\u00e9rification<\/span>\n                    <\/div>\n\n                    <!-- Step 2: OTP and New Password -->\n                    <div class=\"form-group\">\n                        <label for=\"otp\" class=\"wpforms-field-label\">Code de v\u00e9rification<\/label>\n                        <input\n                            type=\"text\"\n                            class=\"wpforms-field-large\"\n                            id=\"otp\"\n                            name=\"otp\"\n                            required\n placeholder=\"Saisir le code \u00e0 6 chiffres\"\n                            disabled\n>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label for=\"new-password\" class=\"wpforms-field-label\">Nouveau mot de passe<\/label>\n                        <input\n                            type=\"password\"\n                            class=\"wpforms-field-large\"\n                            id=\"new-password\"\n                            name=\"new-password\"\n                            required\n placeholder=\"--------\"\n                            disabled\n>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label for=\"confirm-password\" class=\"wpforms-field-label\">Confirmer le mot de passe<\/label>\n                        <input\n                            type=\"password\"\n                            class=\"wpforms-field-large\"\n                            id=\"confirm-password\"\n                            name=\"confirm-password\"\n                            required\n placeholder=\"--------\"\n                            disabled\n>\n                    <\/div>\n\n                    <div class=\"button-row\">\n                        <a\n                            href=\"\/fr\/c_login\/\"\n                            class=\"btn-professional btn-secondary-style\"\n                        >\n                            Retour \u00e0 la page d'accueil\n                        <\/a>\n                        <button\n                            type=\"button\"\n                            class=\"btn-recover-pw btn-professional\"\n                            disabled\n>\n                            Modifier le mot de passe\n                        <\/button>\n                    <\/div>\n                <input type=\"hidden\" name=\"trp-form-language\" value=\"fr\"\/><\/form>\n                <!-- Language Switcher --><p><\/p>\n            <center>    <div class=\"ulcs-widget modern-style\"\n         data-position=\"inline\" \n         data-type=\"language\">\n        <button class=\"ulcs-trigger\" aria-label=\"Changer de langue\">\n            <div class=\"ulcs-current\">\n                                    <span class=\"ulcs-flag\">\ud83c\uddeb\ud83c\uddf7<\/span>\n                    <span class=\"ulcs-lang\">FR<\/span>\n                                \n                                \n                            <\/div>\n            <svg class=\"ulcs-arrow\" width=\"12\" height=\"12\" viewbox=\"0 0 12 12\" fill=\"none\">\n                <path d=\"M3 4.5L6 7.5L9 4.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/>\n            <\/svg>\n        <\/button>\n    <\/div>\n    <\/center>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    \n\n    <script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\n    <script>\n        jQuery(document).ready(function($) {\n            let otpSent = false;\n\n            function showStatus(message, type) {\n                const statusHtml = `<div class=\"status-message status-${type}\">${message}<\/div>`;\n                $('#status-container').html(statusHtml);\n                setTimeout(() => {\n                    $('#status-container').fadeOut(300, function() {\n                        $(this).empty().show();\n                    });\n                }, 5000);\n            }\n\n            function validateFormFields() {\n                const email = $('#email').val().trim();\n                const otp = $('#otp').val().trim();\n                const newPassword = $('#new-password').val().trim();\n                const confirmPassword = $('#confirm-password').val().trim();\n                \n                \/\/ Enable\/disable recover button\n                $('.btn-recover-pw').prop('disabled',\n                    !(email && otp && newPassword && confirmPassword && newPassword === confirmPassword && otpSent)\n                );\n\n                \/\/ Visual feedback for password match\n                if (confirmPassword && newPassword !== confirmPassword) {\n                    $('#confirm-password').css('border-color', 'rgba(239, 68, 68, 0.5)');\n                } else if (confirmPassword && newPassword === confirmPassword) {\n                    $('#confirm-password').addClass('verified');\n                } else {\n                    $('#confirm-password').removeClass('verified').css('border-color', '');\n                }\n            }\n\n            function sendOTP() {\n                const email = $('#email').val();\n                if (!email) {\n                    showStatus('Please enter your email address', 'error');\n                    return;\n                }\n\n                $('.btn-send-otp').prop('disabled', true).addClass('loading');\n\n                \/\/ Simulate AJAX call - replace with actual endpoint\n                $.ajax({\n                    type: 'POST',\n                    url: typeof ajax_object !== 'undefined' ? ajax_object.ajax_url : '\/wp-admin\/admin-ajax.php',\n                    data: { action: 'send_otp', email },\n                    success(response) {\n                        $('.btn-send-otp')\n                            .prop('disabled', false)\n                            .removeClass('loading')\n                            .addClass('otp-sent')\n                            .text('Resend Code');\n                        \n                        \/\/ Enable OTP and password fields\n                        $('#otp, #new-password, #confirm-password').prop('disabled', false);\n                        otpSent = true;\n                        \n                        showStatus('Verification code sent to your email', 'success');\n                        $('#otp').focus();\n                        \n                        \/\/ Add verified state to email field\n                        $('#email').addClass('verified');\n                    },\n                    error() {\n                        $('.btn-send-otp').prop('disabled', false).removeClass('loading');\n                        showStatus('Could not send verification code. Please try again.', 'error');\n                    }\n                });\n            }\n\n            function submitForm() {\n                const email = $('#email').val();\n                const otp = $('#otp').val();\n                const newPassword = $('#new-password').val();\n                \n                $('.btn-recover-pw').prop('disabled', true).addClass('loading');\n\n                \/\/ Simulate AJAX call - replace with actual endpoint\n                $.ajax({\n                    type: 'POST',\n                    url: typeof ajax_object !== 'undefined' ? ajax_object.ajax_url : '\/wp-admin\/admin-ajax.php',\n                    data: {\n                        action: 'verify_and_update_password',\n                        email,\n                        otp,\n                        new_password: newPassword\n                    },\n                    success(response) {\n                        Swal.fire({\n                            icon: 'success',\n                            title: 'Password Reset Successful',\n                            text: 'Your password has been updated. Redirecting to login...',\n                            showConfirmButton: false,\n                            timer: 2000,\n                            timerProgressBar: true,\n                            background: 'rgba(255, 255, 255, 0.05)',\n                            color: '#ffffff',\n                            backdrop: `rgba(0,0,0,0.8)`\n                        }).then(() => {\n                            window.location.href = \"\/c_login\";\n                        });\n                    },\n                    error(error) {\n                        $('.btn-recover-pw').prop('disabled', false).removeClass('loading');\n                        Swal.fire({\n                            icon: 'error',\n                            title: 'Error',\n                            text: error.responseText || 'Could not reset password. Please try again.',\n                            background: 'rgba(255, 255, 255, 0.05)',\n                            color: '#ffffff',\n                            backdrop: `rgba(0,0,0,0.8)`\n                        });\n                    }\n                });\n            }\n\n            \/\/ Event listeners\n            $('#email, #otp, #new-password, #confirm-password').on('input', validateFormFields);\n            $('.btn-send-otp').on('click', sendOTP);\n            $('.btn-recover-pw').on('click', submitForm);\n\n            \/\/ Enter key support\n            $('#email').on('keypress', function(e) {\n                if (e.which === 13 && !otpSent) {\n                    e.preventDefault();\n                    sendOTP();\n                }\n            });\n\n            $('#otp, #new-password, #confirm-password').on('keypress', function(e) {\n                if (e.which === 13 && !$('.btn-recover-pw').prop('disabled')) {\n                    e.preventDefault();\n                    submitForm();\n                }\n            });\n\n            \/\/ Parallax effect for gradient orbs\n            document.addEventListener('mousemove', (e) => {\n                const mouseX = e.clientX \/ window.innerWidth;\n                const mouseY = e.clientY \/ window.innerHeight;\n                \n                const orb1 = document.querySelector('.orb1');\n                const orb2 = document.querySelector('.orb2');\n                \n                if (orb1) {\n                    orb1.style.transform = `translate(${mouseX * 20}px, ${mouseY * 20}px)`;\n                }\n                if (orb2) {\n                    orb2.style.transform = `translate(${-mouseX * 15}px, ${-mouseY * 15}px)`;\n                }\n            });\n        });\n    <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"R\u00e9cup\u00e9ration de mot de passe - Nuvix AI-Powered Trading Platform R\u00e9initialiser le mot de passe Nous vous enverrons un code de v\u00e9rification pour r\u00e9initialiser votre mot de passe Email ou nom d'utilisateur Envoyer le code de v\u00e9rification Code de v\u00e9rification Nouveau mot de passe Confirmer le mot de passe Retour \u00e0 la connexion Changer le mot de passe","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-24784","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/pages\/24784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/comments?post=24784"}],"version-history":[{"count":103,"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/pages\/24784\/revisions"}],"predecessor-version":[{"id":43168,"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/pages\/24784\/revisions\/43168"}],"wp:attachment":[{"href":"https:\/\/nuvix.com\/fr\/wp-json\/wp\/v2\/media?parent=24784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}