<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    
    <!--
      Google Tag Manager.

      `dataLayer` is created synchronously so that any code that pushes
      events early (e.g. our analytics.ts helpers) does not lose them.
      The remote `gtm.js` fetch is deferred to the `load` event so it
      does not compete with the app bundle for connection budget
      during the critical-path render. Net result: events still
      reach GA, but FCP / LCP improve by ~0.5-1.5s on cold loads.
    -->
    <script>
      window.dataLayer = window.dataLayer || [];
      window.addEventListener('load', function () {
        window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
        var f = document.getElementsByTagName('script')[0];
        var j = document.createElement('script');
        j.async = true;
        j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-T2JWDSGQ';
        f.parentNode.insertBefore(j, f);
      });
    </script>
    <!-- End Google Tag Manager -->
    
    <link rel="icon" type="image/png" href="https://alpha-production-bucket.sfo3.cdn.digitaloceanspaces.com/static/logo_dark.png" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
    <!-- Default SEO Meta Tags -->
    <title>Alpha3D - The full AI 3D pipeline, in one place</title>
    <meta name="description" content="The full AI 3D pipeline in one place. Generate, retopologise, unwrap, texture, and convert. From €5/mo, cancel anytime." />
    <meta name="keywords" content="AI 3D model generator, text to 3D, image to 3D, multi-view to 3D, Workflows, Smart Topology, UV unwrapping, AI texturing, Convert 3D, PBR materials, game-ready 3D, GLB, FBX, OBJ, STL, Alpha3D" />
    <meta name="robots" content="index, follow" />

    <!-- App identity & browser chrome -->
    <meta name="application-name" content="Alpha3D" />
    <meta name="apple-mobile-web-app-title" content="Alpha3D" />
    <meta name="theme-color" content="#0a0a0a" media="(prefers-color-scheme: dark)" />
    <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)" />
    <meta name="format-detection" content="telephone=no" />

    <!-- Open Graph / Facebook -->
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://www.alpha3d.io/" />
    <meta property="og:title" content="Alpha3D - The full AI 3D pipeline, in one place" />
    <meta property="og:description" content="The full AI 3D pipeline in one place. Generate, retopologise, unwrap, texture, and convert. From €5/mo, cancel anytime." />
    <meta property="og:image" content="https://www.alpha3d.io/og-image.png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="Alpha3D - The full AI 3D pipeline, in one place" />
    <meta property="og:site_name" content="Alpha3D" />
    <meta property="og:locale" content="en_US" />

    <!-- Twitter -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:url" content="https://www.alpha3d.io/" />
    <meta name="twitter:title" content="Alpha3D - The full AI 3D pipeline, in one place" />
    <meta name="twitter:description" content="The full AI 3D pipeline in one place. Generate, retopologise, unwrap, texture, and convert. From €5/mo, cancel anytime." />
    <meta name="twitter:image" content="https://www.alpha3d.io/og-image.png" />
    
    <!-- Canonical -->
    <link rel="canonical" href="https://www.alpha3d.io/" />
    
    <!--
      Hotjar Tracking Code.

      Session-recording + heatmaps. Like GTM, the `hj()` queue is set
      up synchronously so calls placed during boot are captured, but
      the remote script load is delayed until after `load` so it does
      not block FCP / LCP. Hotjar's first second of session data is
      not analytically meaningful (no interaction yet), so the
      trade-off is free.
    -->
    <script>
      window.hj = window.hj || function () {
        (window.hj.q = window.hj.q || []).push(arguments);
      };
      window._hjSettings = { hjid: 6702331, hjsv: 6 };
      window.addEventListener('load', function () {
        var head = document.getElementsByTagName('head')[0];
        var r = document.createElement('script');
        r.async = 1;
        r.src = 'https://static.hotjar.com/c/hotjar-' + window._hjSettings.hjid + '.js?sv=' + window._hjSettings.hjsv;
        head.appendChild(r);
      });
    </script>
    <!-- End Hotjar Tracking Code -->

    <!-- Fonts.
         Inter (Google Fonts) — body voice, paragraph copy + UI.
         JetBrains Mono (Google Fonts) — spec eyebrows, chapter indices,
         monospace I/O chips.

         Instrument Serif (the hero display serif) is loaded separately
         via @fontsource (see src/main.tsx). Self-hosting gives us:
           - same-origin fetch (skips DNS + TLS to fonts.gstatic.com)
           - Vite-hashed cacheable URL (immutable per build)
           - bundler-managed asset graph (font tracked alongside CSS)
         Combined with `font-display: swap` (provided by @fontsource by
         default), the hero H1 paints in the system serif fallback
         immediately, then swaps to Instrument Serif once loaded. LCP
         fires on the fallback paint and is unaffected by font load. -->
    <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=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@500;600;700&display=swap" rel="stylesheet" />
    <script type="module" crossorigin src="/assets/index-DRoXJltu.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/vendor-react-BF-dBpBW.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-three-D1Y6zDd7.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-CpRc_Sxt.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-GhuPOrNy.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-prismic-8KAUv-Ms.js">
    <link rel="stylesheet" crossorigin href="/assets/vendor-DdcfTtV0.css">
    <link rel="stylesheet" crossorigin href="/assets/index-B7PQcQLd.css">
  </head>
  <body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T2JWDSGQ"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    
    <div id="root"></div>
  </body>
</html>
