1 2<!DOCTYPE html> 3<html lang="en"> 4 <head> 5 <meta charset="UTF-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>GentleBirth - Hypnobirthing App for Calm & Confident Birth</title> 8 <meta name="description" content="GentleBirth is the hypnobirthing app with guided meditations, breathing techniques, and birth prep courses for a calm, confident birth." /> 9 <meta name="keywords" content="hypnobirthing, birth preparation, pregnancy app, meditation, breathing techniques, calm birth, confident birth, prenatal education" /> 10 <meta name="author" content="GentleBirth" /> 11 <meta name="google-site-verification" content="sOJCaQcPOvD6WOdSPxf3SrfvCYhUhszBjSoQZeJQGx0" /> 12 <link rel="canonical" href="https://gentlebirth.com/" /> 13 14 <!-- Favicon --> 15 <link rel="icon" type="image/x-icon" href="/favicon.ico" /> 16 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> 17 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> 18 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 19 <link rel="manifest" href="/manifest.json" /> 20 <meta name="theme-color" content="#2B7AC7" /> 21 <meta name="apple-mobile-web-app-capable" content="yes" /> 22 <meta name="apple-mobile-web-app-status-bar-style" content="default" /> 23 <meta name="mobile-web-app-capable" content="yes" /> 24 25 <!-- Google tag (gtag.js) â DEFERRED. The loader script is only injected after the user grants 26 any nonessential purpose (analytics or marketing). Until then only a stub dataLayer and 27 Consent Mode v2 defaults exist. GPC (navigator.globalPrivacyControl) is honored as a 28 denied signal. See src/components/CookieConsent.tsx for the update path. --> 29
29<script> 30 window.dataLayer = window.dataLayer || []; 31 function gtag(){dataLayer.push(arguments);} 32 33 // Consent defaults â everything nonessential denied until the user chooses. 34 gtag('consent', 'default', { 35 ad_storage: 'denied', 36 ad_user_data: 'denied', 37 ad_personalization: 'denied', 38 analytics_storage: 'denied', 39 functionality_storage: 'granted', 40 security_storage: 'granted', 41 wait_for_update: 500 42 }); 43 44 // Loader â only attaches the third-party GTM script when a granted purpose exists. 45 window.__loadGtag = function() { 46 if (window.__gtagLoaded) return; 47 window.__gtagLoaded = true; 48 var s = document.createElement('script'); 49 s.async = true; 50 s.src = 'https://www.googletagmanager.com/gtag/js?id=G-52QQV6HGX1'; 51 document.head.appendChild(s); 52 gtag('js', new Date()); 53 gtag('config', 'G-52QQV6HGX1', { anonymize_ip: true }); 54 }; 55 56 // Honor Global Privacy Control as a denied signal. 57 var gpc = (typeof navigator !== 'undefined' && navigator.globalPrivacyControl === true); 58 59 // Restore prior consent (if any). Only load GTM when a granted purpose is present AND GPC is not asserted. 60 try { 61 var saved = JSON.parse(localStorage.getItem('gb_cookie_consent_v1') || 'null'); 62 if (saved && saved.choices) { 63 var analytics = !gpc && !!saved.choices.analytics; 64 var marketing = !gpc && !!saved.choices.marketing; 65 gtag('consent', 'update', { 66 analytics_storage: analytics ? 'granted' : 'denied', 67 ad_storage: marketing ? 'granted' : 'denied', 68 ad_user_data: marketing ? 'granted' : 'denied', 69 ad_personalization: marketing ? 'granted' : 'denied' 70 }); 71 if (analytics || marketing) window.__loadGtag(); 72 } else if (gpc) { 73 gtag('consent', 'update', { 74 analytics_storage: 'denied', 75 ad_storage: 'denied', 76 ad_user_data: 'denied', 77 ad_personalization: 'denied' 78 }); 79 } 80 } catch (e) {} 81 </script>
81 82 83 84 85 86 <!-- Open Graph / Facebook (sitewide fallback â per-page SEO component overrides for JS-executing crawlers) --> 87 <meta property="og:type" content="website" /> 88 <meta property="og:url" content="https://gentlebirth.com/" /> 89 <meta property="og:title" content="GentleBirth" /> 90 <meta property="og:description" content="Hypnobirthing, doula certification, and perinatal care from GentleBirth." /> 91 <meta property="og:image" content="https://gentlebirth.com/og-image.png" /> 92 <meta property="og:site_name" content="GentleBirth" /> 93 94 <!-- Twitter (sitewide fallback) --> 95 <meta name="twitter:card" content="summary_large_image" /> 96 <meta name="twitter:title" content="GentleBirth" /> 97 <meta name="twitter:description" content="Hypnobirthing, doula certification, and perinatal care from GentleBirth." /> 98 <meta name="twitter:image" content="https://gentlebirth.com/og-image.png" /> 99 100 <!-- Structured Data --> 101
101<script type="application/ld+json"> 102 { 103 "@context": "https://schema.org", 104 "@type": "MobileApplication", 105 "name": "GentleBirth", 106 "applicationCategory": "HealthApplication", 107 "description": "Complete hypnobirthing app for calm and confident birth experience with guided meditations and breathing techniques", 108 "operatingSystem": "iOS, Android", 109 "offers": { 110 "@type": "Offer", 111 "price": "0", 112 "priceCurrency": "USD" 113 }, 114 "aggregateRating": { 115 "@type": "AggregateRating", 116 "ratingValue": "4.8", 117 "reviewCount": "5000" 118 } 119 } 120 </script>
120 121 122 <!-- Preconnect to critical first-party origins only. Google Fonts is self-hosted (see src/index.css). --> 123 <link rel="preconnect" href="https://bkyqhwhldvwzghjghcgs.supabase.co"> 124 125 <!-- Preload the primary self-hosted Quicksand latin subset for a fast first paint. --> 126 <link rel="preload" as="font" type="font/woff2" href="/fonts/quicksand/quicksand-latin.woff2" crossorigin fetchpriority="high"> 127
127<script type="module" crossorigin src="/assets/index-CwRyDTkN.js"></script>
127 128 <link rel="stylesheet" crossorigin href="/assets/index-CcIuNd-P.css"> 129
129<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
129</head> 130 131 <body> 132 <div id="root"></div> 133 <!-- Instagram Feed Widget script is loaded on demand from <ElfsightLoader />, only after the 134 user grants marketing consent. See src/components/ElfsightLoader.tsx. --> 135 <!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT! --> 136 137 </body> 138</html> 139 <!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT! --> 140 141 </body> 142</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.