
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
    <!-- Google Consent Mode v2 - Default State (Advanced Mode) -->
    <!-- This MUST be loaded FIRST, before any other scripts -->
    <!-- Advanced Mode: GTM loads but sends only anonymized pings without cookies until consent -->
    <!-- This allows basic analytics measurement (page views, events) while respecting GDPR -->
    <script data-cookieconsent="ignore">
      window.dataLayer = window.dataLayer || [];
      function gtag() {
        dataLayer.push(arguments);
      }
      // Default state: all non-essential cookies denied
      // GTM will still load and send anonymized pings (cookieless) for basic measurement
      gtag("consent", "default", {
        ad_personalization: "denied",
        ad_storage: "denied",
        ad_user_data: "denied",
        analytics_storage: "denied", // Denied = anonymized pings only, no cookies
        functionality_storage: "denied",
        personalization_storage: "denied",
        security_storage: "granted",
        wait_for_update: 500,
      });
      gtag("set", "ads_data_redaction", true);
      gtag("set", "url_passthrough", false);
    </script>
    
    <!-- Cookiebot CMP - Must be loaded IMMEDIATELY after consent mode default state -->
    <!-- Cookiebot integrates with Google Consent Mode and updates consent when user accepts/rejects -->
    <!-- We use "manual" blocking mode to allow GTM to load (for cookieless pings) but Cookiebot controls cookies -->
    <script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="50ec6e05-04b7-416f-b463-19161b95d64f" data-blockingmode="manual" type="text/javascript"></script>
    
    <!-- Cookiebot callback to update Google Consent Mode when user accepts/rejects -->
    <script data-cookieconsent="ignore">
      window.addEventListener('CookiebotOnLoad', function () {
        if (!window.Cookiebot || !window.Cookiebot.consent) {
          return;
        }

        // Ensure first-time visitors (including private/incognito sessions)
        // always see the consent panel if no decision is stored yet.
        const hasStoredConsent = typeof window.Cookiebot.consent.method === "string" && window.Cookiebot.consent.method.length > 0;
        if (!hasStoredConsent && typeof window.Cookiebot.renew === "function") {
          window.Cookiebot.renew();
        }
      }, false);

      window.addEventListener('CookiebotOnAccept', function (e) {
        if (window.Cookiebot && window.Cookiebot.consent) {
          // Update Google Consent Mode based on Cookiebot consent
          gtag("consent", "update", {
            analytics_storage: window.Cookiebot.consent.statistics ? "granted" : "denied",
            ad_storage: window.Cookiebot.consent.marketing ? "granted" : "denied",
            ad_user_data: window.Cookiebot.consent.marketing ? "granted" : "denied",
            ad_personalization: window.Cookiebot.consent.marketing ? "granted" : "denied",
            functionality_storage: window.Cookiebot.consent.preferences ? "granted" : "denied",
            personalization_storage: window.Cookiebot.consent.preferences ? "granted" : "denied",
          });
        }
      }, false);
      
      window.addEventListener('CookiebotOnDecline', function (e) {
        // Keep consent as denied (default state)
        gtag("consent", "update", {
          analytics_storage: "denied",
          ad_storage: "denied",
          ad_user_data: "denied",
          ad_personalization: "denied",
          functionality_storage: "denied",
          personalization_storage: "denied",
        });
      }, false);
    </script>
    
    <!-- Google Tag Manager - Container loads here; GA4 tags must use GTM Consent Settings -->
    <!-- so _ga cookies are not set until analytics_storage is granted (Cookiebot → gtag consent update). -->
    <!-- Setup: docs/GDPR_LEGAL_CHECKLIST.md → "GTM: prior consent (GA4)" -->
    <!-- In Advanced Mode: cookieless pings may still occur while analytics_storage is denied -->
    <script>
      (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
      })(window,document,'script','dataLayer','GTM-NG2T7FL7');
    </script>
    <!-- End Google Tag Manager -->
    
    <!-- Google Analytics 4 is managed through Google Tag Manager -->
    <!-- GA4 configuration tag should be set up in GTM with Measurement ID: G-R8D82SG3RR -->
    
    <title>Embroidery-Broderie | Beautiful Machine Embroidery Patterns</title>
    
    <!-- Favicon -->
    <link rel="icon" type="image/png" href="/eb-logo.png" />
    <link rel="apple-touch-icon" href="/eb-logo.png" />
    <meta name="description" content="Discover beautiful machine embroidery patterns, both free and premium designs for your next creative project." />
    <meta name="author" content="Embroidery-Broderie" />

    <meta property="og:title" content="Embroidery-Broderie | Beautiful Machine Embroidery Patterns" />
    <meta property="og:description" content="Discover beautiful machine embroidery patterns, both free and premium designs for your next creative project." />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://www.embroidery-broderie.com" />
    <meta property="og:image" content="https://www.embroidery-broderie.com/eb-logo.png" />
    <meta property="og:image:width" content="1436" />
    <meta property="og:image:height" content="1046" />

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Embroidery-Broderie | Beautiful Machine Embroidery Patterns" />
    <meta name="twitter:description" content="Discover beautiful machine embroidery patterns, both free and premium designs for your next creative project." />
    <meta name="twitter:image" content="https://www.embroidery-broderie.com/eb-logo.png" />
    <script type="module" crossorigin src="/assets/main-DXTkv4NH.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/index-B3OcfAbi.js">
    <link rel="stylesheet" crossorigin href="/assets/index-BkquvJ88.css">
    <link rel="stylesheet" crossorigin href="/assets/main-DZrYvFpI.css">
  </head>

  <body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NG2T7FL7"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    <div id="root"></div>
  </body>
</html>
