<!doctype html>
<html lang="fr">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!-- Preconnect to Supabase API to eliminate DNS + TLS handshake latency on first data fetch -->
    <link rel="preconnect" href="https://zyiwcaokffeskcjfwklu.supabase.co" crossorigin />
    <link rel="dns-prefetch" href="https://zyiwcaokffeskcjfwklu.supabase.co" />
    <meta name="ga-site-verification" content="JL3SDS6bPGTZY-if5YmyoPW4" />
    <meta name="msvalidate.01" content="0539746c318d419899c5a55b781be148" />
    <title>Fighter 360 | Le Portail N°1 des Sports de Combat en France</title>
    <meta name="description" content="Fighter 360 est le portail complet des sports de combat en France : MMA, Boxe, Jiu-Jitsu Brésilien, Muay Thai, Judo, Karaté. Trouvez un club, équipez-vous, suivez les événements UFC et rejoignez la communauté." />
    <meta name="keywords" content="sports de combat France, MMA France, boxe club, jiu-jitsu brésilien, muay thai, judo, karaté, équipement sport combat, nutrition sport combat, événements MMA UFC" />
    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
    <link rel="alternate" hreflang="fr-FR" href="https://fighter-360.com/" />
    <link rel="alternate" hreflang="x-default" href="https://fighter-360.com/" />
    <link rel="alternate" type="application/rss+xml" title="Fighter 360 - Actualités Sports de Combat" href="https://fighter-360.com/functions/v1/blog-rss" />
    <link rel="alternate" type="application/rss+xml" title="Fighter 360 - Google News Feed" href="https://fighter-360.com/functions/v1/google-news-rss" />
    <link rel="alternate" type="application/rss+xml" title="Fighter 360 - Événements Sports de Combat" href="https://fighter-360.com/functions/v1/events-rss" />
    <meta name="google-news-publication" content="Fighter 360" />
    <meta name="publication-media-verification" content="fighter-360.com" />
    <link rel="manifest" href="/manifest.json" />
    <meta name="theme-color" content="#dc2626" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
    <meta name="apple-mobile-web-app-title" content="Fighter360" />
    <link rel="apple-touch-icon" href="/favicon.svg" />
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "@id": "https://fighter-360.com/#website",
      "name": "Fighter 360",
      "url": "https://fighter-360.com",
      "description": "Le portail complet des sports de combat en France : MMA, Boxe, Jiu-Jitsu Brésilien, Muay Thai, Judo, Karaté. Clubs, équipements, nutrition et événements.",
      "inLanguage": "fr-FR",
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://fighter-360.com/recherche?q={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    }
    </script>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "@id": "https://fighter-360.com/#organization",
      "name": "Fighter 360",
      "url": "https://fighter-360.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://fighter-360.com/favicon.svg",
        "width": 512,
        "height": 512
      },
      "description": "Le portail complet des sports de combat en France : MMA, Boxe, JJB, Muay Thai, Judo, Karaté.",
      "inLanguage": "fr-FR",
      "foundingDate": "2024",
      "areaServed": {
        "@type": "Country",
        "name": "France"
      },
      "sameAs": [
        "https://www.facebook.com/fighter360",
        "https://www.instagram.com/fighter360",
        "https://www.youtube.com/fighter360",
        "https://twitter.com/Fighter360FR"
      ]
    }
    </script>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "NewsMediaOrganization",
      "@id": "https://fighter-360.com/#newsmediaorganization",
      "name": "Fighter 360",
      "alternateName": "Fighter360",
      "url": "https://fighter-360.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://fighter-360.com/favicon.svg",
        "width": 512,
        "height": 512
      },
      "description": "Le portail N°1 des sports de combat en France : MMA, Boxe, Jiu-Jitsu Brésilien, Muay Thai, Judo, Karaté. Actualités, analyses, clubs et événements.",
      "inLanguage": "fr-FR",
      "foundingDate": "2024",
      "publishingPrinciples": "https://fighter-360.com/qui-sommes-nous",
      "masthead": "https://fighter-360.com/qui-sommes-nous",
      "diversityPolicy": "https://fighter-360.com/qui-sommes-nous",
      "ethicsPolicy": "https://fighter-360.com/qui-sommes-nous",
      "missionCoveragePrioritiesPolicy": "https://fighter-360.com/qui-sommes-nous",
      "coverageStartsAt": "2024-01-01",
      "areaServed": {
        "@type": "Country",
        "name": "France",
        "identifier": "FR"
      },
      "sameAs": [
        "https://www.facebook.com/profile.php?id=61582712576149",
        "https://www.instagram.com/fighter360",
        "https://www.youtube.com/fighter360",
        "https://twitter.com/Fighter360FR"
      ],
      "contactPoint": {
        "@type": "ContactPoint",
        "contactType": "editorial",
        "email": "contact@fighter-360.com",
        "availableLanguage": ["French"]
      }
    }
    </script>
    <script>
      /**
       * RGPD — Gate de consentement analytics
       * GA4 et AdSense ne sont chargés que si l'utilisateur a accepté
       * les cookies analytiques/marketing (stockés par CookieConsent).
       * La clé 'f360_cookie_consent' est mise à jour par le composant React.
       * On écoute aussi l'événement custom 'f360:consent-updated' pour
       * charger dynamiquement les scripts après acceptation en cours de session.
       */
      (function () {
        var GA_ID = 'G-CXKPC6KPR8';
        var ADSENSE_ID = 'ca-pub-6182766404301715';
        var CONSENT_KEY = 'f360_cookie_consent';
        var gaLoaded = false;
        var adsLoaded = false;

        function getConsent() {
          try { return JSON.parse(localStorage.getItem(CONSENT_KEY) || 'null'); } catch { return null; }
        }

        function loadGA() {
          if (gaLoaded) return;
          gaLoaded = true;
          var s = document.createElement('script');
          s.async = true;
          s.src = 'https://www.googletagmanager.com/gtag/js?id=' + GA_ID;
          document.head.appendChild(s);
          window.dataLayer = window.dataLayer || [];
          function gtag() { window.dataLayer.push(arguments); }
          window.gtag = gtag;
          gtag('js', new Date());
          gtag('config', GA_ID, { anonymize_ip: true });
        }

        function loadAdSense() {
          if (adsLoaded) return;
          adsLoaded = true;
          var s = document.createElement('script');
          s.async = true;
          s.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=' + ADSENSE_ID;
          s.setAttribute('crossorigin', 'anonymous');
          document.head.appendChild(s);
        }

        function applyConsent() {
          var c = getConsent();
          if (!c) return;
          if (c.analytics) loadGA();
          if (c.marketing) loadAdSense();
        }

        // Chargement immédiat si consentement déjà stocké
        applyConsent();

        // Écoute la mise à jour du consentement en temps réel (émis par CookieConsent.tsx)
        window.addEventListener('f360:consent-updated', applyConsent);
      })();
    </script>
    <script type="module" crossorigin src="/assets/index-BFO2NWC-.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/vendor-react-CiDV1el3.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-supabase-CHETecrs.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-icons-D2rbz6UN.js">
    <link rel="stylesheet" crossorigin href="/assets/index-BTBM9Nc0.css">
  <script async src="https://bolt.new/badge.js?s=47e2460e-19de-471d-b906-c66ae43141cf"></script></head>
  <body>
    <div id="root"></div>
    <script>
      if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
          navigator.serviceWorker.register('/sw.js')
            .then((registration) => {
              console.log('SW registered:', registration.scope);
            })
            .catch((error) => {
              console.log('SW registration failed:', error);
            });
        });
      }
    </script>
  </body>
</html>
