{"id":1755,"date":"2026-10-31T23:17:28","date_gmt":"2026-10-31T23:17:28","guid":{"rendered":"https:\/\/savoieretrogames.fr\/?page_id=1755"},"modified":"2026-11-01T09:17:45","modified_gmt":"2026-11-01T09:17:45","slug":"inscription-cosplay","status":"publish","type":"page","link":"http:\/\/savoieretrogames.fr\/index.php\/inscription-cosplay\/","title":{"rendered":"INSCRIPTION COSPLAY"},"content":{"rendered":"<div data-colibri-id=\"1755-c1\" class=\"style-369 style-local-1755-c1 position-relative\">\n  <!---->\n  <div data-colibri-component=\"section\" data-colibri-id=\"1755-c2\" id=\"custom\" class=\"h-section h-section-global-spacing d-flex align-items-lg-center align-items-md-center align-items-center style-370 style-local-1755-c2 position-relative\">\n    <!---->\n    <!---->\n    <div class=\"h-section-grid-container h-section-boxed-container\">\n      <!---->\n      <div data-colibri-id=\"1755-c3\" class=\"h-row-container gutters-row-lg-2 gutters-row-md-2 gutters-row-0 gutters-row-v-lg-2 gutters-row-v-md-2 gutters-row-v-2 style-371 style-local-1755-c3 position-relative\">\n        <!---->\n        <div class=\"h-row justify-content-lg-center justify-content-md-center justify-content-center align-items-lg-stretch align-items-md-stretch align-items-stretch gutters-col-lg-2 gutters-col-md-2 gutters-col-0 gutters-col-v-lg-2 gutters-col-v-md-2 gutters-col-v-2\">\n          <!---->\n          <div class=\"h-column h-column-container d-flex h-col-lg-auto h-col-md-auto h-col-auto style-372-outer style-local-1755-c4-outer\">\n            <div data-colibri-id=\"1755-c4\" class=\"d-flex h-flex-basis h-column__inner h-px-lg-2 h-px-md-2 h-px-2 v-inner-lg-2 v-inner-md-2 v-inner-2 style-372 style-local-1755-c4 position-relative\">\n              <!---->\n              <!---->\n              <div class=\"w-100 h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start\">\n                <!---->\n                <div data-colibri-id=\"1755-c5\" class=\"style-373 style-local-1755-c5 position-relative h-element\">\n                  <!---->\n                  <div class=\"\"><!DOCTYPE html>\r\n<html lang=\"fr\" class=\"h-full\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Inscription Concours Cosplay<\/title>\r\n    <!-- Tailwind CSS CDN -->\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n    <style>\r\n        body { font-family: 'Poppins', sans-serif; }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"bg-slate-950 text-slate-100 h-full flex flex-col justify-between selection:bg-purple-500 selection:text-white\">\r\n\r\n    <!-- Header \/ Navbar -->\r\n    <header class=\"bg-slate-900\/85 backdrop-blur-md border-b border-slate-800 sticky top-0 z-50\">\r\n        <div class=\"max-w-6xl mx-auto px-4 py-4 flex justify-between items-center\">\r\n            <div class=\"flex items-center space-x-3\">\r\n                <div class=\"bg-gradient-to-tr from-purple-600 to-pink-500 p-2.5 rounded-xl shadow-lg shadow-purple-500\/20\">\r\n                    <svg class=\"w-6 h-6 text-white\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14.828 14.828a4 4 0 01-5.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path>\r\n                    <\/svg>\r\n                <\/div>\r\n                <div>\r\n                    <h1 class=\"text-lg font-bold tracking-tight bg-gradient-to-r from-purple-400 to-pink-400 bg-clip-text text-transparent\">Concours Cosplay<\/h1>\r\n                    <p class=\"text-xs text-slate-400\">Portail officiel d'inscription<\/p>\r\n                <\/div>\r\n            <\/div>\r\n            <div>\r\n                <button id=\"adminToggleBtn\" onclick=\"toggleAdminModal()\" class=\"inline-flex items-center space-x-2 px-4 py-2 rounded-xl bg-slate-800 hover:bg-slate-700 text-slate-200 text-sm font-medium border border-slate-700\/60 transition shadow-sm\">\r\n                    <svg class=\"w-4 h-4 text-purple-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\"><\/path><\/svg>\r\n                    <span>Espace Administrateur<\/span>\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/header>\r\n\r\n    <!-- Main Container -->\r\n    <main class=\"max-w-4xl mx-auto px-4 py-10 flex-grow w-full\">\r\n        <div id=\"formSection\" class=\"bg-slate-900\/60 border border-slate-800\/80 rounded-3xl p-6 sm:p-10 shadow-2xl backdrop-blur-sm\">\r\n            <div class=\"text-center max-w-xl mx-auto mb-10\">\r\n                <span class=\"inline-block py-1 px-3 rounded-full bg-purple-500\/10 border border-purple-500\/20 text-purple-400 text-xs font-semibold uppercase tracking-wider mb-3\">\u00c9dition 2026<\/span>\r\n                <h2 class=\"text-2xl sm:text-3xl font-bold tracking-tight text-white\">Formulaire d'Inscription<\/h2>\r\n                <p class=\"text-sm text-slate-400 mt-2\">Remplissez le formulaire ci-dessous avec vos informations et vos fichiers pour valider votre participation.<\/p>\r\n            <\/div>\r\n\r\n            <form id=\"cosplayForm\" onsubmit=\"handleFormSubmit(event)\" class=\"space-y-8\">\r\n                \r\n                <!-- Section 1: Informations personnelles & Contact -->\r\n                <div class=\"space-y-4\">\r\n                    <h3 class=\"text-sm font-bold uppercase tracking-wider text-purple-400 border-b border-slate-800 pb-2\">1. Informations personnelles & Contact<\/h3>\r\n                    \r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Nom *<\/label>\r\n                            <input type=\"text\" id=\"nom\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Dupont\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Pr\u00e9nom *<\/label>\r\n                            <input type=\"text\" id=\"prenom\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Alice\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Nom de sc\u00e8ne \/ Pseudo<\/label>\r\n                            <input type=\"text\" id=\"sceneName\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Alicia Cosplay\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Adresse email *<\/label>\r\n                            <input type=\"email\" id=\"email\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: alice@example.com\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">T\u00e9l\u00e9phone portable *<\/label>\r\n                            <input type=\"tel\" id=\"telephone\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: 06 12 34 56 78\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Date de naissance *<\/label>\r\n                            <input type=\"date\" id=\"naissance\" onchange=\"checkAge()\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\">\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Section 1.5 : Autorisation Parentale (Affich\u00e9e uniquement si mineur) -->\r\n                <div id=\"parentalContainer\" class=\"space-y-4 bg-purple-950\/20 border border-purple-500\/30 p-5 rounded-2xl hidden\">\r\n                    <div class=\"flex items-center space-x-2 text-purple-400\">\r\n                        <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"><\/path><\/svg>\r\n                        <h3 class=\"text-sm font-bold uppercase tracking-wider\">Autorisation Parentale (Participant Mineur)<\/h3>\r\n                    <\/div>\r\n                    <p class=\"text-xs text-slate-400\">Le participant ayant moins de 18 ans, les coordonn\u00e9es et l'accord d'un responsable l\u00e9gal sont obligatoires.<\/p>\r\n                    \r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-6 pt-2\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Nom & Pr\u00e9nom du Parent *<\/label>\r\n                            <input type=\"text\" id=\"parentName\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Marc Dupont\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">T\u00e9l\u00e9phone du Parent *<\/label>\r\n                            <input type=\"tel\" id=\"parentPhone\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: 06 98 76 54 32\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Email du Parent *<\/label>\r\n                            <input type=\"email\" id=\"parentEmail\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: parent@example.com\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"pt-2\">\r\n                        <label class=\"flex items-start space-x-3 cursor-pointer\">\r\n                            <input type=\"checkbox\" id=\"parentAuth\" class=\"mt-1 rounded border-slate-800 bg-slate-950 text-purple-600 focus:ring-purple-500\">\r\n                            <span class=\"text-xs text-slate-300\">En tant que responsable l\u00e9gal, j'autorise mon enfant \u00e0 participer au concours de cosplay et \u00e0 l'ensemble des activit\u00e9s associ\u00e9es. *<\/span>\r\n                        <\/label>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Section 2: Informations sur le Cosplay & le Personnage -->\r\n                <div class=\"space-y-4\">\r\n                    <h3 class=\"text-sm font-bold uppercase tracking-wider text-purple-400 border-b border-slate-800 pb-2\">2. Informations sur le Cosplay & le Personnage<\/h3>\r\n                    \r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Nom du personnage *<\/label>\r\n                            <input type=\"text\" id=\"character\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Zelda\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Origine de l'\u0153uvre *<\/label>\r\n                            <input type=\"text\" id=\"origine\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Jeu vid\u00e9o, manga, anime, film...\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Type de prestation *<\/label>\r\n                            <select id=\"typePresta\" onchange=\"toggleGroupFields()\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\">\r\n                                <option value=\"Solo Samedi d\u00e9fil\u00e9\">Solo Samedi d\u00e9fil\u00e9<\/option>\r\n                                <option value=\"Solo dimanche Concours\">Solo dimanche Concours<\/option>\r\n                                <option value=\"Groupe Dimanche D\u00e9fil\u00e9\">Groupe Dimanche D\u00e9fil\u00e9<\/option>\r\n                                <option value=\"Groupe Dimanche Concours\">Groupe Dimanche Concours<\/option>\r\n                            <\/select>\r\n                        <\/div>\r\n                        <div id=\"groupFieldsContainer\" class=\"hidden\">\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Nom de la troupe & Membres *<\/label>\r\n                            <input type=\"text\" id=\"groupDetails\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"Nom de troupe et liste des participants\">\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Section 3: \u00c9valuation & Fabrication -->\r\n                <div class=\"space-y-4\">\r\n                    <h3 class=\"text-sm font-bold uppercase tracking-wider text-purple-400 border-b border-slate-800 pb-2\">3. \u00c9valuation & Fabrication (Jury)<\/h3>\r\n                    \r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">% de fabrication fait main (Craft \/ Couture) *<\/label>\r\n                            <select id=\"fabricationPourcent\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\">\r\n                                <option value=\"0%\">0% (Achet\u00e9 \/ Commercial)<\/option>\r\n                                <option value=\"25%\">25%<\/option>\r\n                                <option value=\"50%\">50%<\/option>\r\n                                <option value=\"75%\">75%<\/option>\r\n                                <option value=\"100%\">100% Fait main<\/option>\r\n                            <\/select>\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Mat\u00e9riaux principaux utilis\u00e9s *<\/label>\r\n                            <input type=\"text\" id=\"materiaux\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Worbla, mousse EVA, r\u00e9sine, impression 3D...\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">R\u00e9seaux sociaux (Instagram, Facebook, etc.)<\/label>\r\n                            <input type=\"text\" id=\"reseaux\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: @alicia_cosplay\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Photo de r\u00e9f\u00e9rence (Visuel \/ Costume) *<\/label>\r\n                            <input type=\"file\" id=\"imageFile\" accept=\"image\/*\" required class=\"w-full text-xs text-slate-400 file:mr-4 file:py-2.5 file:px-4 file:rounded-xl file:border-0 file:text-xs file:font-semibold file:bg-purple-500\/10 file:text-purple-300 hover:file:bg-purple-500\/20 file:cursor-pointer border border-slate-800 rounded-xl bg-slate-950\/60 p-2\">\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Section 4: La Prestation Sc\u00e8ne (Audio & Technique) -->\r\n                <div class=\"space-y-4\">\r\n                    <h3 class=\"text-sm font-bold uppercase tracking-wider text-purple-400 border-b border-slate-800 pb-2\">4. La Prestation Sc\u00e8ne (Audio & Technique)<\/h3>\r\n                    \r\n                    <div>\r\n                        <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Fichier audio \/ piste de la prestation (MP3 ou WAV) *<\/label>\r\n                        <input type=\"file\" id=\"mediaFile\" accept=\"audio\/*,video\/*\" required class=\"w-full text-xs text-slate-400 file:mr-4 file:py-2.5 file:px-4 file:rounded-xl file:border-0 file:text-xs file:font-semibold file:bg-purple-500\/10 file:text-purple-300 hover:file:bg-purple-500\/20 file:cursor-pointer border border-slate-800 rounded-xl bg-slate-950\/60 p-2\">\r\n                        <p class=\"text-[11px] text-slate-500 mt-1\">Dur\u00e9e max : 1min30 (Solo) \/ 2min30 (Groupe).<\/p>\r\n                    <\/div>\r\n\r\n                    <div>\r\n                        <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Description de la mise en sc\u00e8ne (pour les animateurs) *<\/label>\r\n                        <textarea id=\"summary\" rows=\"3\" required class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Combat \u00e9pique contre un boss, petite sayn\u00e8te humoristique...\"><\/textarea>\r\n                    <\/div>\r\n\r\n                    <div>\r\n                        <label class=\"block text-xs font-semibold uppercase tracking-wider text-slate-300 mb-2\">Besoins techniques sp\u00e9cifiques (Lumi\u00e8re, Micro, Accessoires)<\/label>\r\n                        <input type=\"text\" id=\"besoinsTechniques\" class=\"w-full bg-slate-950\/60 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 focus:ring-1 focus:ring-purple-500 transition text-sm\" placeholder=\"ex: Micro HF main, feux de sc\u00e8ne fixes, besoin d'une table...\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Section 5: Droit \u00e0 l'image & Validation -->\r\n                <div class=\"space-y-4 pt-2\">\r\n                    <h3 class=\"text-sm font-bold uppercase tracking-wider text-purple-400 border-b border-slate-800 pb-2\">5. Droit \u00e0 l'image & Validation<\/h3>\r\n                    \r\n                    <div class=\"space-y-3 pt-1\">\r\n                        <label class=\"flex items-start space-x-3 cursor-pointer\">\r\n                            <input type=\"checkbox\" id=\"droitImage\" required class=\"mt-1 rounded border-slate-800 bg-slate-950 text-purple-600 focus:ring-purple-500\">\r\n                            <span class=\"text-xs text-slate-300\">J'autorise l'organisation et les m\u00e9dias officiels \u00e0 me photographier et \u00e0 me filmer pendant l'\u00e9v\u00e9nement (Droit \u00e0 l'image). *<\/span>\r\n                        <\/label>\r\n                        \r\n                        <label class=\"flex items-start space-x-3 cursor-pointer\">\r\n                            <input type=\"checkbox\" id=\"acceptReglement\" required disabled class=\"mt-1 rounded border-slate-800 bg-slate-950 text-purple-600 focus:ring-purple-500 cursor-not-allowed opacity-60\">\r\n                            <span class=\"text-xs text-slate-300\">\r\n                                Je certifie avoir lu et accept\u00e9 le \r\n                                <button type=\"button\" onclick=\"toggleReglementModal()\" class=\"text-purple-400 hover:text-purple-300 underline font-medium focus:outline-none\">r\u00e8glement int\u00e9rieur du concours<\/button> \r\n                                (faites d\u00e9filer jusqu'en bas pour d\u00e9bloquer). *\r\n                            <\/span>\r\n                        <\/label>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"pt-4\">\r\n                    <button type=\"submit\" id=\"submitBtn\" class=\"w-full py-4 px-6 rounded-xl bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-500 hover:to-pink-500 text-white font-semibold shadow-lg shadow-purple-600\/25 transition duration-200 flex items-center justify-center space-x-2\">\r\n                        <span id=\"submitText\">Envoyer mon inscription<\/span>\r\n                        <svg id=\"submitSpinner\" class=\"animate-spin -ml-1 mr-3 h-5 w-5 text-white hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"><\/circle><path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"><\/path><\/svg>\r\n                    <\/button>\r\n                <\/div>\r\n            <\/form>\r\n        <\/div>\r\n    <\/main>\r\n\r\n    <!-- Footer -->\r\n    <footer class=\"border-t border-slate-900 bg-slate-950 py-6 text-center text-xs text-slate-500\">\r\n        <p>&copy; 2026 Concours Cosplay. Tous droits r\u00e9serv\u00e9s.<\/p>\r\n    <\/footer>\r\n\r\n    <!-- Modal Confirmation de Succ\u00e8s -->\r\n    <div id=\"successModal\" class=\"fixed inset-0 bg-slate-950\/80 backdrop-blur-sm z-50 flex items-center justify-center p-4 hidden\">\r\n        <div class=\"bg-slate-900 border border-slate-800 rounded-3xl max-w-md w-full p-6 sm:p-8 shadow-2xl relative text-center space-y-4\">\r\n            <div class=\"w-16 h-16 bg-emerald-500\/10 border border-emerald-500\/20 text-emerald-400 rounded-2xl flex items-center justify-center mx-auto mb-2\">\r\n                <svg class=\"w-8 h-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"><\/path><\/svg>\r\n            <\/div>\r\n            <h3 class=\"text-xl font-bold text-white\">Fichiers bien envoy\u00e9s !<\/h3>\r\n            <p class=\"text-sm text-slate-300 leading-relaxed\">\r\n                Merci pour votre inscription, nous allons vous contacter rapidement pour valider votre inscription.\r\n            <\/p>\r\n            <div class=\"pt-4\">\r\n                <button onclick=\"closeSuccessModal()\" class=\"w-full py-3 px-4 rounded-xl bg-purple-600 hover:bg-purple-500 text-white font-medium text-sm transition shadow-lg shadow-purple-600\/20\">Compris !<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Modal R\u00e8glement Int\u00e9rieur -->\r\n    <div id=\"reglementModal\" class=\"fixed inset-0 bg-slate-950\/80 backdrop-blur-sm z-50 flex items-center justify-center p-4 hidden\">\r\n        <div class=\"bg-slate-900 border border-slate-800 rounded-3xl max-w-2xl w-full p-6 sm:p-8 shadow-2xl relative max-h-[85vh] flex flex-col\">\r\n            <button onclick=\"toggleReglementModal()\" class=\"absolute top-4 right-4 text-slate-400 hover:text-white\">\r\n                <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path><\/svg>\r\n            <\/button>\r\n            <div class=\"text-center mb-6\">\r\n                <div class=\"inline-flex p-3 bg-purple-500\/10 text-purple-400 rounded-2xl mb-2\">\r\n                    <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"><\/path><\/svg>\r\n                <\/div>\r\n                <h3 class=\"text-lg font-bold text-white\">R\u00e8glement Int\u00e9rieur du Concours Cosplay<\/h3>\r\n                <p id=\"reglementStatus\" class=\"text-xs text-amber-400 mt-1\">\u2b07\ufe0f Veuillez lire le r\u00e8glement jusqu'en bas pour valider.<\/p>\r\n            <\/div>\r\n            \r\n            <div id=\"reglementScrollBox\" onscroll=\"checkReglementScroll()\" class=\"overflow-y-auto space-y-4 text-xs text-slate-300 pr-2 border-y border-slate-800 py-4 mb-6 leading-relaxed max-h-[45vh]\">\r\n                <h4 class=\"font-bold text-purple-400 text-sm\">Article 1 : Objet du concours<\/h4>\r\n                <p>Le concours de cosplay est ouvert \u00e0 tous les passionn\u00e9s, amateurs ou confirm\u00e9s. Il a pour but de valoriser la cr\u00e9ation, l'interpr\u00e9tation et la mise en sc\u00e8ne de personnages issus de la pop culture, des jeux vid\u00e9o, des mangas, des anim\u00e9s et du cin\u00e9ma.<\/p>\r\n\r\n                <h4 class=\"font-bold text-purple-400 text-sm\">Article 2 : S\u00e9curit\u00e9 et Armes Factices<\/h4>\r\n                <p>Pour des raisons de s\u00e9curit\u00e9 \u00e9videntes :<\/p>\r\n                <ul class=\"list-disc pl-5 space-y-1\">\r\n                    <li>Les armes \u00e0 feu r\u00e9elles, munitions r\u00e9elles ou armes blanches ac\u00e9r\u00e9es sont strictement interdites.<\/li>\r\n                    <li>Les armes factices (r\u00e9pliques en bois, mousse EVA, Worbla, PVC, impression 3D) doivent \u00eatre contr\u00f4l\u00e9es et valid\u00e9es au point de s\u00e9curit\u00e9 \u00e0 l'entr\u00e9e de l'\u00e9v\u00e9nement. Elles ne doivent pas pr\u00e9senter de danger pour le public ou les participants.<\/li>\r\n                <\/ul>\r\n\r\n                <h4 class=\"font-bold text-purple-400 text-sm\">Article 3 : Loges et Horaires<\/h4>\r\n                <p>Les participants s'engagent \u00e0 respecter imp\u00e9rativement les horaires de convocation pour les passages devant le jury et sur sc\u00e8ne. Des espaces de loges sont mis \u00e0 disposition pour se pr\u00e9parer ; chaque participant se doit de respecter les lieux et la propret\u00e9 de l'espace partag\u00e9.<\/p>\r\n\r\n                <h4 class=\"font-bold text-purple-400 text-sm\">Article 4 : Prestation Sc\u00e9nique et Audio<\/h4>\r\n                <p>Les pistes audio doivent \u00eatre fournies au format MP3 ou WAV lors de l'inscription. Le contenu des prestations (gestes, propos, musiques) doit rester tout public et respecter les bonnes m\u0153urs. L'organisation se r\u00e9serve le droit de disqualifier imm\u00e9diatement tout participant ne respectant pas ces r\u00e8gles.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"flex justify-end\">\r\n                <button type=\"button\" id=\"acceptReglementBtn\" onclick=\"validateReglement()\" disabled class=\"py-2.5 px-5 rounded-xl bg-slate-800 text-slate-500 font-medium text-xs transition cursor-not-allowed\">J'ai compris et j'accepte<\/button>\r\n           <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Admin Login Modal -->\r\n    <div id=\"adminModal\" class=\"fixed inset-0 bg-slate-950\/80 backdrop-blur-sm z-50 flex items-center justify-center p-4 hidden\">\r\n        <div class=\"bg-slate-900 border border-slate-800 rounded-3xl max-w-md w-full p-6 shadow-2xl relative\">\r\n            <button onclick=\"toggleAdminModal()\" class=\"absolute top-4 right-4 text-slate-400 hover:text-white\">\r\n                <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path><\/svg>\r\n            <\/button>\r\n            <div class=\"text-center mb-6\">\r\n                <div class=\"inline-flex p-3 bg-purple-500\/10 text-purple-400 rounded-2xl mb-2\">\r\n                    <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\"><\/path><\/svg>\r\n                <\/div>\r\n                <h3 class=\"text-lg font-bold text-white\">Acc\u00e8s Administrateur<\/h3>\r\n                <p class=\"text-xs text-slate-400 mt-1\">Entrez le mot de passe pour scanner les dossiers Google Drive.<\/p>\r\n            <\/div>\r\n            <form onsubmit=\"handleAdminLogin(event)\" class=\"space-y-4\">\r\n                <div>\r\n                    <input type=\"password\" id=\"adminPassword\" required placeholder=\"Mot de passe admin\" class=\"w-full bg-slate-950 border border-slate-800 rounded-xl px-4 py-3 text-slate-100 placeholder-slate-600 focus:outline-none focus:border-purple-500 text-sm\">\r\n                <\/div>\r\n                <button type=\"submit\" class=\"w-full py-3 px-4 rounded-xl bg-purple-600 hover:bg-purple-500 text-white font-medium text-sm transition shadow-lg shadow-purple-600\/20\">Se connecter & Scanner<\/button>\r\n            <\/form>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Admin Dashboard Modal -->\r\n    <div id=\"adminDashboard\" class=\"fixed inset-0 bg-slate-950 z-50 overflow-y-auto hidden flex flex-col\">\r\n        <header class=\"bg-slate-900 border-b border-slate-800 px-6 py-4 flex justify-between items-center sticky top-0 z-20\">\r\n            <div class=\"flex items-center space-x-3\">\r\n                <span class=\"bg-purple-500\/20 text-purple-400 text-xs font-bold px-3 py-1 rounded-full uppercase\">Google Drive Scan<\/span>\r\n                <h2 class=\"text-lg font-bold text-white\">Gestion des Inscriptions Cosplay<\/h2>\r\n            <\/div>\r\n            <div>\r\n                <button onclick=\"closeAdminDashboard()\" class=\"px-3 py-2 bg-rose-500\/10 hover:bg-rose-500\/20 text-rose-400 text-xs font-medium rounded-lg border border-rose-500\/20 transition\">Fermer<\/button>\r\n            <\/div>\r\n        <\/header>\r\n\r\n        <div class=\"max-w-7xl mx-auto px-4 py-8 flex-grow w-full\">\r\n            <div id=\"loadingScan\" class=\"text-center py-20\">\r\n                <svg class=\"animate-spin h-8 w-8 text-purple-500 mx-auto mb-3\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"><\/circle><path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"><\/path><\/svg>\r\n                <p class=\"text-slate-400 text-sm\">Scan du dossier Google Drive en cours...<\/p>\r\n            <\/div>\r\n            <div id=\"submissionsContainer\" class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\"><\/div>\r\n            <div id=\"emptyState\" class=\"text-center py-20 hidden\">\r\n                <p class=\"text-slate-500 text-sm\">Aucun dossier de participant trouv\u00e9 dans Google Drive.<\/p>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Pied de page du Dashboard Admin avec les boutons -->\r\n        <footer class=\"bg-slate-900 border-t border-slate-800 px-6 py-4 flex justify-end items-center space-x-3 sticky bottom-0 z-20\">\r\n            <button onclick=\"exportToXls()\" class=\"px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white text-xs font-medium rounded-lg transition flex items-center space-x-1.5 shadow-sm\">\r\n                <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"><\/path><\/svg>\r\n                <span>T\u00e9l\u00e9charger la liste (.xls)<\/span>\r\n            <\/button>\r\n            <button onclick=\"fetchDriveSubmissions()\" class=\"px-4 py-2 bg-purple-600 hover:bg-purple-500 text-white text-xs font-medium rounded-lg transition flex items-center space-x-1.5\">\r\n                <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"><\/path><\/svg>\r\n                <span>Actualiser le scan<\/span>\r\n            <\/button>\r\n        <\/footer>\r\n    <\/div>\r\n\r\n    <!-- Cosplayeur Details Modal (Admin) -->\r\n    <div id=\"detailModal\" class=\"fixed inset-0 bg-slate-950\/80 backdrop-blur-sm z-50 flex items-center justify-center p-4 hidden\">\r\n        <div class=\"bg-slate-900 border border-slate-800 rounded-3xl max-w-2xl w-full p-6 sm:p-8 shadow-2xl relative max-h-[90vh] overflow-y-auto\">\r\n            <button onclick=\"closeDetailModal()\" class=\"absolute top-4 right-4 text-slate-400 hover:text-white\">\r\n                <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path><\/svg>\r\n            <\/button>\r\n            <div id=\"detailContent\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Toast Notification -->\r\n    <div id=\"toast\" class=\"fixed bottom-6 right-6 bg-slate-900 border border-slate-700 text-slate-100 px-5 py-3 rounded-2xl shadow-2xl transform translate-y-32 opacity-0 transition-all duration-300 z-50 text-sm flex items-center space-x-3\">\r\n        <span id=\"toastIcon\"><\/span>\r\n        <span id=\"toastMessage\"><\/span>\r\n    <\/div>\r\n\r\n    <script>\r\n        const APPS_SCRIPT_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbzgxORDZCc-oMABQlr48v3S1lfwZ-wYQ6l__xORqm6typrcVuFWg0V8WqCctxaGEh3l\/exec\";\r\n        let submissions = [];\r\n\r\n        function checkAge() {\r\n            const naissanceVal = document.getElementById('naissance').value;\r\n            const container = document.getElementById('parentalContainer');\r\n            \r\n            if (!naissanceVal) {\r\n                container.classList.add('hidden');\r\n                setParentFieldsRequired(false);\r\n                return;\r\n            }\r\n\r\n            const birthDate = new Date(naissanceVal);\r\n            const today = new Date();\r\n            \r\n            let age = today.getFullYear() - birthDate.getFullYear();\r\n            const m = today.getMonth() - birthDate.getMonth();\r\n            if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\r\n                age--;\r\n            }\r\n\r\n            if (age < 18) {\r\n                container.classList.remove('hidden');\r\n                setParentFieldsRequired(true);\r\n            } else {\r\n                container.classList.add('hidden');\r\n                setParentFieldsRequired(false);\r\n            }\r\n        }\r\n\r\n        function setParentFieldsRequired(isRequired) {\r\n            document.getElementById('parentName').required = isRequired;\r\n            document.getElementById('parentPhone').required = isRequired;\r\n            document.getElementById('parentEmail').required = isRequired;\r\n            document.getElementById('parentAuth').required = isRequired;\r\n        }\r\n\r\n        function toggleGroupFields() {\r\n            const typePresta = document.getElementById('typePresta').value;\r\n            const container = document.getElementById('groupFieldsContainer');\r\n            if (typePresta.startsWith('Groupe')) {\r\n                container.classList.remove('hidden');\r\n                document.getElementById('groupDetails').required = true;\r\n            } else {\r\n                container.classList.add('hidden');\r\n                document.getElementById('groupDetails').required = false;\r\n            }\r\n        }\r\n\r\n        function toggleAdminModal() {\r\n            document.getElementById('adminModal').classList.toggle('hidden');\r\n        }\r\n\r\n        function toggleReglementModal() {\r\n            const modal = document.getElementById('reglementModal');\r\n            modal.classList.toggle('hidden');\r\n            if (!modal.classList.contains('hidden')) {\r\n                setTimeout(checkReglementScroll, 100);\r\n            }\r\n        }\r\n\r\n        function checkReglementScroll() {\r\n            const box = document.getElementById('reglementScrollBox');\r\n            const btn = document.getElementById('acceptReglementBtn');\r\n            const status = document.getElementById('reglementStatus');\r\n\r\n            const isAtBottom = box.scrollHeight - box.scrollTop <= box.clientHeight + 5;\r\n\r\n            if (isAtBottom || box.scrollHeight <= box.clientHeight) {\r\n                btn.disabled = false;\r\n                btn.classList.remove('bg-slate-800', 'text-slate-500', 'cursor-not-allowed');\r\n                btn.classList.add('bg-purple-600', 'hover:bg-purple-500', 'text-white', 'shadow-lg', 'shadow-purple-600\/20');\r\n                status.textContent = '\u2705 R\u00e8glement lu enti\u00e8rement. Vous pouvez valider.';\r\n                status.className = 'text-xs text-emerald-400 mt-1';\r\n            }\r\n        }\r\n\r\n        function validateReglement() {\r\n            const checkbox = document.getElementById('acceptReglement');\r\n            checkbox.disabled = false;\r\n            checkbox.checked = true;\r\n            checkbox.classList.remove('cursor-not-allowed', 'opacity-60');\r\n            toggleReglementModal();\r\n            showToast('R\u00e8glement valid\u00e9 avec succ\u00e8s !', 'success');\r\n        }\r\n\r\n        function handleAdminLogin(e) {\r\n            e.preventDefault();\r\n            const pass = document.getElementById('adminPassword').value;\r\n            if (pass === 'srg2026') {\r\n                toggleAdminModal();\r\n                document.getElementById('adminPassword').value = '';\r\n                openAdminDashboard();\r\n            } else {\r\n                showToast('Mot de passe incorrect', 'error');\r\n            }\r\n        }\r\n\r\n        function openAdminDashboard() {\r\n            document.getElementById('adminDashboard').classList.remove('hidden');\r\n            fetchDriveSubmissions();\r\n        }\r\n\r\n        function closeAdminDashboard() {\r\n            document.getElementById('adminDashboard').classList.add('hidden');\r\n        }\r\n\r\n        function closeSuccessModal() {\r\n            document.getElementById('successModal').classList.add('hidden');\r\n        }\r\n\r\n        async function fetchDriveSubmissions() {\r\n            const container = document.getElementById('submissionsContainer');\r\n            const loading = document.getElementById('loadingScan');\r\n            const emptyState = document.getElementById('emptyState');\r\n            \r\n            container.innerHTML = '';\r\n            loading.classList.remove('hidden');\r\n            emptyState.classList.add('hidden');\r\n\r\n            try {\r\n                const response = await fetch(APPS_SCRIPT_URL);\r\n                const data = await response.json();\r\n\r\n                if (data.result === 'success') {\r\n                    submissions = data.participants;\r\n                    renderSubmissions();\r\n                    showToast('Scan Google Drive r\u00e9ussi !', 'success');\r\n                } else {\r\n                    showToast('Erreur lors du scan Google Drive', 'error');\r\n                }\r\n            } catch (err) {\r\n                console.error(err);\r\n                showToast('Impossible de contacter le script Google', 'error');\r\n            } finally {\r\n                loading.classList.add('hidden');\r\n            }\r\n        }\r\n\r\n        function fileToBase64(file) {\r\n            return new Promise((resolve, reject) => {\r\n                const reader = new FileReader();\r\n                reader.readAsDataURL(file);\r\n                reader.onload = () => resolve(reader.result.split(',')[1]);\r\n                reader.onerror = error => reject(error);\r\n            });\r\n        }\r\n\r\n        async function handleFormSubmit(e) {\r\n            e.preventDefault();\r\n            const submitBtn = document.getElementById('submitBtn');\r\n            const submitText = document.getElementById('submitText');\r\n            const submitSpinner = document.getElementById('submitSpinner');\r\n\r\n            submitBtn.disabled = true;\r\n            submitText.textContent = \"Documents en cours d'envoi\";\r\n            submitSpinner.classList.remove('hidden');\r\n\r\n            try {\r\n                const isMinor = !document.getElementById('parentalContainer').classList.contains('hidden');\r\n\r\n                const payload = {\r\n                    nom: document.getElementById('nom').value.trim(),\r\n                    prenom: document.getElementById('prenom').value.trim(),\r\n                    sceneName: document.getElementById('sceneName').value.trim(),\r\n                    email: document.getElementById('email').value.trim(),\r\n                    telephone: document.getElementById('telephone').value.trim(),\r\n                    naissance: document.getElementById('naissance').value,\r\n                    \r\n                    parentName: isMinor ? document.getElementById('parentName').value.trim() : '',\r\n                    parentPhone: isMinor ? document.getElementById('parentPhone').value.trim() : '',\r\n                    parentEmail: isMinor ? document.getElementById('parentEmail').value.trim() : '',\r\n                    parentAuth: isMinor ? document.getElementById('parentAuth').checked : false,\r\n\r\n                    character: document.getElementById('character').value.trim(),\r\n                    origine: document.getElementById('origine').value.trim(),\r\n                    typePresta: document.getElementById('typePresta').value,\r\n                    groupDetails: document.getElementById('groupDetails').value.trim(),\r\n                    fabricationPourcent: document.getElementById('fabricationPourcent').value,\r\n                    materiaux: document.getElementById('materiaux').value.trim(),\r\n                    reseaux: document.getElementById('reseaux').value.trim(),\r\n                    summary: document.getElementById('summary').value.trim(),\r\n                    besoinsTechniques: document.getElementById('besoinsTechniques').value.trim(),\r\n                    droitImage: document.getElementById('droitImage').checked,\r\n                    acceptReglement: document.getElementById('acceptReglement').checked,\r\n                    \r\n                    imageName: document.getElementById('imageFile').files[0].name,\r\n                    imageType: document.getElementById('imageFile').files[0].type,\r\n                    imageBase64: await fileToBase64(document.getElementById('imageFile').files[0]),\r\n                    \r\n                    mediaName: document.getElementById('mediaFile').files[0].name,\r\n                    mediaType: document.getElementById('mediaFile').files[0].type,\r\n                    mediaBase64: await fileToBase64(document.getElementById('mediaFile').files[0])\r\n                };\r\n\r\n                await fetch(APPS_SCRIPT_URL, {\r\n                    method: 'POST',\r\n                    mode: 'no-cors',\r\n                    headers: { 'Content-Type': 'application\/json' },\r\n                    body: JSON.stringify(payload)\r\n                });\r\n\r\n                document.getElementById('cosplayForm').reset();\r\n                toggleGroupFields();\r\n                checkAge();\r\n                \r\n                const regCheck = document.getElementById('acceptReglement');\r\n                regCheck.disabled = true;\r\n                regCheck.checked = false;\r\n                regCheck.classList.add('cursor-not-allowed', 'opacity-60');\r\n\r\n                document.getElementById('successModal').classList.remove('hidden');\r\n\r\n            } catch (err) {\r\n                console.error(err);\r\n                showToast('Erreur lors de l\u2019envoi.', 'error');\r\n            } finally {\r\n                submitBtn.disabled = false;\r\n                submitText.textContent = 'Envoyer mon inscription';\r\n                submitSpinner.classList.add('hidden');\r\n            }\r\n        }\r\n\r\n        function exportToXls() {\r\n            if (!submissions || submissions.length === 0) {\r\n                showToast(\"Aucune inscription \u00e0 exporter.\", \"error\");\r\n                return;\r\n            }\r\n\r\n            let csvContent = \"\\uFEFF\";\r\n            const headers = [\r\n                \"Statut\", \"Nom\", \"Pr\u00e9nom\", \"Nom de sc\u00e8ne\", \"Email\", \"T\u00e9l\u00e9phone\", \r\n                \"Date de naissance\", \"Parent Nom\", \"Parent T\u00e9l\", \"Parent Email\", \"Parent Accord\",\r\n                \"Personnage\", \"\u0152uvre\", \"Type de prestation\", \r\n                \"D\u00e9tails Groupe\", \"% Fait main\", \"Mat\u00e9riaux\", \"R\u00e9seaux sociaux\", \"Besoins techniques\"\r\n            ];\r\n            csvContent += headers.join(\"\\t\") + \"\\n\";\r\n\r\n            submissions.forEach(sub => {\r\n                const row = [\r\n                    sub.status || \"En attente\",\r\n                    sub.nom || \"\",\r\n                    sub.prenom || \"\",\r\n                    sub.sceneName || \"\",\r\n                    sub.email || \"\",\r\n                    sub.telephone || \"\",\r\n                    sub.naissance || \"\",\r\n                    sub.parentName || \"\",\r\n                    sub.parentPhone || \"\",\r\n                    sub.parentEmail || \"\",\r\n                    sub.parentAuth ? \"Oui\" : \"Non\",\r\n                    sub.character || \"\",\r\n                    sub.origine || \"\",\r\n                    sub.typePresta || \"Solo\",\r\n                    sub.groupDetails || \"\",\r\n                    sub.fabricationPourcent || \"\",\r\n                    sub.materiaux || \"\",\r\n                    sub.reseaux || \"\",\r\n                    sub.besoinsTechniques || \"\"\r\n                ];\r\n                const cleanedRow = row.map(val => String(val).replace(\/[\\n\\r\\t]+\/g, \" \"));\r\n                csvContent += cleanedRow.join(\"\\t\") + \"\\n\";\r\n            });\r\n\r\n            const blob = new Blob([csvContent], { type: 'application\/vnd.ms-excel;charset=utf-8;' });\r\n            const url = URL.createObjectURL(blob);\r\n            const a = document.createElement('a');\r\n            a.href = url;\r\n            a.download = `inscriptions_cosplay_2026_${new Date().toISOString().slice(0, 10)}.xls`;\r\n            document.body.appendChild(a);\r\n            a.click();\r\n            document.body.removeChild(a);\r\n            URL.revokeObjectURL(url);\r\n\r\n            showToast(\"T\u00e9l\u00e9chargement du fichier .xls r\u00e9ussi !\", \"success\");\r\n        }\r\n\r\n        function renderSubmissions() {\r\n            const container = document.getElementById('submissionsContainer');\r\n            const emptyState = document.getElementById('emptyState');\r\n            container.innerHTML = '';\r\n\r\n            if (submissions.length === 0) {\r\n                emptyState.classList.remove('hidden');\r\n                return;\r\n            } else {\r\n                emptyState.classList.add('hidden');\r\n            }\r\n\r\n            submissions.forEach((sub) => {\r\n                let badgeColor = 'bg-amber-500\/10 text-amber-400 border-amber-500\/20';\r\n                if (sub.status === 'Valid\u00e9') badgeColor = 'bg-emerald-500\/10 text-emerald-400 border-emerald-500\/20';\r\n                if (sub.status === 'Refus\u00e9') badgeColor = 'bg-rose-500\/10 text-rose-400 border-rose-500\/20';\r\n\r\n                const card = document.createElement('div');\r\n                card.className = 'bg-slate-900 border border-slate-800 rounded-2xl p-5 flex flex-col justify-between shadow-lg relative';\r\n                card.innerHTML = `\r\n                    <div>\r\n                        <div class=\"flex justify-between items-start mb-3\">\r\n                            <span class=\"text-xs text-slate-500\">${sub.typePresta || 'Solo'} \u2022 ${sub.character || ''}<\/span>\r\n                            <span class=\"px-2.5 py-1 rounded-full text-xs font-medium border ${badgeColor}\">${sub.status || 'En attente'}<\/span>\r\n                        <\/div>\r\n                        <h3 class=\"text-base font-bold text-white mb-1\">${sub.prenom} ${sub.nom} ${sub.sceneName ? `(${sub.sceneName})` : ''}<\/h3>\r\n                        <p class=\"text-xs text-slate-400 line-clamp-2 mb-4\">${sub.summary || ''}<\/p>\r\n                    <\/div>\r\n                    <div class=\"pt-3 border-t border-slate-800 flex justify-between items-center\">\r\n                        <button onclick=\"viewDetail('${sub.id}')\" class=\"text-xs text-purple-400 hover:text-purple-300 font-semibold flex items-center space-x-1\">\r\n                            <span>Voir la fiche compl\u00e8te<\/span>\r\n                            <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"><\/path><\/svg>\r\n                        <\/button>\r\n                    <\/div>\r\n                `;\r\n                container.appendChild(card);\r\n            });\r\n        }\r\n\r\n        function viewDetail(id) {\r\n            const sub = submissions.find(s => s.id === id);\r\n            if (!sub) return;\r\n\r\n            const modal = document.getElementById('detailModal');\r\n            const content = document.getElementById('detailContent');\r\n\r\n            const imageDisplay = sub.imageURL \r\n                ? `<div class=\"mt-2 space-y-2\">\r\n                     <img decoding=\"async\" src=\"${sub.imageURL}\" alt=\"Visuel Costume\" class=\"rounded-xl max-h-48 object-cover border border-slate-800 w-full\">\r\n                     <div class=\"flex items-center space-x-3 pt-1\">\r\n                         <a href=\"${sub.imageURL}\" target=\"_blank\" class=\"inline-flex items-center space-x-1 text-xs text-purple-400 hover:text-purple-300 underline font-medium\">\r\n                             <span>Ouvrir sur le Drive<\/span>\r\n                         <\/a>\r\n                         <span class=\"text-slate-700\">\u2022<\/span>\r\n                         <a href=\"${sub.imageDownloadURL}\" target=\"_blank\" download class=\"inline-flex items-center space-x-1 text-xs text-emerald-400 hover:text-emerald-300 font-medium bg-emerald-500\/10 px-2.5 py-1 rounded-lg border border-emerald-500\/20\">\r\n                             <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\"><\/path><\/svg>\r\n                             <span>T\u00e9l\u00e9charger l'image<\/span>\r\n                         <\/a>\r\n                     <\/div>\r\n                <\/div>` \r\n                : `<p class=\"text-slate-500 text-xs\">Aucune image disponible<\/p>`;\r\n\r\n            let mediaDisplay = `<p class=\"text-slate-500 text-xs\">Aucun m\u00e9dia disponible<\/p>`;\r\n            if (sub.mediaURL) {\r\n                mediaDisplay = `\r\n                    <div class=\"mt-2 space-y-2\">\r\n                        <audio controls class=\"w-full\"><source src=\"${sub.mediaURL}\" type=\"${sub.mediaType || 'audio\/mp3'}\">Votre navigateur ne supporte pas l'audio.<\/audio>\r\n                        <div class=\"flex items-center space-x-3 pt-1\">\r\n                            <a href=\"${sub.mediaURL}\" target=\"_blank\" class=\"inline-flex items-center space-x-1 text-xs text-purple-400 hover:text-purple-300 underline font-medium\">\r\n                                <span>Ouvrir sur le Drive<\/span>\r\n                            <\/a>\r\n                            <span class=\"text-slate-700\">\u2022<\/span>\r\n                            <a href=\"${sub.mediaDownloadURL}\" target=\"_blank\" download class=\"inline-flex items-center space-x-1 text-xs text-emerald-400 hover:text-emerald-300 font-medium bg-emerald-500\/10 px-2.5 py-1 rounded-lg border border-emerald-500\/20\">\r\n                                <svg class=\"w-3.5 h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\"><\/path><\/svg>\r\n                                <span>T\u00e9l\u00e9charger le fichier<\/span>\r\n                            <\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n            }\r\n\r\n            const parentInfoBlock = sub.parentName ? `\r\n                <div class=\"bg-purple-950\/30 p-3 rounded-xl border border-purple-500\/30 space-y-1 sm:col-span-2\">\r\n                    <div class=\"flex items-center space-x-2 mb-1\">\r\n                        <svg class=\"w-4 h-4 text-purple-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"><\/path><\/svg>\r\n                        <span class=\"text-purple-400 font-bold uppercase text-xs\">Autorisation Parentale (Participant Mineur)<\/span>\r\n                    <\/div>\r\n                    <p class=\"text-slate-300 text-xs\"><strong class=\"text-slate-200\">Nom & Pr\u00e9nom du Parent :<\/strong> ${sub.parentName}<\/p>\r\n                    <p class=\"text-slate-300 text-xs\"><strong class=\"text-slate-200\">T\u00e9l\u00e9phone du Parent :<\/strong> ${sub.parentPhone || 'N\/C'}<\/p>\r\n                    <p class=\"text-slate-300 text-xs\"><strong class=\"text-slate-200\">Email du Parent :<\/strong> ${sub.parentEmail || 'N\/C'}<\/p>\r\n                    <p class=\"text-slate-400 text-[11px] pt-1\">Statut accord : ${sub.parentAuth ? '\u2705 Autoris\u00e9' : 'En attente'}<\/p>\r\n                <\/div>\r\n            ` : '';\r\n\r\n            content.innerHTML = `\r\n                <div class=\"space-y-6\">\r\n                    <div>\r\n                        <span class=\"text-xs text-purple-400 font-semibold uppercase tracking-wider\">Fiche Inscription Google Drive<\/span>\r\n                        <h3 class=\"text-xl font-bold text-white mt-1\">${sub.prenom} ${sub.nom} ${sub.sceneName ? `- \"${sub.sceneName}\"` : ''}<\/h3>\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4 text-xs\">\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800 space-y-1\">\r\n                            <span class=\"text-slate-500 block font-semibold uppercase\">Contact & Infos<\/span>\r\n                            <p class=\"text-slate-300\">Email : ${sub.email || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">T\u00e9l : ${sub.telephone || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">Naissance : ${sub.naissance || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">R\u00e9seaux : ${sub.reseaux || 'Aucun'}<\/p>\r\n                        <\/div>\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800 space-y-1\">\r\n                            <span class=\"text-slate-500 block font-semibold uppercase\">Personnage & Prestation<\/span>\r\n                            <p class=\"text-slate-300\">Personnage : ${sub.character || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">\u0152uvre : ${sub.origine || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">Type : ${sub.typePresta || 'Solo'} ${sub.groupDetails ? `(${sub.groupDetails})` : ''}<\/p>\r\n                        <\/div>\r\n                        ${parentInfoBlock}\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4 text-xs\">\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800 space-y-1\">\r\n                            <span class=\"text-slate-500 block font-semibold uppercase\">Jury & Fabrication<\/span>\r\n                            <p class=\"text-slate-300\">Fait main : ${sub.fabricationPourcent || 'N\/C'}<\/p>\r\n                            <p class=\"text-slate-300\">Mat\u00e9riaux : ${sub.materiaux || 'N\/C'}<\/p>\r\n                        <\/div>\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800 space-y-1\">\r\n                            <span class=\"text-slate-500 block font-semibold uppercase\">Besoins Techniques<\/span>\r\n                            <p class=\"text-slate-300\">${sub.besoinsTechniques || 'Aucun besoin particulier'}<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div>\r\n                        <span class=\"text-xs font-semibold text-slate-300 uppercase tracking-wider block mb-2\">R\u00e9sum\u00e9 \/ Mise en sc\u00e8ne (Animateur)<\/span>\r\n                        <div class=\"bg-slate-950 p-4 rounded-xl border border-slate-800 text-xs text-slate-300 leading-relaxed whitespace-pre-wrap\">${sub.summary || ''}<\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800\">\r\n                            <span class=\"text-xs font-semibold text-slate-300 uppercase tracking-wider block mb-1\">Visuel (Image)<\/span>\r\n                            ${imageDisplay}\r\n                        <\/div>\r\n                        <div class=\"bg-slate-950 p-3 rounded-xl border border-slate-800\">\r\n                            <span class=\"text-xs font-semibold text-slate-300 uppercase tracking-wider block mb-1\">Fichier Audio \/ Vid\u00e9o<\/span>\r\n                            ${mediaDisplay}\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"pt-4 border-t border-slate-800 flex flex-wrap items-center justify-between gap-3\">\r\n                        <div class=\"flex items-center space-x-2\">\r\n                            <button onclick=\"updateStatus('${sub.id}', 'Valid\u00e9')\" class=\"px-3 py-1.5 rounded-lg bg-emerald-500\/10 hover:bg-emerald-500\/20 text-emerald-400 text-xs font-medium border border-emerald-500\/20 transition\">Valider<\/button>\r\n                            <button onclick=\"updateStatus('${sub.id}', 'En attente')\" class=\"px-3 py-1.5 rounded-lg bg-amber-500\/10 hover:bg-amber-500\/20 text-amber-400 text-xs font-medium border border-amber-500\/20 transition\">En attente<\/button>\r\n                            <button onclick=\"updateStatus('${sub.id}', 'Refus\u00e9')\" class=\"px-3 py-1.5 rounded-lg bg-rose-500\/10 hover:bg-rose-500\/20 text-rose-400 text-xs font-medium border border-rose-500\/20 transition\">Refuser<\/button>\r\n                        <\/div>\r\n                        <div class=\"flex items-center space-x-2\">\r\n                            <button onclick=\"deleteSubmission('${sub.id}')\" class=\"px-3 py-1.5 rounded-lg bg-red-500\/10 hover:bg-red-500\/20 text-red-400 text-xs font-medium border border-red-500\/20 transition\">Supprimer<\/button>\r\n                            <button onclick=\"closeDetailModal()\" class=\"px-3 py-1.5 rounded-lg bg-slate-800 text-slate-300 text-xs font-medium transition\">Fermer<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n            modal.classList.remove('hidden');\r\n        }\r\n\r\n        function closeDetailModal() {\r\n            document.getElementById('detailModal').classList.add('hidden');\r\n        }\r\n\r\n        function updateStatus(id, newStatus) {\r\n            const sub = submissions.find(s => s.id === id);\r\n            if (sub) {\r\n                sub.status = newStatus;\r\n                renderSubmissions();\r\n                viewDetail(id);\r\n                showToast(`Statut mis \u00e0 jour : ${newStatus}`, 'success');\r\n            }\r\n        }\r\n\r\n        function deleteSubmission(id) {\r\n            if (confirm(\"\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette inscription ?\")) {\r\n                submissions = submissions.filter(s => s.id !== id);\r\n                renderSubmissions();\r\n                closeDetailModal();\r\n                showToast(\"Inscription supprim\u00e9e\", \"success\");\r\n            }\r\n        }\r\n\r\n        function showToast(message, type = 'success') {\r\n            const toast = document.getElementById('toast');\r\n            const toastMessage = document.getElementById('toastMessage');\r\n            const toastIcon = document.getElementById('toastIcon');\r\n\r\n            toastMessage.textContent = message;\r\n            toastIcon.innerHTML = type === 'success' \r\n                ? '<svg class=\"w-5 h-5 text-emerald-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"><\/path><\/svg>'\r\n                : '<svg class=\"w-5 h-5 text-rose-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path><\/svg>';\r\n\r\n            toast.classList.remove('translate-y-32', 'opacity-0');\r\n            setTimeout(() => {\r\n                toast.classList.add('translate-y-32', 'opacity-0');\r\n            }, 3500);\r\n        }\r\n    <\/script>\r\n<\/body>\r\n<\/html><\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p> [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width-page.php","meta":{"footnotes":""},"class_list":["post-1755","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/pages\/1755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1755"}],"version-history":[{"count":3,"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/pages\/1755\/revisions"}],"predecessor-version":[{"id":1768,"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/pages\/1755\/revisions\/1768"}],"wp:attachment":[{"href":"http:\/\/savoieretrogames.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}