<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- VWO and GA moved to end of body for INP optimization - see analytics.ts for GA -->
    <meta charset="UTF-8" />
    <link rel="icon" type="image/x-icon" href="/heavengirlfriend_favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
    <title>Heaven Girlfriend - Expert AI Reviews</title>
    <meta name="description" content="Expert reviews of the best AI girlfriend platforms. Compare features, pricing, and find your perfect AI girlfriend match." />
    
    <!-- Google Search Console verification -->
    <meta name="google-site-verification" content="UhpEXXvoN-QwbND7Ho3HV8nf4ohPnQnnCj3ZgaF6Ua4" />
    
    <!-- Preload critical logo images (LCP optimization) -->
    <link rel="preload" href="/heavengirlfriend_logo_200w.webp" as="image" media="(max-width: 767px)" fetchpriority="high">
    <link rel="preload" href="/heavengirlfriend_logo_400w.webp" as="image" media="(min-width: 768px)" fetchpriority="high">
    
    <!-- Preload critical fonts -->
    <link rel="preload" href="https://fonts.gstatic.com/s/inter/v13/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2" as="font" type="font/woff2" crossorigin>
    <link rel="preload" href="https://fonts.gstatic.com/s/inter/v13/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2" as="font" type="font/woff2" crossorigin>
    
    <!-- Preload mobile hero (LCP) image so the request is discoverable in initial HTML -->
    <!-- Matches SmartImage('feature-image') mobile exact variant 338w -->
    <link
      rel="preload"
      as="image"
      href="/optimized/heavengf_hero-338w.webp"
      imagesrcset="/optimized/heavengf_hero-338w.webp 338w, /optimized/heavengf_hero-600w.webp 600w, /optimized/heavengf_hero-676w.webp 676w, /optimized/heavengf_hero-800w.webp 800w, /optimized/heavengf_hero-1200w.webp 1200w, /optimized/heavengf_hero-1600w.webp 1600w"
      imagesizes="100vw"
      fetchpriority="high"
      media="(max-width: 767px)"
      type="image/webp"
    />
    
    <!-- Critical CSS inline -->
    <style>
      body {
        margin: 0;
        background-color: #0f0f15;
        color: #f8f9ff;
        font-family: 'Inter', 'Roboto', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
        line-height: 1.5;
        -webkit-font-smoothing: antialiased;
      }
      /* inter-400 - latin */
      @font-face {
        font-family: 'Inter';
        font-style: normal;
        font-weight: 400;
        font-display: swap;
        src: url(https://fonts.gstatic.com/s/inter/v13/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2) format('woff2');
      }
      /* inter-500 - latin */
      @font-face {
        font-family: 'Inter';
        font-style: normal;
        font-weight: 500;
        font-display: swap;
        src: url(https://fonts.gstatic.com/s/inter/v13/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2) format('woff2');
      }
      /* Critical above-the-fold styles */
      #root {
        min-height: 100vh;
      }
      .bg-charcoal-950 {
        background-color: #0f0f15;
      }
      .text-offwhite {
        color: #f8f9ff;
      }
      /* Optimize LCP image loading - prevent layout shifts */
      img[alt*="Heaven Girlfriend Logo"] {
        content-visibility: auto;
        contain-intrinsic-size: 400px 225px;
      }
      /* Mobile logo optimization */
      @media (max-width: 768px) {
        img[alt*="Heaven Girlfriend Logo"] {
          contain-intrinsic-size: 256px 144px;
        }
      }
    </style>
    
    <!-- CSS will be injected by Vite during build -->
    
    <!-- Favicon -->
    <link rel="apple-touch-icon" sizes="180x180" href="/heavengirlfriend_apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/heavengirlfriend_favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/heavengirlfriend_favicon-16x16.png">
    <link rel="manifest" href="/manifest.json">
    
  </head>
  <body>
    <div id="root"></div>
    <div id="sticky-toc-root"></div>
    <div id="sticky-right-sidebar-root"></div>
    <script type="module" src="/src/main.tsx"></script>
    <!-- VWO and GA loaded after page interactive for INP optimization -->
    <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" crossorigin />
    <script type="text/javascript" id="vwoCode">
(function loadVWO(){
  if(document.readyState==='complete'){
    setTimeout(initVWO,0);
  }else{
    window.addEventListener('load',function(){setTimeout(initVWO,0);});
  }
  function initVWO(){
    window._vwo_code||(function(){var account_id=1118805,version=2.1,settings_tolerance=2000,hide_element='',hide_element_style='';var f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={nonce:v&&v.nonce,library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}v&&t.setAttribute('nonce',v.nonce);d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var n=this.getSettings(),i=d.createElement('script'),r=this;t=t||{};if(n){i.textContent=n;d.getElementsByTagName('head')[0].appendChild(i);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200||o.status===304){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var n=this.hide_element(),i=n?n+n+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=i;else t.appendChild(d.createTextNode(i));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var i=d.createElement('div');i.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;display: block !important;';i.setAttribute('id','_vis_opt_path_hides');i.classList.add('_vis_hide_layer');t.parentNode.insertBefore(i,t.nextSibling)}var o=window._vis_opt_url||d.URL,s='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(o)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:s})}else{this.load(s+'&x=true')}}};w._vwo_code=code;code.init();})();
  }
})();
    </script>
  </body>
</html>
