{"id":790,"date":"2026-04-08T14:57:45","date_gmt":"2026-04-08T14:57:45","guid":{"rendered":"https:\/\/ammpf.mx\/en\/?page_id=790"},"modified":"2026-06-02T21:39:44","modified_gmt":"2026-06-02T21:39:44","slug":"afiliarme","status":"publish","type":"page","link":"https:\/\/ammpf.mx\/en\/afiliarme\/","title":{"rendered":"Join AMMPF"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"790\" class=\"elementor elementor-790\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-29d9f22c e-con-full e-flex e-con e-parent\" data-id=\"29d9f22c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-2dbf97a5 e-con-full e-flex e-con e-child\" data-id=\"2dbf97a5\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_direction&quot;:&quot;negative&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:7,&quot;sizes&quot;:[]},&quot;motion_fx_blur_effect&quot;:&quot;yes&quot;,&quot;motion_fx_blur_direction&quot;:&quot;out-in-out&quot;,&quot;motion_fx_blur_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:15,&quot;sizes&quot;:[]},&quot;motion_fx_blur_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:60}},&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-243bc5b e-flex e-con-boxed e-con e-parent\" data-id=\"243bc5b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-9b369f5 e-con-full e-flex e-con e-child\" data-id=\"9b369f5\" data-element_type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5de821a animated-slow elementor-widget elementor-widget-heading\" data-id=\"5de821a\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;,&quot;_animation_delay&quot;:350,&quot;_animation_mobile&quot;:&quot;slideInDown&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Join AMMPF<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50cf3ad elementor-widget__width-inherit elementor-widget-tablet__width-initial elementor-widget-mobile__width-inherit e-transform animated-slow elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"50cf3ad\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;,&quot;_animation_delay&quot;:450,&quot;_transform_rotateZ_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;90&quot;,&quot;sizes&quot;:[]},&quot;_transform_rotateZ_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;0&quot;,&quot;sizes&quot;:[]},&quot;_animation_mobile&quot;:&quot;fadeIn&quot;,&quot;_transform_rotateZ_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f09da1f animated-slow elementor-widget elementor-widget-text-editor\" data-id=\"f09da1f\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;,&quot;_animation_delay&quot;:500,&quot;_animation_mobile&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">The<strong> Mexican Association for Preventive and Functional Medicine<\/strong> has established itself as a hub for academic and professional exchange\u00a0 a space where physicians, clinics, and healthcare organizations come together to collaborate, conduct research, and strengthen their <strong>medical practice<\/strong> through a<strong> functional and<\/strong> <strong>preventive lens.<\/strong><\/span><\/p><p><span style=\"font-weight: 400;\">Be part of this evidence-based medical model built on learning, collaboration, and continuous improvement and join us in advancing a form of medicine that prioritizes comprehensive health, scientific research, and quality of life for society.<\/span><\/p><p><strong>Benefits of Membership<\/strong><\/p><ul><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">First-hand access to specialized content and articles<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Preferential discounts on congresses, courses, and academic events<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Exclusive educational sessions, talks, and clinical updates<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Professional community for knowledge exchange and networking<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Resources and tools to strengthen your clinical practice<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c8a53b2 elementor-widget elementor-widget-html\" data-id=\"c8a53b2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- \n  REGISTRATION FORM (ENGLISH VERSION) - AMMPF\n  Integration instructions for WordPress \/ Elementor:\n  1. Add an \"HTML\" widget in Elementor on the desired section of https:\/\/ammpf.mx\/en\/afiliarme\/\n  2. Copy the entire contents of this file and paste it into the HTML widget.\n  3. If you need to change the registration destination URL, modify the `REGISTRATION_API_URL` constant in the JavaScript section at the end of this file.\n-->\n\n<div class=\"ammpf-embed-wrapper\">\n  <!-- Main Card -->\n  <div class=\"ammpf-embed-card\" id=\"ammpfRegistrationCard\">\n    <div class=\"ammpf-embed-header\">\n      <h3 class=\"ammpf-embed-title\">Registration Form<\/h3>\n      <p class=\"ammpf-embed-subtitle\">Enter your details below. Once your application is reviewed and approved by our administrators, we will send you an email to proceed with your payment.<\/p>\n    <\/div>\n\n    <!-- Alert Container (Errors) -->\n    <div class=\"ammpf-embed-alert-container\" id=\"ammpfAlertContainer\" style=\"display: none;\">\n      <div class=\"ammpf-embed-alert ammpf-embed-alert-danger\">\n        <span class=\"ammpf-embed-alert-icon\">\u2715<\/span>\n        <span class=\"ammpf-embed-alert-text\" id=\"ammpfAlertText\">An error occurred.<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Registration Form -->\n    <form id=\"ammpfRegistrationForm\" class=\"ammpf-embed-form\" novalidate>\n      <!-- Hidden Field: Preferred Language -->\n      <input type=\"hidden\" name=\"preferred_lang\" id=\"ammpf_preferred_lang\" value=\"en\">\n\n      <!-- Field: Full Name -->\n      <div class=\"ammpf-embed-group\">\n        <label for=\"ammpf_name\" class=\"ammpf-embed-label\">Full Name<\/label>\n        <input type=\"text\" class=\"ammpf-embed-input\" id=\"ammpf_name\" name=\"name\" required placeholder=\"e.g. Dr. John Doe\">\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_name\">Please enter your full name (minimum 3 letters).<\/div>\n      <\/div>\n\n      <!-- Field: Email Address -->\n      <div class=\"ammpf-embed-group\">\n        <label for=\"ammpf_email\" class=\"ammpf-embed-label\">Email Address<\/label>\n        <input type=\"email\" class=\"ammpf-embed-input\" id=\"ammpf_email\" name=\"email\" required placeholder=\"example@email.com\">\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_email\">Please enter a valid email address.<\/div>\n      <\/div>\n\n      <!-- Field: Phone \/ WhatsApp -->\n      <div class=\"ammpf-embed-group\">\n        <label for=\"ammpf_phone\" class=\"ammpf-embed-label\">Phone \/ WhatsApp<\/label>\n        <input type=\"tel\" class=\"ammpf-embed-input\" id=\"ammpf_phone\" name=\"phone\" required placeholder=\"10 digits\" maxlength=\"10\">\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_phone\">Please enter a valid 10-digit contact number.<\/div>\n      <\/div>\n\n      <!-- Field: Area of Interest -->\n      <div class=\"ammpf-embed-group\">\n        <label for=\"ammpf_interest\" class=\"ammpf-embed-label\">Area of Interest<\/label>\n        <input type=\"text\" class=\"ammpf-embed-input\" id=\"ammpf_interest\" name=\"interest_area\" required placeholder=\"e.g. Preventive Medicine, Functional Medicine\">\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_interest\">Please write your area of interest.<\/div>\n      <\/div>\n\n      <!-- Field: Professional License Number -->\n      <div class=\"ammpf-embed-group\">\n        <label for=\"ammpf_license\" class=\"ammpf-embed-label\">Professional License Number<\/label>\n        <input type=\"text\" class=\"ammpf-embed-input\" id=\"ammpf_license\" name=\"license_number\" required placeholder=\"Professional license\" maxlength=\"10\" pattern=\"\\d*\" oninput=\"this.value = this.value.replace(\/[^0-9]\/g, '')\">\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_license\">Please enter your professional license number.<\/div>\n      <\/div>\n\n      <!-- Field: Official Identification (INE) -->\n      <div class=\"ammpf-embed-group\">\n        <label class=\"ammpf-embed-label\">Official Identification (INE)<\/label>\n        \n        <!-- Toggle camera \/ file -->\n        <div class=\"ammpf-embed-toggle-group\">\n          <button type=\"button\" class=\"ammpf-embed-toggle-btn active\" id=\"ammpf_btn_toggle_file\">Upload File<\/button>\n          <button type=\"button\" class=\"ammpf-embed-toggle-btn\" id=\"ammpf_btn_toggle_camera\">Use Camera<\/button>\n          <input type=\"hidden\" name=\"ine_upload_type\" id=\"ammpf_ine_upload_type\" value=\"file\">\n        <\/div>\n        \n        <!-- File section -->\n        <div id=\"ammpf_ine_file_section\">\n          <input type=\"file\" class=\"ammpf-embed-input\" id=\"ammpf_ine_file\" accept=\".jpg,.jpeg,.png,.webp,.pdf\">\n          <div style=\"font-size: 0.8rem; color: #6c757d; margin-top: 5px;\">Allowed formats: JPG, PNG, WEBP or PDF. Max 10MB.<\/div>\n        <\/div>\n        \n        <!-- Camera section -->\n        <div id=\"ammpf_ine_camera_section\" style=\"display: none;\">\n          <div class=\"ammpf-camera-container\">\n            <video id=\"ammpf_ine_video\" autoplay playsinline class=\"ammpf-camera-video\"><\/video>\n            <div class=\"ammpf-camera-overlay\">\n              <div class=\"ammpf-camera-box\">\n                <span class=\"ammpf-camera-box-text\">Place the front of your INE here<\/span>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"ammpf-camera-actions\">\n            <button type=\"button\" class=\"ammpf-camera-btn\" id=\"ammpf_btn_start_camera\">Start Camera<\/button>\n            <button type=\"button\" class=\"ammpf-camera-btn\" id=\"ammpf_btn_capture_photo\" disabled>Capture<\/button>\n          <\/div>\n        <\/div>\n        \n        <!-- Preview -->\n        <div id=\"ammpf_ine_preview_container\" class=\"ammpf-preview-container\" style=\"display: none;\">\n          <div style=\"font-size: 0.8rem; color: #6c757d; margin-bottom: 5px; font-weight: 500;\">Captured Image:<\/div>\n          <img decoding=\"async\" id=\"ammpf_ine_preview_img\" class=\"ammpf-preview-img\" src=\"\" alt=\"INE Preview\">\n          <input type=\"hidden\" name=\"ine_camera_data\" id=\"ammpf_ine_camera_data\">\n        <\/div>\n        \n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_ine\">Please provide your official identification (INE).<\/div>\n      <\/div>\n\n      <!-- Field: Privacy Policy Checkbox -->\n      <div class=\"ammpf-embed-group\" style=\"margin-bottom: 20px;\">\n        <label class=\"ammpf-checkbox-container\">\n          <input type=\"checkbox\" id=\"ammpf_privacy_accepted\" name=\"privacy_accepted\" required>\n          <span class=\"ammpf-checkbox-text\">\n            I accept the <a href=\"#\" class=\"ammpf-privacy-link\">Privacy Policy<\/a> and the processing of my personal data in accordance with the terms.\n          <\/span>\n        <\/label>\n        <div class=\"ammpf-embed-error-msg\" id=\"error_ammpf_privacy\">You must accept the privacy policy to continue.<\/div>\n      <\/div>\n\n      <!-- Submit Button -->\n      <button type=\"submit\" class=\"ammpf-embed-submit\" id=\"ammpfSubmitBtn\">\n        <span class=\"ammpf-embed-submit-text\">Submit Application<\/span>\n        <svg class=\"ammpf-embed-spinner\" viewBox=\"0 0 50 50\">\n          <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\"><\/circle>\n        <\/svg>\n      <\/button>\n    <\/form>\n\n    <!-- Login link at the footer -->\n    <div class=\"ammpf-embed-footer\">\n      <span>Already a member? <a href=\"https:\/\/ammpf.mx\/registros\/portal\/login.php\" class=\"ammpf-embed-link\">log in here<\/a><\/span>\n    <\/div>\n  <\/div>\n\n  <!-- Success View (Hidden initially) -->\n  <div class=\"ammpf-embed-card ammpf-embed-success-card\" id=\"ammpfSuccessCard\" style=\"display: none;\">\n    <div class=\"ammpf-embed-success-icon-container\">\n      <div class=\"ammpf-embed-success-circle\">\n        <svg class=\"ammpf-embed-checkmark\" viewBox=\"0 0 52 52\">\n          <circle class=\"ammpf-embed-checkmark-circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\"\/>\n          <path class=\"ammpf-embed-checkmark-check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\/>\n        <\/svg>\n      <\/div>\n    <\/div>\n    <h3 class=\"ammpf-embed-success-title\">Thank you for requesting membership in the AMMPF!<\/h3>\n    <p class=\"ammpf-embed-success-msg\" id=\"ammpfSuccessText\">\n      Your application has been successfully received. Our team is verifying your documents and the board of the Mexican Association of Preventive and Functional Medicine will review your information in detail.<br><br>\n      We will give you a response shortly.<br><br>\n      If you have any questions, write to us at <a href=\"mailto:membresia@ammpf.mx\" style=\"color: #062A51; font-weight: bold; text-decoration: none;\">membresia@ammpf.mx<\/a><br><br>\n      Welcome to this movement!\n    <\/p>\n    <div class=\"ammpf-embed-success-action\">\n      <a href=\"https:\/\/ammpf.mx\/en\/\" class=\"ammpf-embed-btn-home\">Back to Home<\/a>\n    <\/div>\n  <\/div>\n\n  <!-- Privacy Policy Modal -->\n  <div id=\"ammpfPrivacyModal\" class=\"ammpf-modal-overlay\">\n    <div class=\"ammpf-modal-card\">\n      <div class=\"ammpf-modal-header\">\n        <h5 class=\"ammpf-modal-title\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\/><\/svg>\n          Privacy Policy and Data Handling\n        <\/h5>\n        <button type=\"button\" class=\"ammpf-modal-close-icon\" id=\"ammpfClosePrivacyModal\">&times;<\/button>\n      <\/div>\n      <div class=\"ammpf-modal-body\">\n        <div class=\"ammpf-modal-note\" style=\"background-color: rgba(6, 42, 81, 0.05); border-left: 4px solid #062A51; margin-bottom: 20px; color: #062A51;\">\n          <strong>Official PDF Document:<\/strong> You can view or download the official version of this document: \n          <a href=\"\/registros\/AVISO%20DE%20PRIVACIDAD%20INTEGRAL%20-AMM.pdf\" target=\"_blank\" style=\"color: #062A51; font-weight: bold; text-decoration: underline;\">Download PDF<\/a>.\n        <\/div>\n        <p class=\"fw-bold\" style=\"font-weight: 700; color: #062A51;\">Mexican Association of Preventive and Functional Medicine (AMMPF)<\/p>\n        <p>The <strong>Mexican Association of Preventive and Functional Medicine<\/strong>, hereinafter <strong>\"AMMPF\"<\/strong>, with official website <a href=\"https:\/\/ammpf.mx\/\" target=\"_blank\" style=\"color: #062A51; text-decoration: underline;\">https:\/\/ammpf.mx\/<\/a>, is responsible for the processing, use, safeguarding, and protection of personal data provided by users, affiliates, applicants, doctors, specialists, authors, collaborators, commercial partners, or any person who interacts with our forms, digital platforms, means of contact, or services.<\/p>\n        <p>In compliance with the applicable legislation on the protection of personal data held by private parties, we make this Integral Privacy Notice available.<\/p>\n        \n        <h6>1. Personal data we may collect<\/h6>\n        <p>AMMPF may collect the following personal data:<\/p>\n        <ul>\n            <li>Full name<\/li>\n            <li>Email address<\/li>\n            <li>Telephone or WhatsApp<\/li>\n            <li>Area of interest<\/li>\n            <li>Medical specialty<\/li>\n            <li>Professional license number<\/li>\n            <li>Official identification documents, such as INE\/ID<\/li>\n            <li>Professional or academic documents<\/li>\n            <li>Information sent through contact, membership, or academic publication forms<\/li>\n            <li>Materials, articles, files, or documents sent for editorial, academic, or scientific review<\/li>\n        <\/ul>\n        <p>In the event that data related to professional career, academic background, medical documents, scientific content, or information linked to the holder's professional practice is requested, it will be treated solely for the purposes indicated in this notice.<\/p>\n\n        <h6>2. Purposes of the processing of personal data<\/h6>\n        <p>The personal data collected will be used for the following main purposes:<\/p>\n        <ul>\n            <li>Receive, review, and manage membership requests to AMMPF.<\/li>\n            <li>Validate the identity, documentation, and professional profile of applicants or affiliates.<\/li>\n            <li>Contact users regarding their requests, registrations, memberships, or pending processes.<\/li>\n            <li>Manage access, benefits, contents, events, academic programs, certifications, or activities of the association.<\/li>\n            <li>Review, validate, and, if applicable, publish academic, medical, scientific, or editorial content sent by authors or collaborators.<\/li>\n            <li>Follow up on requests for contact, collaboration, alliances, or institutional participation.<\/li>\n            <li>Send information related to activities, courses, congresses, clinical updates, educational content, or communications of AMMPF itself.<\/li>\n            <li>Comply with applicable administrative, legal, fiscal, operational, or security obligations.<\/li>\n        <\/ul>\n\n        <h6>3. Secondary purposes<\/h6>\n        <p>Additionally, AMMPF may use your personal data to:<\/p>\n        <ul>\n            <li>Send informative, academic, promotional, or institutional communications.<\/li>\n            <li>Invite you to events, courses, congresses, diplomas, certifications, or activities related to preventive, functional medicine, health, research, and continuous medical education.<\/li>\n            <li>Prepare internal statistics on interests, participation, requests, and user behavior within our platforms.<\/li>\n            <li>Improve our services, content, membership processes, and digital experience.<\/li>\n        <\/ul>\n        <p>The holder may request at any time that their data not be used for secondary or promotional purposes.<\/p>\n\n        <h6>4. Confidentiality and data protection<\/h6>\n        <p>AMMPF recognizes the importance of protecting the privacy and confidentiality of information provided by its users, affiliates, applicants, authors, and collaborators.<\/p>\n        <p>The personal data and documents received will be treated confidentially and used only for authorized purposes. AMMPF implements reasonable administrative, technical, and physical measures to protect information against damage, loss, alteration, destruction, use, access, or unauthorized treatment.<\/p>\n        <p>Access to personal data will be limited only to authorized personnel or third parties who, by the nature of their functions, must participate in the operation, validation, management, administration, communication, or provision of services related to AMMPF.<\/p>\n\n        <h6>5. Transfer of personal data<\/h6>\n        <p>AMMPF will not sell, rent, or commercialize the personal data of the holders.<\/p>\n        <p>The data may only be shared when necessary to comply with the purposes described in this notice, with providers of technological, administrative, legal, accounting, educational, editorial services, digital platforms, or operational allies that support AMMPF in the development of its activities.<\/p>\n        <p>Data may also be shared when there is a legal obligation, request from a competent authority, or when necessary to protect the rights, safety, or legitimate interests of AMMPF, its affiliates, or users.<\/p>\n        <p>In all cases, AMMPF will ensure that third parties who have access to personal data maintain adequate confidentiality and protection measures.<\/p>\n\n        <h6>6. Publication of academic or scientific content<\/h6>\n        <p>When a user, physician, specialist, author, or collaborator submits articles, research, documents, texts, images, academic or scientific materials for review, validation, or possible publication on AMMPF platforms, they authorize these materials to be evaluated by the corresponding team.<\/p>\n        <p>In case of approval, the content may be disseminated in media, digital platforms, website, Medical Journal, social networks, or institutional channels of AMMPF, respecting the authorship and applicable editorial conditions.<\/p>\n        <p>The author's personal data will be treated solely for the purposes of review, validation, contact, editorial management, and possible publication.<\/p>\n\n        <h6>7. ARCO Rights<\/h6>\n        <p>The holder of the personal data may exercise at any time their rights of:<\/p>\n        <ul>\n            <li><strong>Access:<\/strong> know what personal data we have.<\/li>\n            <li><strong>Rectification:<\/strong> request the correction of incorrect or outdated data.<\/li>\n            <li><strong>Cancellation:<\/strong> request the deletion of their data when appropriate.<\/li>\n            <li><strong>Opposition:<\/strong> oppose the use of their data for certain purposes.<\/li>\n        <\/ul>\n        <p>To exercise these rights, the holder may send a request to the email: <a href=\"mailto:hola@ammpf.mx\" style=\"color: #062A51; font-weight: bold;\">hola@ammpf.mx<\/a> or, if applicable, to the email indicated for membership processes: <a href=\"mailto:membresia@ammpf.mx\" style=\"color: #062A51; font-weight: bold;\">membresia@ammpf.mx<\/a>.<\/p>\n        <p>The request must include full name, contact method, clear description of the right they wish to exercise, and a document proving their identity.<\/p>\n\n        <h6>8. Revocation of consent<\/h6>\n        <p>The holder may revoke at any time the consent granted for the processing of their personal data, provided there is no legal, contractual, administrative, or academic obligation that prevents its immediate deletion.<\/p>\n        <p>To request the revocation of consent, they must send a request to the contact email indicated in this notice.<\/p>\n\n        <h6>9. Use of cookies and similar technologies<\/h6>\n        <p>The AMMPF website may use cookies, analytical tools, forms, pixels, tags, or similar technologies to improve the user experience, analyze website operations, measure interactions, and optimize content.<\/p>\n        <p>The user may disable the use of cookies from their browser settings, taking into account that some website functions may be limited.<\/p>\n\n        <h6>10. Data conservation<\/h6>\n        <p>Personal data will be kept for the time necessary to fulfill the purposes described in this notice, as well as to meet applicable legal, administrative, fiscal, academic, editorial, or security obligations.<\/p>\n        <p>Once this period is concluded, AMMPF may delete, block, or anonymize the data in accordance with its internal processes and applicable legislation.<\/p>\n\n        <h6>11. Changes to the Privacy Notice<\/h6>\n        <p>AMMPF may modify, update, or supplement this Privacy Notice at any time, derived from legal, administrative, operational, technological, or service changes.<\/p>\n        <p>Any modification will be published on the official website: <a href=\"https:\/\/ammpf.mx\/\" target=\"_blank\" style=\"color: #062A51; text-decoration: underline;\">https:\/\/ammpf.mx\/<\/a>.<\/p>\n        <p>It is recommended to consult this notice periodically to know about any updates.<\/p>\n\n        <h6>12. Consent<\/h6>\n        <p>By providing their personal data through forms, registrations, emails, digital platforms, or any means of contact of AMMPF, the holder acknowledges having read and understood this Privacy Notice and accepts the processing of their data in accordance with the terms established herein.<\/p>\n        \n        <hr style=\"border: 0; border-top: 1px solid #dee2e6; margin: 20px 0;\">\n        <p style=\"font-size: 0.8rem; color: #6c757d; margin-bottom: 0;\"><strong>Last update:<\/strong> June 2026<\/p>\n      <\/div>\n      <div class=\"ammpf-modal-footer\">\n        <button type=\"button\" class=\"ammpf-modal-btn ammpf-modal-btn-secondary\" id=\"ammpfClosePrivacyModalBtn\">Close<\/button>\n        <button type=\"button\" class=\"ammpf-modal-btn ammpf-modal-btn-primary\" id=\"ammpfAcceptPrivacyModalBtn\">Accept Terms<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- Scoped Styling of AMMPF to avoid interferences -->\n<style>\n  \/* Import fonts *\/\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700&family=Roboto:wght@400;500;700&display=swap');\n\n  .ammpf-embed-wrapper {\n    font-family: 'Roboto', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    color: #333333;\n    max-width: 650px;\n    margin: 30px auto;\n    box-sizing: border-box;\n  }\n\n  .ammpf-embed-wrapper *,\n  .ammpf-embed-wrapper *::before,\n  .ammpf-embed-wrapper *::after {\n    box-sizing: border-box;\n  }\n\n  \/* Premium Card *\/\n  .ammpf-embed-card {\n    background-color: #ffffff;\n    border: 1px solid #E5E8ED;\n    border-radius: 16px;\n    padding: 40px;\n    box-shadow: 0 15px 35px rgba(6, 42, 81, 0.06);\n    transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), box-shadow 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n  }\n\n  .ammpf-embed-card:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 20px 45px rgba(6, 42, 81, 0.1);\n  }\n\n  \/* Header *\/\n  .ammpf-embed-header {\n    margin-bottom: 30px;\n  }\n\n  .ammpf-embed-title {\n    font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    font-weight: 700;\n    font-size: 1.8rem;\n    color: #062A51;\n    margin: 0 0 10px 0;\n    line-height: 1.25;\n  }\n\n  .ammpf-embed-subtitle {\n    font-size: 0.95rem;\n    line-height: 1.6;\n    color: #6c757d;\n    margin: 0;\n  }\n\n  \/* Alerts *\/\n  .ammpf-embed-alert-container {\n    margin-bottom: 25px;\n    animation: ammpfFadeIn 0.3s ease-out forwards;\n  }\n\n  .ammpf-embed-alert {\n    padding: 15px 20px;\n    border-radius: 8px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 0.9rem;\n    line-height: 1.4;\n  }\n\n  .ammpf-embed-alert-danger {\n    background-color: rgba(220, 53, 69, 0.08);\n    border: 1px solid rgba(220, 53, 69, 0.2);\n    color: #dc3545;\n  }\n\n  .ammpf-embed-alert-icon {\n    font-weight: bold;\n    font-size: 1rem;\n  }\n\n  \/* Form and Groups *\/\n  .ammpf-embed-form {\n    display: flex;\n    flex-direction: column;\n    gap: 20px;\n  }\n\n  .ammpf-embed-group {\n    display: flex;\n    flex-direction: column;\n  }\n\n  .ammpf-embed-label {\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 600;\n    font-size: 0.88rem;\n    color: #062A51;\n    margin-bottom: 8px;\n    text-transform: none;\n    letter-spacing: 0.3px;\n  }\n\n  \/* Input fields *\/\n  .ammpf-embed-input,\n  .ammpf-embed-select {\n    width: 100%;\n    border: 2px solid #E5E8ED;\n    border-radius: 8px;\n    padding: 14px 18px;\n    font-size: 0.95rem;\n    color: #333333;\n    font-family: 'Roboto', sans-serif;\n    background-color: #ffffff;\n    transition: all 0.3s ease;\n    outline: none;\n    -webkit-appearance: none;\n  }\n\n  .ammpf-embed-input::placeholder {\n    color: #b2bbc6;\n  }\n\n  .ammpf-embed-input:focus,\n  .ammpf-embed-select:focus {\n    border-color: #062A51;\n    box-shadow: 0 0 0 4px rgba(6, 42, 81, 0.08);\n    background-color: #ffffff;\n  }\n\n  \/* Select specific styling *\/\n  .ammpf-embed-select-wrapper {\n    position: relative;\n    width: 100%;\n  }\n\n  .ammpf-embed-select-wrapper::after {\n    content: \"\";\n    position: absolute;\n    right: 18px;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 0;\n    height: 0;\n    border-left: 6px solid transparent;\n    border-right: 6px solid transparent;\n    border-top: 6px solid #062A51;\n    pointer-events: none;\n    transition: transform 0.3s ease;\n  }\n\n  .ammpf-embed-select:focus + .ammpf-embed-select-wrapper::after {\n    transform: translateY(-50%) rotate(180deg);\n  }\n\n  .ammpf-embed-select option:disabled {\n    color: #b2bbc6;\n  }\n\n  \/* Validation error messages *\/\n  .ammpf-embed-error-msg {\n    color: #dc3545;\n    font-size: 0.8rem;\n    margin-top: 5px;\n    font-weight: 500;\n    display: none;\n    animation: ammpfSlideDown 0.25s ease-out forwards;\n  }\n\n  \/* Validation states *\/\n  .ammpf-embed-group.ammpf-invalid .ammpf-embed-input,\n  .ammpf-embed-group.ammpf-invalid .ammpf-embed-select {\n    border-color: #dc3545;\n    background-color: rgba(220, 53, 69, 0.01);\n  }\n\n  .ammpf-embed-group.ammpf-invalid .ammpf-embed-input:focus,\n  .ammpf-embed-group.ammpf-invalid .ammpf-embed-select:focus {\n    box-shadow: 0 0 0 4px rgba(220, 53, 69, 0.1);\n  }\n\n  .ammpf-embed-group.ammpf-invalid .ammpf-embed-error-msg {\n    display: block;\n  }\n\n  \/* Checkbox Privacy Policy *\/\n  .ammpf-checkbox-container {\n    display: flex;\n    align-items: flex-start;\n    gap: 10px;\n    cursor: pointer;\n    user-select: none;\n    margin-top: 5px;\n  }\n  .ammpf-checkbox-container input[type=\"checkbox\"] {\n    margin-top: 4px;\n    cursor: pointer;\n    accent-color: #062A51;\n    width: 16px;\n    height: 16px;\n    flex-shrink: 0;\n  }\n  .ammpf-checkbox-text {\n    font-size: 0.8rem;\n    color: #6c757d;\n    line-height: 1.4;\n    font-weight: 500;\n  }\n  .ammpf-privacy-link {\n    color: #062A51;\n    text-decoration: underline;\n    font-weight: 600;\n  }\n  .ammpf-privacy-link:hover {\n    color: #D4AF37;\n  }\n\n  \/* Submit Button *\/\n  .ammpf-embed-submit {\n    position: relative;\n    background-color: #062A51;\n    color: #ffffff;\n    border: 2px solid #062A51;\n    border-radius: 8px;\n    padding: 16px 24px;\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 600;\n    font-size: 1rem;\n    cursor: pointer;\n    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    outline: none;\n    margin-top: 10px;\n    box-shadow: 0 4px 10px rgba(6, 42, 81, 0.15);\n  }\n\n  .ammpf-embed-submit:hover:not(:disabled) {\n    background-color: #D4AF37;\n    border-color: #D4AF37;\n    color: #062A51;\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(212, 175, 55, 0.3);\n  }\n\n  .ammpf-embed-submit:active:not(:disabled) {\n    transform: translateY(0);\n    box-shadow: 0 4px 10px rgba(6, 42, 81, 0.15);\n  }\n\n  .ammpf-embed-submit:disabled {\n    opacity: 0.85;\n    cursor: not-allowed;\n  }\n\n  \/* Spinner *\/\n  .ammpf-embed-spinner {\n    display: none;\n    width: 24px;\n    height: 24px;\n    position: absolute;\n    animation: rotate 2s linear infinite;\n  }\n\n  .ammpf-embed-spinner .path {\n    stroke: currentColor;\n    stroke-linecap: round;\n    animation: dash 1.5s ease-in-out infinite;\n  }\n\n  .ammpf-embed-submitting .ammpf-embed-submit-text {\n    opacity: 0;\n  }\n\n  .ammpf-embed-submitting .ammpf-embed-spinner {\n    display: block;\n  }\n\n  \/* Footer Links *\/\n  .ammpf-embed-footer {\n    margin-top: 30px;\n    padding-top: 20px;\n    border-top: 1px solid #E5E8ED;\n    text-align: center;\n    font-size: 0.88rem;\n    color: #6c757d;\n  }\n\n  .ammpf-embed-link {\n    color: #062A51;\n    text-decoration: none;\n    font-weight: 700;\n    transition: color 0.2s ease;\n  }\n\n  .ammpf-embed-link:hover {\n    color: #D4AF37;\n  }\n\n  \/* Success Card *\/\n  .ammpf-embed-success-card {\n    text-align: center;\n    padding: 50px 40px;\n    animation: ammpfScaleUp 0.4s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;\n  }\n\n  .ammpf-embed-success-icon-container {\n    display: flex;\n    justify-content: center;\n    margin-bottom: 25px;\n  }\n\n  .ammpf-embed-success-circle {\n    width: 80px;\n    height: 80px;\n    border-radius: 50%;\n    background-color: rgba(212, 175, 55, 0.1);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .ammpf-embed-checkmark {\n    width: 52px;\n    height: 52px;\n    border-radius: 50%;\n    stroke: #D4AF37;\n    stroke-width: 3;\n    stroke-miterlimit: 10;\n    box-shadow: inset 0px 0px 0px #D4AF37;\n    animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;\n  }\n\n  .ammpf-embed-checkmark-circle {\n    stroke-dasharray: 166;\n    stroke-dashoffset: 166;\n    stroke-width: 3;\n    stroke-miterlimit: 10;\n    stroke: #D4AF37;\n    fill: none;\n    animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;\n  }\n\n  .ammpf-embed-checkmark-check {\n    transform-origin: 50% 50%;\n    stroke-dasharray: 48;\n    stroke-dashoffset: 48;\n    animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.6s forwards;\n  }\n\n  .ammpf-embed-success-title {\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 700;\n    font-size: 1.8rem;\n    color: #062A51;\n    margin: 0 0 15px 0;\n  }\n\n  .ammpf-embed-success-msg {\n    font-size: 1rem;\n    line-height: 1.6;\n    color: #6c757d;\n    margin: 0 0 30px 0;\n  }\n\n  .ammpf-embed-success-action {\n    display: flex;\n    justify-content: center;\n  }\n\n  .ammpf-embed-btn-home {\n    background-color: #062A51;\n    color: #ffffff;\n    text-decoration: none;\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 600;\n    font-size: 0.95rem;\n    padding: 14px 28px;\n    border-radius: 8px;\n    box-shadow: 0 4px 10px rgba(6, 42, 81, 0.15);\n    transition: all 0.3s ease;\n  }\n\n  .ammpf-embed-btn-home:hover {\n    background-color: #D4AF37;\n    color: #062A51;\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(212, 175, 55, 0.3);\n  }\n\n  \/* Animations *\/\n  @keyframes rotate {\n    100% { transform: rotate(360deg); }\n  }\n\n  @keyframes dash {\n    0% {\n      stroke-dasharray: 1, 150;\n      stroke-dashoffset: 0;\n    }\n    50% {\n      stroke-dasharray: 90, 150;\n      stroke-dashoffset: -35;\n    }\n    100% {\n      stroke-dasharray: 90, 150;\n      stroke-dashoffset: -124;\n    }\n  }\n\n  @keyframes stroke {\n    100% { stroke-dashoffset: 0; }\n  }\n\n  @keyframes ammpfFadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n\n  @keyframes ammpfScaleUp {\n    from {\n      opacity: 0;\n      transform: scale(0.96);\n    }\n    to {\n      opacity: 1;\n      transform: scale(1);\n    }\n  }\n\n  @keyframes ammpfSlideDown {\n    from {\n      opacity: 0;\n      transform: translateY(-10px);\n    }\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  \/* Estilos para carga de INE y c\u00e1mara *\/\n  .ammpf-embed-toggle-group {\n    display: flex;\n    gap: 10px;\n    margin-bottom: 12px;\n  }\n  .ammpf-embed-toggle-btn {\n    flex: 1;\n    text-align: center;\n    border: 2px solid #E5E8ED;\n    border-radius: 8px;\n    padding: 10px;\n    font-size: 0.85rem;\n    font-weight: 600;\n    cursor: pointer;\n    background: #ffffff;\n    color: #6c757d;\n    transition: all 0.2s ease;\n    outline: none;\n  }\n  .ammpf-embed-toggle-btn.active {\n    border-color: #062A51;\n    color: #062A51;\n    background-color: rgba(6, 42, 81, 0.03);\n  }\n  .ammpf-camera-container {\n    position: relative;\n    width: 100%;\n    height: 320px;\n    background-color: #1e2530;\n    border-radius: 8px;\n    overflow: hidden;\n    margin-bottom: 10px;\n    border: 2px solid #E5E8ED;\n  }\n  .ammpf-camera-video {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .ammpf-camera-overlay {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n  .ammpf-camera-box {\n    border: 3px solid #D4AF37;\n    border-radius: 8px;\n    width: 85%;\n    height: 60%;\n    box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);\n    position: relative;\n  }\n  .ammpf-camera-box-text {\n    position: absolute;\n    bottom: 5px;\n    left: 50%;\n    transform: translateX(-50%);\n    background: rgba(0, 0, 0, 0.7);\n    color: #D4AF37;\n    padding: 2px 8px;\n    font-size: 0.7rem;\n    border-radius: 4px;\n    white-space: nowrap;\n  }\n  .ammpf-camera-actions {\n    display: flex;\n    gap: 10px;\n    margin-bottom: 15px;\n  }\n  .ammpf-camera-btn {\n    flex: 1;\n    background-color: #062A51;\n    color: #ffffff;\n    border: none;\n    border-radius: 6px;\n    padding: 10px;\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 600;\n    font-size: 0.85rem;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    outline: none;\n  }\n  .ammpf-camera-btn:hover:not(:disabled) {\n    background-color: #D4AF37;\n    color: #062A51;\n  }\n  .ammpf-camera-btn:disabled {\n    opacity: 0.6;\n    cursor: not-allowed;\n  }\n  .ammpf-preview-container {\n    text-align: center;\n    margin-top: 12px;\n    background: #f8f9fa;\n    padding: 15px;\n    border-radius: 8px;\n    border: 1px dashed #ced4da;\n  }\n  .ammpf-preview-img {\n    max-height: 140px;\n    max-width: 100%;\n    border-radius: 6px;\n    border: 1px solid #dee2e6;\n  }\n\n  \/* Responsive *\/\n  @media (max-width: 576px) {\n    .ammpf-embed-card {\n      padding: 30px 20px;\n    }\n    .ammpf-embed-title {\n      font-size: 1.5rem;\n    }\n  }\n\n  \/* Modal Personalizado de Privacidad *\/\n  .ammpf-modal-overlay {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background-color: rgba(6, 42, 81, 0.4);\n    backdrop-filter: blur(5px);\n    -webkit-backdrop-filter: blur(5px);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 999999;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.3s ease;\n  }\n  .ammpf-modal-overlay.ammpf-modal-show {\n    opacity: 1;\n    pointer-events: auto;\n  }\n  .ammpf-modal-card {\n    background-color: #ffffff;\n    border: 2px solid #D4AF37;\n    border-radius: 16px;\n    width: 90%;\n    max-width: 600px;\n    max-height: 85vh;\n    box-shadow: 0 15px 45px rgba(0, 0, 0, 0.2);\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n    transform: scale(0.9);\n    transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);\n  }\n  .ammpf-modal-overlay.ammpf-modal-show .ammpf-modal-card {\n    transform: scale(1);\n  }\n  .ammpf-modal-header {\n    background-color: #f8f9fa;\n    padding: 18px 24px;\n    border-bottom: 1px solid #E5E8ED;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .ammpf-modal-title {\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 700;\n    font-size: 1.15rem;\n    color: #062A51;\n    margin: 0;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  .ammpf-modal-title svg {\n    width: 22px;\n    height: 22px;\n    fill: #D4AF37;\n  }\n  .ammpf-modal-close-icon {\n    font-size: 1.5rem;\n    font-weight: bold;\n    color: #b2bbc6;\n    cursor: pointer;\n    border: none;\n    background: none;\n    padding: 0;\n    line-height: 1;\n    transition: color 0.2s ease;\n  }\n  .ammpf-modal-close-icon:hover {\n    color: #062A51;\n  }\n  .ammpf-modal-body {\n    padding: 24px;\n    overflow-y: auto;\n    color: #333333;\n    font-size: 0.9rem;\n    line-height: 1.6;\n    text-align: left;\n  }\n  .ammpf-modal-body h6 {\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 700;\n    font-size: 0.95rem;\n    color: #062A51;\n    margin: 20px 0 8px 0;\n  }\n  .ammpf-modal-body h6:first-of-type {\n    margin-top: 0;\n  }\n  .ammpf-modal-body p {\n    margin: 0 0 12px 0;\n  }\n  .ammpf-modal-body ul, .ammpf-modal-body ol {\n    margin: 0 0 16px 0;\n    padding-left: 20px;\n  }\n  .ammpf-modal-body li {\n    margin-bottom: 6px;\n  }\n  .ammpf-modal-body a {\n    color: #062A51;\n    text-decoration: underline;\n    font-weight: 600;\n  }\n  .ammpf-modal-note {\n    background-color: #f8f9fa;\n    border-left: 4px solid #D4AF37;\n    padding: 12px 16px;\n    border-radius: 4px;\n    font-style: italic;\n    color: #6c757d;\n    margin: 16px 0;\n  }\n  .ammpf-modal-footer {\n    background-color: #f8f9fa;\n    padding: 16px 24px;\n    border-top: 1px solid #E5E8ED;\n    display: flex;\n    justify-content: flex-end;\n    gap: 12px;\n  }\n  .ammpf-modal-btn {\n    font-family: 'Montserrat', sans-serif;\n    font-weight: 600;\n    font-size: 0.88rem;\n    padding: 10px 20px;\n    border-radius: 6px;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    border: 2px solid transparent;\n  }\n  .ammpf-modal-btn-secondary {\n    background-color: #e5e8ed;\n    color: #495057;\n    border-color: #e5e8ed;\n  }\n  .ammpf-modal-btn-secondary:hover {\n    background-color: #ced4da;\n    border-color: #ced4da;\n  }\n  .ammpf-modal-btn-primary {\n    background-color: #062A51;\n    color: #ffffff;\n    border-color: #062A51;\n  }\n  .ammpf-modal-btn-primary:hover {\n    background-color: #D4AF37;\n    border-color: #D4AF37;\n    color: #062A51;\n  }\n<\/style>\n\n<!-- JavaScript Form Logic -->\n<script>\n  (function() {\n    'use strict';\n\n    \/\/ ACTION URL CONFIGURATION\n    const REGISTRATION_API_URL = '\/registros\/register_action.php';\n\n    \/\/ DOM Elements\n    const form = document.getElementById('ammpfRegistrationForm');\n    const submitBtn = document.getElementById('ammpfSubmitBtn');\n    const alertContainer = document.getElementById('ammpfAlertContainer');\n    const alertText = document.getElementById('ammpfAlertText');\n    const registrationCard = document.getElementById('ammpfRegistrationCard');\n    const successCard = document.getElementById('ammpfSuccessCard');\n\n    \/\/ Validate inputs individually\n    const fields = [\n      {\n        id: 'ammpf_name',\n        validate: value => value.trim().length >= 3\n      },\n      {\n        id: 'ammpf_email',\n        validate: value => \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value.trim())\n      },\n      {\n        id: 'ammpf_phone',\n        validate: value => \/^\\d{10}$\/.test(value.trim().replace(\/\\D\/g, ''))\n      },\n      {\n        id: 'ammpf_interest',\n        validate: value => value.trim().length > 0\n      },\n      {\n        id: 'ammpf_license',\n        validate: value => value.trim().length > 0\n      }\n    ];\n\n    \/\/ Real-time validation listeners\n    fields.forEach(field => {\n      const element = document.getElementById(field.id);\n      if (!element) return;\n\n      const triggerValidation = () => {\n        const isValid = field.validate(element.value);\n        const group = element.closest('.ammpf-embed-group');\n        \n        if (isValid) {\n          group.classList.remove('ammpf-invalid');\n        } else {\n          group.classList.add('ammpf-invalid');\n        }\n      };\n\n      element.addEventListener('blur', triggerValidation);\n      element.addEventListener('input', function() {\n        const group = element.closest('.ammpf-embed-group');\n        if (group.classList.contains('ammpf-invalid')) {\n          triggerValidation();\n        }\n      });\n    });\n\n    \/\/ Dynamic phone formatter (numbers only)\n    const phoneInput = document.getElementById('ammpf_phone');\n    if (phoneInput) {\n      phoneInput.addEventListener('input', function(e) {\n        this.value = this.value.replace(\/\\D\/g, '');\n      });\n    }\n\n    \/\/ Handle form submit\n    form.addEventListener('submit', function(event) {\n      event.preventDefault();\n      \n      alertContainer.style.display = 'none';\n      \n      \/\/ Validate all fields before submitting\n      let isFormValid = true;\n      fields.forEach(field => {\n        const element = document.getElementById(field.id);\n        const isValid = field.validate(element.value);\n        const group = element.closest('.ammpf-embed-group');\n        \n        if (!isValid) {\n          group.classList.add('ammpf-invalid');\n          isFormValid = false;\n        } else {\n          group.classList.remove('ammpf-invalid');\n        }\n      });\n\n      \/\/ Validate INE\n      const uploadType = document.getElementById('ammpf_ine_upload_type').value;\n      const errorIne = document.getElementById('error_ammpf_ine');\n      const ineGroup = errorIne.closest('.ammpf-embed-group');\n      let isIneValid = true;\n      \n      if (uploadType === 'file') {\n        const fileInput = document.getElementById('ammpf_ine_file');\n        if (!fileInput.files || fileInput.files.length === 0) {\n          isIneValid = false;\n        }\n      } else {\n        const cameraData = document.getElementById('ammpf_ine_camera_data').value;\n        if (!cameraData) {\n          isIneValid = false;\n        }\n      }\n      \n      if (!isIneValid) {\n        ineGroup.classList.add('ammpf-invalid');\n        errorIne.style.display = 'block';\n        isFormValid = false;\n      } else {\n        ineGroup.classList.remove('ammpf-invalid');\n        errorIne.style.display = 'none';\n      }\n\n      \/\/ Validate Privacy Policy\n      const privacyCheckbox = document.getElementById('ammpf_privacy_accepted');\n      const errorPrivacy = document.getElementById('error_ammpf_privacy');\n      const privacyGroup = errorPrivacy.closest('.ammpf-embed-group');\n      \n      if (!privacyCheckbox.checked) {\n        privacyGroup.classList.add('ammpf-invalid');\n        errorPrivacy.style.display = 'block';\n        isFormValid = false;\n      } else {\n        privacyGroup.classList.remove('ammpf-invalid');\n        errorPrivacy.style.display = 'none';\n      }\n\n      if (!isFormValid) {\n        const firstInvalid = form.querySelector('.ammpf-invalid .ammpf-embed-input, .ammpf-invalid .ammpf-embed-select');\n        if (firstInvalid) firstInvalid.focus();\n        return;\n      }\n\n      \/\/ Start loading state\n      submitBtn.disabled = true;\n      submitBtn.classList.add('ammpf-embed-submitting');\n      \n      const inputs = [\n        document.getElementById('ammpf_name'),\n        document.getElementById('ammpf_email'),\n        document.getElementById('ammpf_phone'),\n        document.getElementById('ammpf_interest'),\n        document.getElementById('ammpf_license')\n      ];\n      \n      const formData = new FormData();\n      formData.append('name', document.getElementById('ammpf_name').value.trim());\n      formData.append('email', document.getElementById('ammpf_email').value.trim());\n      formData.append('phone', document.getElementById('ammpf_phone').value.trim());\n      formData.append('interest_area', document.getElementById('ammpf_interest').value.trim());\n      formData.append('license_number', document.getElementById('ammpf_license').value.trim());\n      formData.append('preferred_lang', document.getElementById('ammpf_preferred_lang').value);\n      formData.append('ine_upload_type', uploadType);\n      formData.append('privacy_accepted', privacyCheckbox.checked ? '1' : '0');\n      formData.append('ajax', '1');\n\n      if (uploadType === 'file') {\n        const fileInput = document.getElementById('ammpf_ine_file');\n        if (fileInput.files && fileInput.files[0]) {\n          formData.append('ine_file', fileInput.files[0]);\n        }\n      } else {\n        formData.append('ine_camera_data', document.getElementById('ammpf_ine_camera_data').value);\n      }\n\n      inputs.forEach(input => { if (input) input.disabled = true; });\n\n      \/\/ Fetch request\n      fetch(REGISTRATION_API_URL, {\n        method: 'POST',\n        headers: {\n          'X-Requested-With': 'XMLHttpRequest'\n        },\n        body: formData\n      })\n      .then(response => {\n        if (!response.ok) {\n          throw new Error('Server response was not satisfactory.');\n        }\n        return response.json();\n      })\n      .then(data => {\n        if (data && data.success) {\n          registrationCard.style.display = 'none';\n          successCard.style.display = 'block';\n        } else {\n          showErrorAlert(data.message || 'An error occurred while processing your registration. Please verify your details.');\n          resetSubmitState(inputs);\n        }\n      })\n      .catch(error => {\n        console.error('Error:', error);\n        showErrorAlert('Unable to connect to the server. Please check your internet connection or try again later.');\n        resetSubmitState(inputs);\n      });\n    });\n\n    function showErrorAlert(message) {\n      alertText.textContent = message;\n      alertContainer.style.display = 'block';\n      alertContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n    }\n\n    \/\/ Camera logic and toggle\n    const btnToggleFile = document.getElementById('ammpf_btn_toggle_file');\n    const btnToggleCamera = document.getElementById('ammpf_btn_toggle_camera');\n    const uploadTypeInput = document.getElementById('ammpf_ine_upload_type');\n    const fileSection = document.getElementById('ammpf_ine_file_section');\n    const cameraSection = document.getElementById('ammpf_ine_camera_section');\n    const video = document.getElementById('ammpf_ine_video');\n    const btnStartCamera = document.getElementById('ammpf_btn_start_camera');\n    const btnCapturePhoto = document.getElementById('ammpf_btn_capture_photo');\n    const previewContainer = document.getElementById('ammpf_ine_preview_container');\n    const previewImg = document.getElementById('ammpf_ine_preview_img');\n    const cameraDataInput = document.getElementById('ammpf_ine_camera_data');\n    const errorIneMsg = document.getElementById('error_ammpf_ine');\n\n    let stream = null;\n\n    btnToggleFile.addEventListener('click', () => {\n      btnToggleFile.classList.add('active');\n      btnToggleCamera.classList.remove('active');\n      uploadTypeInput.value = 'file';\n      fileSection.style.display = 'block';\n      cameraSection.style.display = 'none';\n      errorIneMsg.style.display = 'none';\n      stopCamera();\n    });\n\n    btnToggleCamera.addEventListener('click', () => {\n      btnToggleCamera.classList.add('active');\n      btnToggleFile.classList.remove('active');\n      uploadTypeInput.value = 'camera';\n      cameraSection.style.display = 'block';\n      fileSection.style.display = 'none';\n      errorIneMsg.style.display = 'none';\n    });\n\n    btnStartCamera.addEventListener('click', async () => {\n      try {\n        if (stream) {\n          stopCamera();\n        }\n        stream = await navigator.mediaDevices.getUserMedia({\n          video: {\n            facingMode: 'environment',\n            width: { ideal: 1920 },\n            height: { ideal: 1080 }\n          }\n        });\n        video.srcObject = stream;\n        btnCapturePhoto.disabled = false;\n        btnStartCamera.textContent = 'Restart Camera';\n      } catch (err) {\n        console.error('Error starting camera:', err);\n        alert('Could not access the camera. Make sure you grant permissions and are using a secure HTTPS connection. Use the \"Upload File\" option instead.');\n      }\n    });\n\n    btnCapturePhoto.addEventListener('click', () => {\n      if (!stream) return;\n      \n      const container = video.parentElement;\n      const box = container.querySelector('.ammpf-camera-box');\n      \n      const containerRect = container.getBoundingClientRect();\n      const boxRect = box.getBoundingClientRect();\n      \n      const cW = containerRect.width;\n      const cH = containerRect.height;\n      \n      const boxX = boxRect.left - containerRect.left;\n      const boxY = boxRect.top - containerRect.top;\n      const boxW = boxRect.width;\n      const boxH = boxRect.height;\n      \n      const vW = video.videoWidth;\n      const vH = video.videoHeight;\n      \n      let sX = 0, sY = 0, sW = vW, sH = vH;\n      \n      if (vW && vH) {\n        const aC = cW \/ cH;\n        const aV = vW \/ vH;\n        \n        if (aV > aC) {\n          \/\/ El video es m\u00e1s ancho que el contenedor\n          const scale = cH \/ vH;\n          const xOffset = (vW * scale - cW) \/ 2;\n          sX = (boxX + xOffset) \/ scale;\n          sY = boxY \/ scale;\n          sW = boxW \/ scale;\n          sH = boxH \/ scale;\n        } else {\n          \/\/ El video es m\u00e1s alto que el contenedor\n          const scale = cW \/ vW;\n          const yOffset = (vH * scale - cH) \/ 2;\n          sX = boxX \/ scale;\n          sY = (boxY + yOffset) \/ scale;\n          sW = boxW \/ scale;\n          sH = boxH \/ scale;\n        }\n      }\n\n      const canvas = document.createElement('canvas');\n      canvas.width = sW;\n      canvas.height = sH;\n      const ctx = canvas.getContext('2d');\n      ctx.drawImage(video, sX, sY, sW, sH, 0, 0, sW, sH);\n\n      const base64Data = canvas.toDataURL('image\/jpeg', 0.90); \/\/ slightly higher quality\n      cameraDataInput.value = base64Data;\n      previewImg.src = base64Data;\n      previewContainer.style.display = 'block';\n      errorIneMsg.style.display = 'none';\n      stopCamera();\n    });\n\n    function stopCamera() {\n      if (stream) {\n        stream.getTracks().forEach(track => track.stop());\n        stream = null;\n      }\n      video.srcObject = null;\n      btnCapturePhoto.disabled = true;\n      btnStartCamera.textContent = 'Start Camera';\n    }\n\n    \/\/ Custom Privacy Modal logic\n    const privacyLink = document.querySelector('.ammpf-privacy-link');\n    const privacyModal = document.getElementById('ammpfPrivacyModal');\n    const closePrivacyModal = document.getElementById('ammpfClosePrivacyModal');\n    const closePrivacyModalBtn = document.getElementById('ammpfClosePrivacyModalBtn');\n    const acceptPrivacyModalBtn = document.getElementById('ammpfAcceptPrivacyModalBtn');\n    const privacyCheckbox = document.getElementById('ammpf_privacy_accepted');\n\n    if (privacyLink && privacyModal) {\n      privacyLink.addEventListener('click', function(e) {\n        e.preventDefault();\n        privacyModal.classList.add('ammpf-modal-show');\n      });\n    }\n\n    function hidePrivacyModal() {\n      if (privacyModal) {\n        privacyModal.classList.remove('ammpf-modal-show');\n      }\n    }\n\n    if (closePrivacyModal) {\n      closePrivacyModal.addEventListener('click', hidePrivacyModal);\n    }\n    if (closePrivacyModalBtn) {\n      closePrivacyModalBtn.addEventListener('click', hidePrivacyModal);\n    }\n    if (privacyModal) {\n      privacyModal.addEventListener('click', function(e) {\n        if (e.target === privacyModal) {\n          hidePrivacyModal();\n        }\n      });\n    }\n\n    if (acceptPrivacyModalBtn && privacyCheckbox) {\n      acceptPrivacyModalBtn.addEventListener('click', function() {\n        privacyCheckbox.checked = true;\n        const errorPrivacy = document.getElementById('error_ammpf_privacy');\n        const privacyGroup = errorPrivacy ? errorPrivacy.closest('.ammpf-embed-group') : null;\n        if (privacyGroup) {\n          privacyGroup.classList.remove('ammpf-invalid');\n        }\n        if (errorPrivacy) {\n          errorPrivacy.style.display = 'none';\n        }\n        hidePrivacyModal();\n      });\n    }\n  })();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Join AMMPF The Mexican Association for Preventive and Functional Medicine has established itself as a hub for academic and professional exchange\u00a0 a space where physicians, clinics, and healthcare organizations come together to collaborate, conduct research, and strengthen their medical practice through a functional and preventive lens. Be part of this evidence-based medical model built on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-790","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Join AMMPF - Ammpf en<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ammpf.mx\/en\/afiliarme\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Join AMMPF - Ammpf en\" \/>\n<meta property=\"og:description\" content=\"Join AMMPF The Mexican Association for Preventive and Functional Medicine has established itself as a hub for academic and professional exchange\u00a0 a space where physicians, clinics, and healthcare organizations come together to collaborate, conduct research, and strengthen their medical practice through a functional and preventive lens. Be part of this evidence-based medical model built on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ammpf.mx\/en\/afiliarme\/\" \/>\n<meta property=\"og:site_name\" content=\"Ammpf en\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-02T21:39:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ammpf.mx\/en\/afiliarme\/\",\"url\":\"https:\/\/ammpf.mx\/en\/afiliarme\/\",\"name\":\"Join AMMPF - Ammpf en\",\"isPartOf\":{\"@id\":\"https:\/\/ammpf.mx\/en\/#website\"},\"datePublished\":\"2026-04-08T14:57:45+00:00\",\"dateModified\":\"2026-06-02T21:39:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ammpf.mx\/en\/afiliarme\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ammpf.mx\/en\/afiliarme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ammpf.mx\/en\/afiliarme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ammpf.mx\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Join AMMPF\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ammpf.mx\/en\/#website\",\"url\":\"https:\/\/ammpf.mx\/en\/\",\"name\":\"Ammpf en\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ammpf.mx\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Join AMMPF - Ammpf en","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ammpf.mx\/en\/afiliarme\/","og_locale":"en_US","og_type":"article","og_title":"Join AMMPF - Ammpf en","og_description":"Join AMMPF The Mexican Association for Preventive and Functional Medicine has established itself as a hub for academic and professional exchange\u00a0 a space where physicians, clinics, and healthcare organizations come together to collaborate, conduct research, and strengthen their medical practice through a functional and preventive lens. Be part of this evidence-based medical model built on [&hellip;]","og_url":"https:\/\/ammpf.mx\/en\/afiliarme\/","og_site_name":"Ammpf en","article_modified_time":"2026-06-02T21:39:44+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ammpf.mx\/en\/afiliarme\/","url":"https:\/\/ammpf.mx\/en\/afiliarme\/","name":"Join AMMPF - Ammpf en","isPartOf":{"@id":"https:\/\/ammpf.mx\/en\/#website"},"datePublished":"2026-04-08T14:57:45+00:00","dateModified":"2026-06-02T21:39:44+00:00","breadcrumb":{"@id":"https:\/\/ammpf.mx\/en\/afiliarme\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ammpf.mx\/en\/afiliarme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ammpf.mx\/en\/afiliarme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ammpf.mx\/en\/"},{"@type":"ListItem","position":2,"name":"Join AMMPF"}]},{"@type":"WebSite","@id":"https:\/\/ammpf.mx\/en\/#website","url":"https:\/\/ammpf.mx\/en\/","name":"Ammpf en","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ammpf.mx\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/pages\/790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/comments?post=790"}],"version-history":[{"count":48,"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/pages\/790\/revisions"}],"predecessor-version":[{"id":1548,"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/pages\/790\/revisions\/1548"}],"wp:attachment":[{"href":"https:\/\/ammpf.mx\/en\/wp-json\/wp\/v2\/media?parent=790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}