<!doctype html>
<html lang="de">
  <head>
    <meta charset="UTF-8" />
    <!-- Split the title: short for tab, full for SEO -->
    <title>IT-Support & Systemadministration Ratingen & Düsseldorf | KI & Automation - Birger Hohmeier</title>
    <meta name="description" content="IT-Support, Systemadministration, KI & Automatisierung in Ratingen, Düsseldorf & NRW. Lokale IT-Expertise für Unternehmen: Server, Automation, Sicherheit, Beratung." />
    <meta name="keywords" content="IT-Support, Systemadministration, Automation, KI, Künstliche Intelligenz, Düsseldorf, Ratingen, NRW, Admin, Automation Manager, Server Administration, Vulnerability Management, AI, LLM, ChatGPT, Machine Learning, IT-Beratung, IT-Dienstleister" />
    <meta name="robots" content="index, follow" />
    <meta name="googlebot" content="index, follow" />
    <meta name="revisit-after" content="7 days" />
    <meta name="author" content="Birger Hohmeier">
    <meta name="geo.region" content="DE-NW" />
    <meta name="geo.placename" content="Ratingen, Düsseldorf, NRW, Deutschland" />
    <link rel="alternate" hreflang="de" href="https://birgertech.de" />    <meta name="google-site-verification" content="Ihr-Code" /> <!-- Optional -->
    
    <!-- Mobile Meta Tags -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="apple-touch-icon" href="/icons/icon-192x192.png">
    
    <!-- Preload wichtiger Resourcen -->
    <!-- <link rel="preload" href="/src/assets/backgrounds/tech-background-light-small.webp" as="image" type="image/webp" fetchpriority="high" /> -->
    <!-- <link rel="preload" href="/src/assets/backgrounds/tech-background-dark-small.webp" as="image" type="image/webp" fetchpriority="high" media="(prefers-color-scheme: dark)" /> -->
    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
    


    <!-- Inline kritisches CSS für First Contentful Paint -->
    <style>
      /* Inline-Styling für kritische erste Anzeige */
      :root { --bg-opacity: 0.7; }
      body { margin: 0; overflow-x: hidden; }
      .first-paint { opacity: 1; transition: opacity 0.3s; }
      @media (prefers-color-scheme: dark) { 
        body { background: #121212; color: #f5f5f5; }
      }
      @media (prefers-color-scheme: light) {
        body { background: #f5f5f5; color: #121212; }
      }
    </style>
    
    <!-- Erweiterte Open Graph Tags -->
    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="Birger Hohmeier - IT Automation Expert" />
    <meta property="og:title" content="IT-Support & Systemadministration Ratingen & Düsseldorf | KI & Automation - Birger Hohmeier" />
    <meta property="og:description" content="IT-Support, Systemadministration, KI & Automatisierung in Ratingen, Düsseldorf & NRW. Lokale IT-Expertise für Unternehmen: Server, Automation, Sicherheit, Beratung." />
    <meta property="og:url" content="https://birgertech.de" />
    <meta property="og:locale" content="de_DE" />
    <meta property="og:image" content="https://birgertech.de/assets/profilbild.jpg" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="Birger Hohmeier - IT Automation Expert" />
    
    <!-- Twitter Card Tags -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="IT-Support & Systemadministration Ratingen & Düsseldorf | KI & Automation - Birger Hohmeier" />
    <meta name="twitter:description" content="IT-Support, Systemadministration, KI & Automatisierung in Ratingen, Düsseldorf & NRW. Lokale IT-Expertise für Unternehmen: Server, Automation, Sicherheit, Beratung." />
    
    <!-- Erweiterte Strukturierte Daten -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": ["Person", "ProfessionalService"],
          "@id": "https://birgertech.de/#person",
          "name": "Birger Hohmeier",
          "jobTitle": "IT-Support & Systemadministrator für Ratingen & Düsseldorf",
          "description": "IT-Support, Systemadministration, KI & Automatisierung in Ratingen, Düsseldorf & NRW. Lokale IT-Expertise für Unternehmen: Server, Automation, Sicherheit, Beratung.",
          "url": "https://birgertech.de",
          "image": "https://birgertech.de/assets/profilbild.jpg",
          "sameAs": ["https://www.linkedin.com/in/birger-hohmeier/"],
          "knowsAbout": [
            "Systemadministration",
            "IT-Support",
            "Server Administration",
            "Automation",
            "KI",
            "Künstliche Intelligenz",
            "Düsseldorf",
            "Ratingen",
            "NRW",
            "Cloud-Infrastruktur Management",
            "PowerShell Scripting",
            "IT-Prozessautomatisierung",
            "Microsoft 365 Administration",
            "Vulnerability Management",
            "LLM Integration",
            "Produktivitätssteigerung",
            "Workflow-Optimierung"
          ],
          "offers": {
            "@type": "Offer",
            "name": "IT Services",
            "description": "IT-Support, Systemadministration, Automatisierung, KI, Beratung in Ratingen, Düsseldorf & NRW"
          },
          "servesLocation": [
            {
              "@type": "Place",
              "name": "Ratingen",
              "address": {
                "@type": "PostalAddress",
                "addressLocality": "Ratingen",
                "addressRegion": "NRW",
                "addressCountry": "DE"
              }
            },
            {
              "@type": "Place",
              "name": "Düsseldorf",
              "address": {
                "@type": "PostalAddress",
                "addressLocality": "Düsseldorf",
                "addressRegion": "NRW",
                "addressCountry": "DE"
              }
            }
          ]
        },
        {
          "@type": "Organization",
          "@id": "https://birgertech.de/",
          "name": "BirgerTech",
          "url": "https://birgertech.de",
          "logo": {
            "@type": "ImageObject",
            "url": "https://birgertech.de/assets/profilbild.jpg"
          }
        },
        {
          "@type": "WebSite",
          "@id": "https://birgertech.de/#website",
          "url": "https://birgertech.de",
          "name": "BirgerTech - IT Automation Solutions",
          "description": "Professionelle IT-Automatisierung und Infrastrukturlösungen für Ratingen, Düsseldorf & NRW.",
          "publisher": {
            "@id": "https://birgertech.de/"
          }
        }
      ]
    }
    </script>
    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <!-- Optional: Füge Fallback-Icons für ältere Browser hinzu -->
    <link rel="icon" type="image/png" href="/favicon.png" />
    <meta name="theme-color" content="#ffffff" />
    <link rel="manifest" href="/manifest.json" />
    <link rel="icon" type="image/png" sizes="192x192" href="/icons/icon-192x192.png">
    <link rel="icon" type="image/png" sizes="512x512" href="/icons/icon-512x512.png">
    <link rel="manifest" href="/manifest.json" crossorigin="use-credentials">

    <!-- Canonical URL -->
    <link rel="canonical" href="https://birgertech.de" />
    
    <!-- Load critical resources -->
    <!-- Critical CSS inline -->
    <style>
      /* Add critical mobile styles here */
      body { margin: 0; }
      #root { min-height: 100vh; }
      /* Reserviere Platz für das Profilbild (LCP) */
      .lcp-image {
        display: block;
        width: 100%;
        max-width: 400px;
        height: 300px;
        -o-object-fit: cover;
           object-fit: cover;
        margin: 0 auto;
      }
    </style>
    <!-- Critical CSS inline für Above-the-Fold (Header, Navigation, Hero, LCP-Image) -->
    <style>
      body { margin: 0; font-family: 'Inter', sans-serif; }
      #root { min-height: 100vh; }
      header, nav, .hero {
        min-height: 56px;
        background: #fff;
        color: #222;
      }
      .lcp-image {
        display: block;
        width: 100%;
        max-width: 400px;
        height: 300px;
        -o-object-fit: cover;
           object-fit: cover;
        margin: 0 auto;
        border-radius: 1rem;
        box-shadow: 0 2px 16px rgba(0,0,0,0.07);
      }
      @media (max-width: 600px) {
        .lcp-image { max-width: 100vw; height: 180px; }
      }
    </style>
    <!-- Lade das Haupt-CSS so früh wie möglich -->
    <link 
      rel="stylesheet" 
      href="/assets/index.css"
      media="print" 
      onload="this.media='all'"
    >

    
    <!-- Preload critical JS and CSS for best LCP and FCP -->    <!-- Preload critical assets -->    <link rel="preload" as="font" href="/fonts/Inter-roman.var.woff2" type="font/woff2" crossorigin>
    <!-- Dynamically generated asset preloads based on current build -->
    <link rel="preload" as="style" href="/assets/index.css">
    
    <script defer src="https://unpkg.com/dompurify@3/dist/purify.min.js"></script>
    
    <!-- Remove the unused font preload -->
    <!-- <link rel="preload" as="font" href="/fonts/your-critical-font.woff2" type="font/woff2" crossorigin> -->    <!-- Optimized font loading for faster rendering and reduced CLS -->
    <style>
      /* Critical fonts inline for improved LCP and FCP */
      @font-face {
        font-family: 'Inter';
        font-weight: 100 900;
        font-display: swap;
        src: local('Inter'), url('/fonts/Inter-roman.var.woff2') format('woff2');
      }
      /* Fallback font metrics matching to avoid layout shifts */
      html { font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, sans-serif; }
      /* Preload critical styles */
      body { display: block; margin: 0; }
      .content-placeholder { background: #f0f0f0; }
    </style>
    
    <!-- Remove external font stylesheet to reduce render-blocking resources -->

    
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">

    <!-- Remove CSP meta tag -->
    <!-- <meta http-equiv="Content-Security-Policy" content="..."> -->

    <!-- Remove all security meta tags here, such as X-Frame-Options and frame-ancestors -->
    <script type="module" crossorigin src="/assets/index-v8onJBG5.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/react-core-Don31Xc-.js">
    <link rel="modulepreload" crossorigin href="/assets/utils-poH3G_OE.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-D1-cDhcG.js">
    <link rel="modulepreload" crossorigin href="/assets/ui-components-BCmWaZDe.js">
    <link rel="modulepreload" crossorigin href="/assets/i18n--tRgi0Zg.js">
    <link rel="modulepreload" crossorigin href="/assets/animations-CgPEXAF6.js">
    <link rel="modulepreload" crossorigin href="/assets/components-BLZIE1nO.js">
    <link rel="modulepreload" crossorigin href="/assets/routing-8CsVem-H.js">
    <link rel="modulepreload" crossorigin href="/assets/pages-main-DnWDdB8J.js">
    <link rel="modulepreload" crossorigin href="/assets/pages-about-DaQM6_Pr.js">
    <link rel="stylesheet" crossorigin href="/assets/ui-components-DO57kq-W.css">
    <link rel="stylesheet" crossorigin href="/assets/components-D4vJKS0E.css">
    <link rel="stylesheet" crossorigin href="/assets/index-DYlUOP2C.css">
  </head>
  <body>
    <div id="root"></div>

    <!-- Hidden Netlify Form -->
    <form hidden method='post' name='contact'>
      <input type="hidden" name="form-name" value="contact" />
      <input type="text" name="name" />
      <input type="email" name="email" />
      <textarea name="message"></textarea>
    </form>

    <!-- Inline scripts with nonce -->
    <script nonce="%NONCE%">
      if ('serviceWorker' in navigator && location.hostname !== 'localhost') {
        window.addEventListener('load', async () => {
          try {
            // Unregister any existing service workers first
            const registrations = await navigator.serviceWorker.getRegistrations();
            await Promise.all(registrations.map(r => r.unregister()));
            
            // Register new service worker
            const registration = await navigator.serviceWorker.register('/sw.js');
            console.log('ServiceWorker registered:', registration.scope);
          } catch (error) {
            console.error('ServiceWorker registration failed:', error);
          }
        });
      }

    </script>
  </body>
</html>
