{"id":8366,"date":"2026-09-18T07:34:18","date_gmt":"2026-09-18T06:34:18","guid":{"rendered":"https:\/\/www.cninfante.pt\/?page_id=8366"},"modified":"2026-09-18T07:34:20","modified_gmt":"2026-09-18T06:34:20","slug":"inscricoes-aerobic-monsters","status":"publish","type":"page","link":"https:\/\/www.cninfante.pt\/en\/inscricoes-aerobic-monsters\/","title":{"rendered":"Inscri\u00e7\u00f5es Aerobic Monsters"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\n    <style>\n\n        \/* =================================================\n         * CONTAINER\n         * ================================================= *\/\n\n        .cnidh-amr-wrapper {\n            max-width: 860px;\n            margin: 0 auto;\n            padding: 22px;\n            background: #fff;\n            border: 1px solid #e5e7eb;\n            border-radius: 10px;\n            box-sizing: border-box;\n        }\n\n        .cnidh-amr-wrapper h2,\n        .cnidh-amr-wrapper h3,\n        .cnidh-amr-wrapper h4 {\n            color: #003B6F;\n        }\n\n        .cnidh-amr-wrapper h2 {\n            margin-top: 0;\n            margin-bottom: 8px;\n        }\n\n        .cnidh-amr-intro {\n            color: #4A4A4A;\n            margin-top: 0;\n            margin-bottom: 6px;\n        }\n\n        .cnidh-amr-small {\n            font-size: 13px;\n            color: #6b7280;\n        }\n\n\n        \/* =================================================\n         * SEC\u00c7\u00d5ES\n         * ================================================= *\/\n\n        .cnidh-amr-section {\n            margin-top: 28px;\n        }\n\n        .cnidh-amr-section > h3 {\n            margin: 0 0 14px;\n            font-size: 19px;\n        }\n\n\n        \/* =================================================\n         * TIPO DE INSCRI\u00c7\u00c3O\n         * ================================================= *\/\n\n        .cnidh-amr-registration-types {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 12px;\n        }\n\n        .cnidh-amr-type-option {\n            display: flex;\n            align-items: flex-start;\n            gap: 10px;\n\n            padding: 14px 16px;\n\n            border: 1px solid #d1d5db;\n            border-radius: 8px;\n\n            background: #f9fafb;\n            cursor: pointer;\n\n            transition:\n                border-color 0.15s ease,\n                background 0.15s ease;\n        }\n\n        .cnidh-amr-type-option:hover {\n            border-color: #003B6F;\n            background: #f4f7fa;\n        }\n\n        .cnidh-amr-type-option input {\n            margin-top: 4px;\n            accent-color: #003B6F;\n        }\n\n        .cnidh-amr-type-text {\n            display: flex;\n            flex-direction: column;\n            gap: 2px;\n        }\n\n        .cnidh-amr-type-text strong {\n            color: #003B6F;\n        }\n\n        .cnidh-amr-type-text span {\n            color: #6b7280;\n            font-size: 13px;\n        }\n\n\n        \/* =================================================\n         * GRID E CAMPOS\n         * ================================================= *\/\n\n        .cnidh-amr-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 14px;\n        }\n\n        .cnidh-amr-field {\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n        }\n\n        .cnidh-amr-field-full {\n            grid-column: 1 \/ -1;\n        }\n\n        .cnidh-amr-field label {\n            color: #4A4A4A;\n            font-weight: 600;\n        }\n\n        .cnidh-amr-field input,\n        .cnidh-amr-field select {\n            width: 100%;\n            min-height: 44px;\n\n            padding: 10px;\n\n            border: 1px solid #d1d5db;\n            border-radius: 6px;\n\n            background: #fff;\n            box-sizing: border-box;\n\n            font-size: 15px;\n        }\n\n        .cnidh-amr-field input:focus,\n        .cnidh-amr-field select:focus {\n            border-color: #003B6F;\n            outline: none;\n\n            box-shadow:\n                0 0 0 2px rgba(0, 59, 111, 0.10);\n        }\n\n        .cnidh-amr-field.is-invalid input,\n        .cnidh-amr-field.is-invalid select {\n            border-color: #8B1F21;\n        }\n\n\n        \/* =================================================\n         * BLOCOS DE ATLETA\n         * ================================================= *\/\n\n        .cnidh-amr-athlete {\n            margin-bottom: 14px;\n\n            padding: 16px;\n\n            border: 1px solid #e5e7eb;\n            border-left: 3px solid #C2914A;\n            border-radius: 8px;\n\n            background: #fff;\n        }\n\n        .cnidh-amr-athlete-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n\n            gap: 12px;\n\n            margin-bottom: 14px;\n        }\n\n        .cnidh-amr-athlete-title {\n            margin: 0;\n            font-size: 17px;\n        }\n\n        .cnidh-amr-remove-athlete {\n            border: 0;\n            background: transparent;\n            color: #8B1F21;\n\n            font-size: 13px;\n            font-weight: 700;\n\n            cursor: pointer;\n        }\n\n        .cnidh-amr-remove-athlete:hover {\n            text-decoration: underline;\n        }\n\n        .cnidh-amr-athlete-note {\n            margin: 12px 0 0;\n\n            color: #6b7280;\n\n            font-size: 12px;\n            line-height: 1.4;\n        }\n\n\n        \/* =================================================\n         * BOT\u00c3O ADICIONAR ATLETA\n         * ================================================= *\/\n\n        .cnidh-amr-add-athlete {\n            width: 100%;\n\n            padding: 11px 16px;\n\n            border: 1px solid #003B6F;\n            border-radius: 6px;\n\n            background: #fff;\n            color: #003B6F;\n\n            font-size: 14px;\n            font-weight: 700;\n\n            cursor: pointer;\n        }\n\n        .cnidh-amr-add-athlete:hover {\n            background: #f4f7fa;\n        }\n\n\n        \/* =================================================\n         * DECLARA\u00c7\u00c3O\n         * ================================================= *\/\n\n        .cnidh-amr-declaration {\n            display: flex;\n            align-items: flex-start;\n            gap: 11px;\n\n            padding: 15px 16px;\n\n            border: 1px solid #d1d5db;\n            border-radius: 8px;\n\n            background: #f9fafb;\n\n            font-size: 13px;\n            line-height: 1.5;\n        }\n\n        .cnidh-amr-declaration input {\n            width: 19px;\n            height: 19px;\n\n            margin-top: 2px;\n\n            flex: 0 0 auto;\n\n            accent-color: #003B6F;\n        }\n\n        .cnidh-amr-declaration.is-invalid {\n            border-color: #8B1F21;\n        }\n\n        .cnidh-amr-declaration a {\n            color: #8B1F21;\n            font-weight: 700;\n            text-decoration: none;\n        }\n\n        .cnidh-amr-declaration a:hover {\n            text-decoration: underline;\n        }\n\n\n        \/* =================================================\n         * TOTAL\n         * ================================================= *\/\n\n        .cnidh-amr-total {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n\n            gap: 20px;\n\n            margin-top: 20px;\n            margin-bottom: 16px;\n\n            padding: 14px 16px;\n\n            background: #f9fafb;\n            border-radius: 8px;\n        }\n\n        .cnidh-amr-total-info {\n            display: flex;\n            flex-direction: column;\n            gap: 2px;\n        }\n\n        .cnidh-amr-total-info strong {\n            color: #4A4A4A;\n        }\n\n        .cnidh-amr-total-info span {\n            font-size: 13px;\n            color: #6b7280;\n        }\n\n        .cnidh-amr-total-value {\n            color: #003B6F;\n            font-size: 22px;\n            font-weight: 700;\n            white-space: nowrap;\n        }\n\n\n        \/* =================================================\n         * BOT\u00c3O PRINCIPAL\n         * ================================================= *\/\n\n        .cnidh-amr-submit {\n            width: 100%;\n\n            padding: 13px 18px;\n\n            border: 0;\n            border-radius: 6px;\n\n            background: #8B1F21;\n            color: #fff;\n\n            font-size: 16px;\n            font-weight: 700;\n\n            cursor: pointer;\n        }\n\n        .cnidh-amr-submit:hover {\n            background: #6D181A;\n        }\n\n        .cnidh-amr-submit:disabled {\n            opacity: 0.65;\n            cursor: wait;\n        }\n\n\n        \/* =================================================\n         * ERROS\n         * ================================================= *\/\n\n        .cnidh-amr-errors {\n            display: none;\n\n            margin: 18px 0;\n\n            padding: 12px 14px;\n\n            border-left: 4px solid #8B1F21;\n            border-radius: 6px;\n\n            background: #fff5f5;\n            color: #6D181A;\n        }\n\n        .cnidh-amr-errors.is-visible {\n            display: block;\n        }\n\n        .cnidh-amr-errors ul {\n            margin: 0;\n            padding-left: 18px;\n        }\n\n        .cnidh-amr-errors li {\n            margin-bottom: 4px;\n            font-weight: 700;\n        }\n\n\n        \/* =================================================\n         * UTILIDADES\n         * ================================================= *\/\n\n        .cnidh-amr-hidden {\n            display: none !important;\n        }\n\n\n        \/* =================================================\n         * MOBILE\n         * ================================================= *\/\n\n        @media (max-width: 700px) {\n\n            .cnidh-amr-wrapper {\n                padding: 18px;\n            }\n\n            .cnidh-amr-registration-types,\n            .cnidh-amr-grid {\n                grid-template-columns: 1fr;\n            }\n\n            .cnidh-amr-field-full {\n                grid-column: auto;\n            }\n\n            .cnidh-amr-total {\n                align-items: flex-start;\n                flex-direction: column;\n                gap: 5px;\n            }\n\n            .cnidh-amr-athlete {\n                padding: 14px;\n            }\n        }\n\n    <\/style>\n\n\n    <div class=\"cnidh-amr-wrapper\">\n\n        <h2>\n            Inscri\u00e7\u00e3o \u2014 Aerobic Monsters Regatta\n        <\/h2>\n\n        <p class=\"cnidh-amr-intro\">\n            Efetua uma inscri\u00e7\u00e3o individual ou inscreve v\u00e1rios atletas do mesmo clube.\n        <\/p>\n\n        <p class=\"cnidh-amr-small\">\n\n            Valor da inscri\u00e7\u00e3o por atleta:\n\n            <strong>\n                <span class=\"woocommerce-Price-amount amount\">18,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span>            <\/strong>\n\n        <\/p>\n\n\n        <div\n            id=\"cnidh-amr-errors\"\n            class=\"cnidh-amr-errors\"\n            aria-live=\"polite\"\n        ><\/div>\n\n\n        <form\n            id=\"cnidh-amr-form\"\n            method=\"post\"\n            novalidate\n            data-ajax-url=\"https:\/\/www.cninfante.pt\/wp-admin\/admin-ajax.php\"\n            data-unit-price=\"18\"\n            data-max-athletes=\"100\"\n        >\n\n            <input type=\"hidden\" id=\"cnidh_amr_nonce\" name=\"cnidh_amr_nonce\" value=\"56d7b9542f\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/8366\" \/>\n\n            <input\n                type=\"hidden\"\n                name=\"action\"\n                value=\"cnidh_amr_submit\"\n            >\n\n\n            <input\n                type=\"hidden\"\n                name=\"cnidh_amr_product_id\"\n                value=\"8365\"\n            >\n\n\n            <!-- ==========================================\n                 1. TIPO\n                 ========================================== -->\n\n            <div class=\"cnidh-amr-section\">\n\n                <h3>\n                    1. Tipo de inscri\u00e7\u00e3o\n                <\/h3>\n\n\n                <div class=\"cnidh-amr-registration-types\">\n\n\n                    <label class=\"cnidh-amr-type-option\">\n\n                        <input\n                            type=\"radio\"\n                            name=\"amr_registration_type\"\n                            value=\"individual\"\n                            checked\n                        >\n\n                        <span class=\"cnidh-amr-type-text\">\n\n                            <strong>\n                                Inscri\u00e7\u00e3o individual\n                            <\/strong>\n\n                            <span>\n                                Inscri\u00e7\u00e3o de um \u00fanico atleta.\n                            <\/span>\n\n                        <\/span>\n\n                    <\/label>\n\n\n                    <label class=\"cnidh-amr-type-option\">\n\n                        <input\n                            type=\"radio\"\n                            name=\"amr_registration_type\"\n                            value=\"club\"\n                        >\n\n                        <span class=\"cnidh-amr-type-text\">\n\n                            <strong>\n                                Inscri\u00e7\u00e3o de clube\n                            <\/strong>\n\n                            <span>\n                                Permite inscrever v\u00e1rios atletas do mesmo clube.\n                            <\/span>\n\n                        <\/span>\n\n                    <\/label>\n\n\n                <\/div>\n\n            <\/div>\n\n\n            <!-- ==========================================\n                 2A. INDIVIDUAL\n                 ========================================== -->\n\n            <div\n                id=\"cnidh-amr-individual-contact\"\n                class=\"cnidh-amr-section\"\n            >\n\n                <h3>\n                    2. Dados de contacto\n                <\/h3>\n\n\n                <div class=\"cnidh-amr-grid\">\n\n\n                    <div\n                        class=\"cnidh-amr-field\"\n                        data-field-wrapper=\"individual_email\"\n                    >\n\n                        <label>\n                            Email *\n                        <\/label>\n\n                        <input\n                            type=\"email\"\n                            name=\"amr_individual_email\"\n                            autocomplete=\"email\"\n                        >\n\n                    <\/div>\n\n\n                    <div\n                        class=\"cnidh-amr-field\"\n                        data-field-wrapper=\"individual_phone\"\n                    >\n\n                        <label>\n                            Telem\u00f3vel *\n                        <\/label>\n\n                        <input\n                            type=\"tel\"\n                            name=\"amr_individual_phone\"\n                            autocomplete=\"tel\"\n                        >\n\n                    <\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<div\n\t\t\t\t\tclass=\"cnidh-amr-field cnidh-amr-field-full\"\n\t\t\t\t\tdata-field-wrapper=\"individual_club\"\n\t\t\t\t>\n\n\t\t\t\t\t<label>\n\t\t\t\t\t\tClube de filia\u00e7\u00e3o\n\t\t\t\t\t\t<span class=\"cnidh-amr-small\">(opcional)<\/span>\n\t\t\t\t\t<\/label>\n\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"amr_individual_club\"\n\t\t\t\t\t\tplaceholder=\"Ex.: Clube Naval Infante D. Henrique\"\n\t\t\t\t\t\tautocomplete=\"organization\"\n\t\t\t\t\t>\n\n<\/div>\n\n\n                <\/div>\n\n            <\/div>\n\n\n            <!-- ==========================================\n                 2B. CLUBE\n                 ========================================== -->\n\n            <div\n                id=\"cnidh-amr-club-contact\"\n                class=\"cnidh-amr-section cnidh-amr-hidden\"\n            >\n\n                <h3>\n                    2. Dados do clube\n                <\/h3>\n\n\n                <div class=\"cnidh-amr-grid\">\n\n\n                    <div\n                        class=\"cnidh-amr-field cnidh-amr-field-full\"\n                        data-field-wrapper=\"club_name\"\n                    >\n\n                        <label>\n                            Nome do clube *\n                        <\/label>\n\n                        <input\n                            type=\"text\"\n                            name=\"amr_club_name\"\n                        >\n\n                    <\/div>\n\n\n                    <div\n                        class=\"cnidh-amr-field\"\n                        data-field-wrapper=\"club_email\"\n                    >\n\n                        <label>\n                            Email de contacto *\n                        <\/label>\n\n                        <input\n                            type=\"email\"\n                            name=\"amr_club_email\"\n                        >\n\n                    <\/div>\n\n\n                    <div\n                        class=\"cnidh-amr-field\"\n                        data-field-wrapper=\"club_phone\"\n                    >\n\n                        <label>\n                            Telem\u00f3vel *\n                        <\/label>\n\n                        <input\n                            type=\"tel\"\n                            name=\"amr_club_phone\"\n                        >\n\n                    <\/div>\n\n\n                    <div\n                        class=\"cnidh-amr-field cnidh-amr-field-full\"\n                        data-field-wrapper=\"club_delegates\"\n                    >\n\n                        <label>\n                            Delegado(s) \/ respons\u00e1vel(eis)\n\t\t\t\t\t\t\t<span class=\"cnidh-amr-small\">(opcional)<\/span>\t\n                        <\/label>\n\n                        <input\n                            type=\"text\"\n                            name=\"amr_club_delegates\"\n                            placeholder=\"Ex.: Jo\u00e3o Silva; Maria Costa\"\n                        >\n\n                        <span class=\"cnidh-amr-small\">\n                            Pode indicar mais do que um nome na mesma linha.\n                        <\/span>\n\n                    <\/div>\n\n\n                <\/div>\n\n            <\/div>\n\n\n            <!-- ==========================================\n                 3. ATLETAS\n                 ========================================== -->\n\n            <div class=\"cnidh-amr-section\">\n\n                <h3>\n                    3. Atleta(s)\n                <\/h3>\n\n\n                <div id=\"cnidh-amr-athletes\">\n\n                    \n    <div class=\"cnidh-amr-athlete\">\n\n        <div class=\"cnidh-amr-athlete-header\">\n\n            <h4 class=\"cnidh-amr-athlete-title\">\n                Atleta 1            <\/h4>\n\n            <button\n                type=\"button\"\n                class=\"cnidh-amr-remove-athlete\"\n                aria-label=\"Remover atleta\"\n            >\n                Remover\n            <\/button>\n\n        <\/div>\n\n\n        <div class=\"cnidh-amr-grid\">\n\n\n            <!-- NOME -->\n\n            <div\n                class=\"cnidh-amr-field cnidh-amr-field-full\"\n                data-field-wrapper=\"athlete_name\"\n            >\n\n                <label>\n                    Nome completo *\n                <\/label>\n\n                <input\n                    type=\"text\"\n                    name=\"amr_athlete_name[]\"\n                    autocomplete=\"off\"\n                >\n\n            <\/div>\n\n\n            <!-- DATA NASCIMENTO -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_birthdate\"\n            >\n\n                <label>\n                    Data de nascimento *\n                <\/label>\n\n                <input\n                    type=\"date\"\n                    name=\"amr_athlete_birthdate[]\"\n                >\n\n            <\/div>\n\n\n            <!-- CATEGORIA -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_category\"\n            >\n\n                <label>\n                    Categoria *\n                <\/label>\n\n                <select name=\"amr_athlete_category[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    \n                        <option value=\"j16_f\">\n                            J16 Feminino                        <\/option>\n\n                    \n                        <option value=\"j18_f\">\n                            J18 Feminino                        <\/option>\n\n                    \n                        <option value=\"u23_f\">\n                            Sub-23 Feminino                        <\/option>\n\n                    \n                        <option value=\"masters_f\">\n                            Masters Feminino                        <\/option>\n\n                    \n                        <option value=\"elite_f\">\n                            Elite Feminino                        <\/option>\n\n                    \n                        <option value=\"para_f\">\n                            Para-Remo Feminino                        <\/option>\n\n                    \n                        <option value=\"j16_m\">\n                            J16 Masculino                        <\/option>\n\n                    \n                        <option value=\"j18_m\">\n                            J18 Masculino                        <\/option>\n\n                    \n                        <option value=\"u23_m\">\n                            Sub-23 Masculino                        <\/option>\n\n                    \n                        <option value=\"masters_m\">\n                            Masters Masculino                        <\/option>\n\n                    \n                        <option value=\"elite_m\">\n                            Elite Masculino                        <\/option>\n\n                    \n                        <option value=\"para_m\">\n                            Para-Remo Masculino                        <\/option>\n\n                    \n                <\/select>\n\n            <\/div>\n\n\n            <!-- T-SHIRT -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_tshirt\"\n            >\n\n                <label>\n                    Tamanho de t-shirt *\n                <\/label>\n\n                <select name=\"amr_athlete_tshirt[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    \n                        <option value=\"XS\">\n                            XS                        <\/option>\n\n                    \n                        <option value=\"S\">\n                            S                        <\/option>\n\n                    \n                        <option value=\"M\">\n                            M                        <\/option>\n\n                    \n                        <option value=\"L\">\n                            L                        <\/option>\n\n                    \n                        <option value=\"XL\">\n                            XL                        <\/option>\n\n                    \n                        <option value=\"2XL\">\n                            2XL                        <\/option>\n\n                    \n                        <option value=\"3XL\">\n                            3XL                        <\/option>\n\n                    \n                <\/select>\n\n            <\/div>\n\n\n            <!-- ALOJAMENTO -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_lodging\"\n            >\n\n                <label>\n                    Solicita alojamento? *\n                <\/label>\n\n                <select name=\"amr_athlete_lodging[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    <option value=\"0\">\n                        N\u00e3o\n                    <\/option>\n\n                    <option value=\"1\">\n                        Sim \u2014 sujeito a disponibilidade\n                    <\/option>\n\n                <\/select>\n\n            <\/div>\n\n        <\/div>\n\n\n        <p class=\"cnidh-amr-athlete-note\">\n\n            O pedido de alojamento n\u00e3o constitui uma reserva.\n            A disponibilidade ser\u00e1 confirmada posteriormente pela organiza\u00e7\u00e3o.\n\n        <\/p>\n\n    <\/div>\n\n    \n                <\/div>\n\n\n                <button\n                    type=\"button\"\n                    id=\"cnidh-amr-add-athlete\"\n                    class=\"cnidh-amr-add-athlete cnidh-amr-hidden\"\n                >\n                    + Adicionar atleta\n                <\/button>\n\n            <\/div>\n\n\n            <!-- TEMPLATE PARA NOVOS ATLETAS -->\n\n            <template id=\"cnidh-amr-athlete-template\">\n\n                \n    <div class=\"cnidh-amr-athlete\">\n\n        <div class=\"cnidh-amr-athlete-header\">\n\n            <h4 class=\"cnidh-amr-athlete-title\">\n                Atleta 1            <\/h4>\n\n            <button\n                type=\"button\"\n                class=\"cnidh-amr-remove-athlete\"\n                aria-label=\"Remover atleta\"\n            >\n                Remover\n            <\/button>\n\n        <\/div>\n\n\n        <div class=\"cnidh-amr-grid\">\n\n\n            <!-- NOME -->\n\n            <div\n                class=\"cnidh-amr-field cnidh-amr-field-full\"\n                data-field-wrapper=\"athlete_name\"\n            >\n\n                <label>\n                    Nome completo *\n                <\/label>\n\n                <input\n                    type=\"text\"\n                    name=\"amr_athlete_name[]\"\n                    autocomplete=\"off\"\n                >\n\n            <\/div>\n\n\n            <!-- DATA NASCIMENTO -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_birthdate\"\n            >\n\n                <label>\n                    Data de nascimento *\n                <\/label>\n\n                <input\n                    type=\"date\"\n                    name=\"amr_athlete_birthdate[]\"\n                >\n\n            <\/div>\n\n\n            <!-- CATEGORIA -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_category\"\n            >\n\n                <label>\n                    Categoria *\n                <\/label>\n\n                <select name=\"amr_athlete_category[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    \n                        <option value=\"j16_f\">\n                            J16 Feminino                        <\/option>\n\n                    \n                        <option value=\"j18_f\">\n                            J18 Feminino                        <\/option>\n\n                    \n                        <option value=\"u23_f\">\n                            Sub-23 Feminino                        <\/option>\n\n                    \n                        <option value=\"masters_f\">\n                            Masters Feminino                        <\/option>\n\n                    \n                        <option value=\"elite_f\">\n                            Elite Feminino                        <\/option>\n\n                    \n                        <option value=\"para_f\">\n                            Para-Remo Feminino                        <\/option>\n\n                    \n                        <option value=\"j16_m\">\n                            J16 Masculino                        <\/option>\n\n                    \n                        <option value=\"j18_m\">\n                            J18 Masculino                        <\/option>\n\n                    \n                        <option value=\"u23_m\">\n                            Sub-23 Masculino                        <\/option>\n\n                    \n                        <option value=\"masters_m\">\n                            Masters Masculino                        <\/option>\n\n                    \n                        <option value=\"elite_m\">\n                            Elite Masculino                        <\/option>\n\n                    \n                        <option value=\"para_m\">\n                            Para-Remo Masculino                        <\/option>\n\n                    \n                <\/select>\n\n            <\/div>\n\n\n            <!-- T-SHIRT -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_tshirt\"\n            >\n\n                <label>\n                    Tamanho de t-shirt *\n                <\/label>\n\n                <select name=\"amr_athlete_tshirt[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    \n                        <option value=\"XS\">\n                            XS                        <\/option>\n\n                    \n                        <option value=\"S\">\n                            S                        <\/option>\n\n                    \n                        <option value=\"M\">\n                            M                        <\/option>\n\n                    \n                        <option value=\"L\">\n                            L                        <\/option>\n\n                    \n                        <option value=\"XL\">\n                            XL                        <\/option>\n\n                    \n                        <option value=\"2XL\">\n                            2XL                        <\/option>\n\n                    \n                        <option value=\"3XL\">\n                            3XL                        <\/option>\n\n                    \n                <\/select>\n\n            <\/div>\n\n\n            <!-- ALOJAMENTO -->\n\n            <div\n                class=\"cnidh-amr-field\"\n                data-field-wrapper=\"athlete_lodging\"\n            >\n\n                <label>\n                    Solicita alojamento? *\n                <\/label>\n\n                <select name=\"amr_athlete_lodging[]\">\n\n                    <option value=\"\">\n                        Seleciona...\n                    <\/option>\n\n                    <option value=\"0\">\n                        N\u00e3o\n                    <\/option>\n\n                    <option value=\"1\">\n                        Sim \u2014 sujeito a disponibilidade\n                    <\/option>\n\n                <\/select>\n\n            <\/div>\n\n        <\/div>\n\n\n        <p class=\"cnidh-amr-athlete-note\">\n\n            O pedido de alojamento n\u00e3o constitui uma reserva.\n            A disponibilidade ser\u00e1 confirmada posteriormente pela organiza\u00e7\u00e3o.\n\n        <\/p>\n\n    <\/div>\n\n    \n            <\/template>\n\n\n            <!-- ==========================================\n                 4. DECLARA\u00c7\u00c3O\n                 ========================================== -->\n\n            <div class=\"cnidh-amr-section\">\n\n                <h3>\n                    4. Declara\u00e7\u00e3o\n                <\/h3>\n\n\n                <label\n                    class=\"cnidh-amr-declaration\"\n                    id=\"cnidh-amr-declaration-wrapper\"\n                >\n\n                    <input\n                        type=\"checkbox\"\n                        name=\"amr_declaration\"\n                        value=\"1\"\n                    >\n\n                    <span>\n\n                        Confirmo que os dados fornecidos s\u00e3o verdadeiros\n                        e aceito o regulamento da prova e os\n\n                        <a\n                            href=\"https:\/\/www.cninfante.pt\/en\/legal\/\"\n                            target=\"_blank\"\n                            rel=\"noopener\"\n                        >\n                            Termos e Condi\u00e7\u00f5es\n                        <\/a>.\n\n                    <\/span>\n\n                <\/label>\n\n            <\/div>\n\n\n            <!-- ==========================================\n                 TOTAL\n                 ========================================== -->\n\n            <div class=\"cnidh-amr-total\">\n\n                <div class=\"cnidh-amr-total-info\">\n\n                    <strong>\n                        Total\n                    <\/strong>\n\n                    <span id=\"cnidh-amr-total-description\">\n                        1 atleta\n                    <\/span>\n\n                <\/div>\n\n\n                <span class=\"cnidh-amr-total-value\">\n                    <span class=\"woocommerce-Price-amount amount\">18,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\">&euro;<\/span><\/span>                <\/span>\n\n            <\/div>\n\n\n            <button\n                type=\"submit\"\n                class=\"cnidh-amr-submit\"\n                id=\"cnidh-amr-submit\"\n            >\n                Continuar para pagamento\n            <\/button>\n\n\n        <\/form>\n\n    <\/div>\n\n\n    <script>\n\n    (function() {\n\n        const form =\n            document.getElementById(\n                'cnidh-amr-form'\n            );\n\n        if (!form) {\n            return;\n        }\n\n\n        const athletesContainer =\n            document.getElementById(\n                'cnidh-amr-athletes'\n            );\n\n        const athleteTemplate =\n            document.getElementById(\n                'cnidh-amr-athlete-template'\n            );\n\n        const addAthleteButton =\n            document.getElementById(\n                'cnidh-amr-add-athlete'\n            );\n\n        const individualSection =\n            document.getElementById(\n                'cnidh-amr-individual-contact'\n            );\n\n        const clubSection =\n            document.getElementById(\n                'cnidh-amr-club-contact'\n            );\n\n        const errorsBox =\n            document.getElementById(\n                'cnidh-amr-errors'\n            );\n\n        const submitButton =\n            document.getElementById(\n                'cnidh-amr-submit'\n            );\n\n        const totalValue =\n            document.querySelector(\n                '.cnidh-amr-total-value'\n            );\n\n        const totalDescription =\n            document.getElementById(\n                'cnidh-amr-total-description'\n            );\n\n        const declarationWrapper =\n            document.getElementById(\n                'cnidh-amr-declaration-wrapper'\n            );\n\n\n        const unitPrice =\n            parseFloat(\n                form.dataset.unitPrice\n            ) || 0;\n\n\n        const maxAthletes =\n            parseInt(\n                form.dataset.maxAthletes,\n                10\n            ) || 100;\n\n\n        \/* =============================================\n         * TIPO\n         * ============================================= *\/\n\n        function getRegistrationType() {\n\n            const selected =\n                form.querySelector(\n                    '[name=\"amr_registration_type\"]:checked'\n                );\n\n            return selected\n                ? selected.value\n                : 'individual';\n        }\n\n\n        function syncRegistrationType() {\n\n            const type =\n                getRegistrationType();\n\n\n            if (type === 'club') {\n\n                individualSection.classList.add(\n                    'cnidh-amr-hidden'\n                );\n\n                clubSection.classList.remove(\n                    'cnidh-amr-hidden'\n                );\n\n                addAthleteButton.classList.remove(\n                    'cnidh-amr-hidden'\n                );\n\n            } else {\n\n                individualSection.classList.remove(\n                    'cnidh-amr-hidden'\n                );\n\n                clubSection.classList.add(\n                    'cnidh-amr-hidden'\n                );\n\n                addAthleteButton.classList.add(\n                    'cnidh-amr-hidden'\n                );\n\n\n                \/*\n                 * Individual = apenas um atleta.\n                 *\/\n\n                const athletes =\n                    athletesContainer.querySelectorAll(\n                        '.cnidh-amr-athlete'\n                    );\n\n                athletes.forEach(\n                    function(athlete, index) {\n\n                        if (index > 0) {\n                            athlete.remove();\n                        }\n                    }\n                );\n            }\n\n\n            normalizeAthletes();\n        }\n\n\n        \/* =============================================\n         * ATLETAS\n         * ============================================= *\/\n\n        function normalizeAthletes() {\n\n            const athletes =\n                athletesContainer.querySelectorAll(\n                    '.cnidh-amr-athlete'\n                );\n\n\n            const type =\n                getRegistrationType();\n\n\n            athletes.forEach(\n                function(athlete, index) {\n\n                    const title =\n                        athlete.querySelector(\n                            '.cnidh-amr-athlete-title'\n                        );\n\n                    const remove =\n                        athlete.querySelector(\n                            '.cnidh-amr-remove-athlete'\n                        );\n\n\n                    if (title) {\n\n                        title.textContent =\n                            'Atleta ' +\n                            (index + 1);\n                    }\n\n\n                    if (remove) {\n\n                        if (\n                            type === 'individual' ||\n                            athletes.length <= 1\n                        ) {\n\n                            remove.style.display =\n                                'none';\n\n                        } else {\n\n                            remove.style.display =\n                                '';\n                        }\n                    }\n                }\n            );\n\n\n            updateTotal();\n        }\n\n\n        function addAthlete() {\n\n            const currentCount =\n                athletesContainer.querySelectorAll(\n                    '.cnidh-amr-athlete'\n                ).length;\n\n\n            if (\n                currentCount >=\n                maxAthletes\n            ) {\n\n                showErrors([\n                    'Foi atingido o n\u00famero m\u00e1ximo de atletas permitido nesta inscri\u00e7\u00e3o.'\n                ]);\n\n                return;\n            }\n\n\n            const fragment =\n                athleteTemplate\n                    .content\n                    .cloneNode(true);\n\n\n            athletesContainer.appendChild(\n                fragment\n            );\n\n\n            normalizeAthletes();\n        }\n\n\n        athletesContainer.addEventListener(\n            'click',\n            function(event) {\n\n                const button =\n                    event.target.closest(\n                        '.cnidh-amr-remove-athlete'\n                    );\n\n\n                if (!button) {\n                    return;\n                }\n\n\n                const athlete =\n                    button.closest(\n                        '.cnidh-amr-athlete'\n                    );\n\n\n                if (athlete) {\n\n                    athlete.remove();\n\n                    normalizeAthletes();\n                }\n            }\n        );\n\n\n        addAthleteButton.addEventListener(\n            'click',\n            addAthlete\n        );\n\n\n        form\n            .querySelectorAll(\n                '[name=\"amr_registration_type\"]'\n            )\n            .forEach(\n                function(input) {\n\n                    input.addEventListener(\n                        'change',\n                        syncRegistrationType\n                    );\n                }\n            );\n\n\n        \/* =============================================\n         * TOTAL\n         * ============================================= *\/\n\n        function updateTotal() {\n\n            const count =\n                athletesContainer.querySelectorAll(\n                    '.cnidh-amr-athlete'\n                ).length;\n\n\n            const total =\n                count * unitPrice;\n\n\n            totalDescription.textContent =\n                count === 1\n                    ? '1 atleta'\n                    : count + ' atletas';\n\n\n            totalValue.textContent =\n                total.toLocaleString(\n                    'pt-PT',\n                    {\n                        style: 'currency',\n                        currency: 'EUR'\n                    }\n                );\n        }\n\n\n        \/* =============================================\n         * ERROS\n         * ============================================= *\/\n\n        function clearErrors() {\n\n            errorsBox.classList.remove(\n                'is-visible'\n            );\n\n            errorsBox.innerHTML = '';\n\n\n            form\n                .querySelectorAll(\n                    '.is-invalid'\n                )\n                .forEach(\n                    function(element) {\n\n                        element.classList.remove(\n                            'is-invalid'\n                        );\n                    }\n                );\n        }\n\n\n        function escapeHtml(value) {\n\n            return String(value)\n                .replace(\n                    \/[&<>\"']\/g,\n                    function(match) {\n\n                        return {\n                            '&': '&amp;',\n                            '<': '&lt;',\n                            '>': '&gt;',\n                            '\"': '&quot;',\n                            \"'\": '&#039;'\n                        }[match];\n                    }\n                );\n        }\n\n\n        function showErrors(errors) {\n\n            if (\n                !Array.isArray(errors) ||\n                errors.length === 0\n            ) {\n\n                errors = [\n                    'N\u00e3o foi poss\u00edvel processar a inscri\u00e7\u00e3o.'\n                ];\n            }\n\n\n            errorsBox.innerHTML =\n                '<ul>' +\n                errors.map(\n                    function(error) {\n\n                        return (\n                            '<li>' +\n                            escapeHtml(error) +\n                            '<\/li>'\n                        );\n                    }\n                ).join('') +\n                '<\/ul>';\n\n\n            errorsBox.classList.add(\n                'is-visible'\n            );\n\n\n            errorsBox.scrollIntoView({\n                behavior: 'smooth',\n                block: 'center'\n            });\n        }\n\n\n        function markInvalid(wrapper) {\n\n            if (wrapper) {\n\n                wrapper.classList.add(\n                    'is-invalid'\n                );\n            }\n        }\n\n\n        function valueOf(name) {\n\n            const input =\n                form.querySelector(\n                    '[name=\"' +\n                    name +\n                    '\"]'\n                );\n\n            return input\n                ? input.value.trim()\n                : '';\n        }\n\n\n        function emailIsValid(email) {\n\n            return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/\n                .test(email);\n        }\n\n\n        \/* =============================================\n         * VALIDA\u00c7\u00c3O CLIENTE\n         * ============================================= *\/\n\n        function validateClientSide() {\n\n            const errors = [];\n\n            const type =\n                getRegistrationType();\n\n\n            \/* -----------------------------------------\n             * Contactos\n             * ----------------------------------------- *\/\n\n            if (type === 'individual') {\n\n                const email =\n                    valueOf(\n                        'amr_individual_email'\n                    );\n\n                const phone =\n                    valueOf(\n                        'amr_individual_phone'\n                    );\n\n\n                if (!email) {\n\n                    errors.push(\n                        'Indica o email de contacto.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"individual_email\"]'\n                        )\n                    );\n\n                } else if (\n                    !emailIsValid(email)\n                ) {\n\n                    errors.push(\n                        'Indica um email v\u00e1lido.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"individual_email\"]'\n                        )\n                    );\n                }\n\n\n                if (!phone) {\n\n                    errors.push(\n                        'Indica o telem\u00f3vel de contacto.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"individual_phone\"]'\n                        )\n                    );\n                }\n\n            } else {\n\n                const clubName =\n                    valueOf(\n                        'amr_club_name'\n                    );\n\n                const email =\n                    valueOf(\n                        'amr_club_email'\n                    );\n\n                const phone =\n                    valueOf(\n                        'amr_club_phone'\n                    );\n\n                const delegates =\n                    valueOf(\n                        'amr_club_delegates'\n                    );\n\n\n                if (!clubName) {\n\n                    errors.push(\n                        'Indica o nome do clube.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"club_name\"]'\n                        )\n                    );\n                }\n\n\n                if (!email) {\n\n                    errors.push(\n                        'Indica o email de contacto do clube.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"club_email\"]'\n                        )\n                    );\n\n                } else if (\n                    !emailIsValid(email)\n                ) {\n\n                    errors.push(\n                        'Indica um email de contacto v\u00e1lido.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"club_email\"]'\n                        )\n                    );\n                }\n\n\n                if (!phone) {\n\n                    errors.push(\n                        'Indica o telem\u00f3vel de contacto do clube.'\n                    );\n\n                    markInvalid(\n                        form.querySelector(\n                            '[data-field-wrapper=\"club_phone\"]'\n                        )\n                    );\n                }\n\n\n               \n            }\n\n\n            \/* -----------------------------------------\n             * Atletas\n             * ----------------------------------------- *\/\n\n            const athletes =\n                athletesContainer.querySelectorAll(\n                    '.cnidh-amr-athlete'\n                );\n\n\n            athletes.forEach(\n                function(athlete, index) {\n\n                    const number =\n                        index + 1;\n\n\n                    const name =\n                        athlete.querySelector(\n                            '[name=\"amr_athlete_name[]\"]'\n                        );\n\n                    const birthdate =\n                        athlete.querySelector(\n                            '[name=\"amr_athlete_birthdate[]\"]'\n                        );\n\n                    const category =\n                        athlete.querySelector(\n                            '[name=\"amr_athlete_category[]\"]'\n                        );\n\n                    const tshirt =\n                        athlete.querySelector(\n                            '[name=\"amr_athlete_tshirt[]\"]'\n                        );\n\n                    const lodging =\n                        athlete.querySelector(\n                            '[name=\"amr_athlete_lodging[]\"]'\n                        );\n\n\n                    if (\n                        !name ||\n                        !name.value.trim()\n                    ) {\n\n                        errors.push(\n                            'Atleta ' +\n                            number +\n                            ': indica o nome completo.'\n                        );\n\n                        markInvalid(\n                            athlete.querySelector(\n                                '[data-field-wrapper=\"athlete_name\"]'\n                            )\n                        );\n                    }\n\n\n                    if (\n                        !birthdate ||\n                        !birthdate.value\n                    ) {\n\n                        errors.push(\n                            'Atleta ' +\n                            number +\n                            ': indica a data de nascimento.'\n                        );\n\n                        markInvalid(\n                            athlete.querySelector(\n                                '[data-field-wrapper=\"athlete_birthdate\"]'\n                            )\n                        );\n                    }\n\n\n                    if (\n                        !category ||\n                        !category.value\n                    ) {\n\n                        errors.push(\n                            'Atleta ' +\n                            number +\n                            ': seleciona a categoria.'\n                        );\n\n                        markInvalid(\n                            athlete.querySelector(\n                                '[data-field-wrapper=\"athlete_category\"]'\n                            )\n                        );\n                    }\n\n\n                    if (\n                        !tshirt ||\n                        !tshirt.value\n                    ) {\n\n                        errors.push(\n                            'Atleta ' +\n                            number +\n                            ': seleciona o tamanho da t-shirt.'\n                        );\n\n                        markInvalid(\n                            athlete.querySelector(\n                                '[data-field-wrapper=\"athlete_tshirt\"]'\n                            )\n                        );\n                    }\n\n\n                    if (\n                        !lodging ||\n                        lodging.value === ''\n                    ) {\n\n                        errors.push(\n                            'Atleta ' +\n                            number +\n                            ': indica se solicita alojamento.'\n                        );\n\n                        markInvalid(\n                            athlete.querySelector(\n                                '[data-field-wrapper=\"athlete_lodging\"]'\n                            )\n                        );\n                    }\n                }\n            );\n\n\n            \/* -----------------------------------------\n             * Declara\u00e7\u00e3o\n             * ----------------------------------------- *\/\n\n            const declaration =\n                form.querySelector(\n                    '[name=\"amr_declaration\"]'\n                );\n\n\n            if (\n                !declaration ||\n                !declaration.checked\n            ) {\n\n                errors.push(\n                    '\u00c9 necess\u00e1rio confirmar a declara\u00e7\u00e3o relativa \u00e0 inscri\u00e7\u00e3o federativa, seguro e regulamento.'\n                );\n\n                declarationWrapper.classList.add(\n                    'is-invalid'\n                );\n            }\n\n\n            return errors;\n        }\n\n\n        \/* =============================================\n         * SUBMISS\u00c3O\n         * ============================================= *\/\n\n        form.addEventListener(\n            'submit',\n            async function(event) {\n\n                event.preventDefault();\n\n\n                clearErrors();\n\n\n                const errors =\n                    validateClientSide();\n\n\n                if (\n                    errors.length > 0\n                ) {\n\n                    showErrors(errors);\n\n                    return;\n                }\n\n\n                submitButton.disabled =\n                    true;\n\n                submitButton.textContent =\n                    'A processar...';\n\n\n                try {\n\n                    const formData =\n                        new FormData(form);\n\n\n                    const response =\n                        await fetch(\n                            form.dataset.ajaxUrl,\n                            {\n                                method: 'POST',\n                                body: formData,\n                                credentials: 'same-origin'\n                            }\n                        );\n\n\n                    const result =\n                        await response.json();\n\n\n                    if (\n                        result &&\n                        result.success &&\n                        result.data &&\n                        result.data.redirect\n                    ) {\n\n                        window.location.href =\n                            result.data.redirect;\n\n                        return;\n                    }\n\n\n                    if (\n                        result &&\n                        result.data &&\n                        Array.isArray(\n                            result.data.errors\n                        )\n                    ) {\n\n                        showErrors(\n                            result.data.errors\n                        );\n\n                    } else {\n\n                        showErrors([\n                            'N\u00e3o foi poss\u00edvel processar a inscri\u00e7\u00e3o. Verifica os dados e tenta novamente.'\n                        ]);\n                    }\n\n                } catch (error) {\n\n                    showErrors([\n                        'Erro de comunica\u00e7\u00e3o com o servidor. Tenta novamente.'\n                    ]);\n\n                } finally {\n\n                    submitButton.disabled =\n                        false;\n\n                    submitButton.textContent =\n                        'Continuar para pagamento';\n                }\n            }\n        );\n\n\n        \/* =============================================\n         * ESTADO INICIAL\n         * ============================================= *\/\n\n        syncRegistrationType();\n\n    })();\n\n    <\/script>\n\n    <\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-8366","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/pages\/8366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/comments?post=8366"}],"version-history":[{"count":1,"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/pages\/8366\/revisions"}],"predecessor-version":[{"id":8367,"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/pages\/8366\/revisions\/8367"}],"wp:attachment":[{"href":"https:\/\/www.cninfante.pt\/en\/wp-json\/wp\/v2\/media?parent=8366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}