PageSourceSearch

https://gentlebirth.com/

html gentlebirth.com collected 2026-10-01 16:03:32 UTC 6,618 bytes, 142 lines download raw bytes

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.