<!doctype html>
<html lang="de">
  <head>
    <meta charset="UTF-8" />

    <!-- Google Consent Mode v2 (Erweiterte Variante, EU/EWR-konform)
         Reihenfolge laut Google-Spezifikation:
           1. dataLayer + gtag-Stub initialisieren
           2. gtag('consent','default', …) VOR allen Tags
           3. ads_data_redaction + url_passthrough setzen
           4. GTM-Loader (laedt gtm.js)
           5. Update via src/lib/gtmConsent.js, sobald Banner-Auswahl steht
         Alle Storage-/Tracking-Kategorien starten auf "denied" (sicherer
         Default fuer EWR). GTM laedt sofort, damit Tags konfiguriert
         werden koennen, feuern aber keine Cookies/Pings ohne Einwilligung
         — bei "denied" werden cookieless Pings fuer Conversion-Modeling
         gesendet (das ist der Mehrwert des erweiterten Modus).
         wait_for_update: 500 ms Toleranz fuer asynchrone Banner-Init. -->
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      window.gtag = gtag;

      gtag('consent', 'default', {
        'ad_storage':              'denied',
        'ad_user_data':            'denied',
        'ad_personalization':      'denied',
        'analytics_storage':       'denied',
        'functionality_storage':   'denied',
        'personalization_storage': 'denied',
        'security_storage':        'granted',
        'wait_for_update':         500
      });

      // Solange ad_storage = denied: Anzeigen-Klick-IDs (gclid/dclid) aus
      // Netzwerk-Anfragen entfernen + Requests ueber cookieless-Domain.
      gtag('set', 'ads_data_redaction', true);
      // GCLID/DCLID seiten-uebergreifend per URL-Parameter mitnehmen,
      // wenn Cookies nicht erlaubt sind — verbessert Conversion-Tracking
      // ohne dass Drittanbieter-Cookies gesetzt werden.
      gtag('set', 'url_passthrough', true);
    </script>

    <!-- Google tag (gtag.js) — direkter GA4-Tag G-YEBVJ6PLFY
         Laeuft parallel zum GTM-Container (GTM-KF8RZNF6). Erbt automatisch
         die oben gesetzten Consent-Defaults (alle Storage = denied bis zur
         Banner-Einwilligung). dataLayer/gtag wurden bereits oben init'd —
         keine Doppel-Definition noetig. Reihenfolge: vor GTM-Loader, damit
         GA4-Config beim ersten Tag-Push verfuegbar ist. -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-YEBVJ6PLFY"></script>
    <script>
      gtag('js', new Date());
      gtag('config', 'G-YEBVJ6PLFY');
    </script>

    <!-- Google Tag Manager -->
    <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-KF8RZNF6');</script>
    <!-- End Google Tag Manager -->

    <link rel="icon" type="image/png" href="/favicon.png?v=3" />
    <link rel="shortcut icon" type="image/png" href="/favicon.png?v=3" />
    <link rel="apple-touch-icon" href="/favicon.png?v=3" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=Playfair+Display:wght@700;800;900&display=swap" rel="stylesheet" />
    <!-- title + meta description werden pro Route via react-helmet-async gesetzt -->
    <title>unternehmen-digitalisieren.at</title>
    <script>
      (function(){
        try {
          var t = localStorage.getItem('ud.theme');
          if (t === 'soft' || t === 'classic') {
            document.documentElement.setAttribute('data-theme', t);
          }
          // Backend-Theme Flash-Prevention:
          // Wenn wir auf einer /flash-Route sind UND ein per-User-Theme im
          // Cache liegt, setzen wir den Dark-Mode-Modus + Background schon
          // vor dem React-Mount direkt aufs <html>, damit es keinen weissen
          // Flash beim Laden gibt. lib/adminTheme.js uebernimmt spaeter.
          if (location.pathname.indexOf('/flash') === 0) {
            var raw = localStorage.getItem('ud.adminTheme');
            if (raw) {
              var at = JSON.parse(raw);
              if (at && (at.mode === 'dark' || at.mode === 'light')) {
                var bg = at.mode === 'dark' ? (at.darkBg || '#0F172A') : (at.lightBg || '#FAFBFC');
                document.documentElement.style.background = bg;
                document.documentElement.setAttribute('data-admin-mode-preload', at.mode);
              }
            }
          }
        } catch(e) {}
      })();
    </script>
    <script type="module" crossorigin src="/assets/index-BvF6srG4.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CyduQXN5.css">
  </head>
  <body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KF8RZNF6"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->

    <div id="root"></div>
  </body>
</html>
