PageSourceSearch

https://glycosutra.ai/db_reversal/

html glycosutra.ai collected 2026-10-05 15:17:42 UTC 16,621 bytes, 356 lines download raw bytes

1<!DOCTYPE html>
2<!-- LAST UPDATED: 2026-08-18 22:10 IST | delta-144 attribution attached to lead | delta-142 Activense accent fixed in footer. ADD A DATED LINE WHEN YOU CHANGE THIS FILE. -->
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>Reverse Pre-Diabetes Without Medication | Free Video | Glycosutra</title>
8<!-- delta-140: this page is the Google Ads DESTINATION. It previously had no
9     tracking at all, so every paid click would have been unmeasurable; no
10     canonical, no og: tags, no schema. -->
11<link rel="canonical" href="https://glycosutra.ai/db_reversal/">
12<meta property="og:title" content="Reverse Pre-Diabetes Without Medication — Free Strategy Video">
13<meta property="og:description" content="Dt. Shilpa Bhoskar (MSc Nutrition &amp; Dietetics, Gold Medallist) explains why your blood sugar swings — and the dietitian-led path to reversing pre-diabetes.">
14<meta property="og:type" content="website">
15<meta property="og:url" content="https://glycosutra.ai/db_reversal/">
16<meta property="og:image" content="https://glycosutra.ai/assets/og-image.png">
17<meta name="twitter:card" content="summary_large_image">
18<meta name="robots" content="index,follow,max-image-preview:large">
19<script src="../assets/glyco-track.js?v=20260818-144" defer></script>
vendor: 2 bytes, line 19
19
20<script type="application/ld+json">
21{
22  "@context": "https://schema.org",
23  "@type": "WebPage",
24  "@id": "https://glycosutra.ai/db_reversal/#webpage",
25  "url": "https://glycosutra.ai/db_reversal/",
26  "name": "Reverse Pre-Diabetes Without Medication — Free Strategy Video",
27  "inLanguage": "en-IN",
28  "about": {"@type": "MedicalCondition", "name": "Prediabetes"},
29  "audience": {"@type": "Audience", "audienceType": "Adults in India managing pre-diabetes or type 2 diabetes"},
30  "reviewedBy": {"@id": "https://glycosutra.ai/#dt-shilpa"},
31  "author": {
32    "@type": "Person",
33    "@id": "https://glycosutra.ai/#dt-shilpa",
34    "name": "Dt. Shilpa Bhoskar",
35    "honorificPrefix": "Dt.",
36    "jobTitle": "Clinical Dietitian",
37    "hasCredential": [
38      {"@type": "EducationalOccupationalCredential", "credentialCategory": "degree", "name": "MSc Nutrition & Dietetics"},
39      {"@type": "EducationalOccupationalCredential", "credentialCategory": "award", "name": "Gold Medallist — Nutrition & Dietetics"}
40    ]
41  },
42  "publisher": {"@type": "Organization", "name": "Activénse Holistic Solutions Pvt Ltd", "url": "https://glycosutra.ai/"},
43  "disambiguatingDescription": "Nutritional awareness and wellness programme. Advisory only — not a substitute for medical advice."
44}
45</script>
45
46
47<meta name="description" content="Watch Dt. Shilpa Bhoskar's free strategy video — understand why your sugar swings and get a doctor-aligned roadmap.">
48<link rel="icon" type="image/x-icon" href="../favicon.ico">
49<link rel="preconnect" href="https://fonts.googleapis.com">
50<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
51<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
52<style>
53*{margin:0;padding:0;box-sizing:border-box}
54:root{
55  --bg-deep:#0D0718;--bg-main:#1A0E2E;--bg-card:#2A1540;
56  --purple:#4D2874;--purple-soft:#6B3FA0;--purple-glow:rgba(77,40,116,.25);
57  --teal:#00B0A8;--teal-glow:rgba(0,176,168,.15);
58  --yellow:#FFF200;--green:#65BC46;--white:#FFFFFF;
59  --text-primary:rgba(255,255,255,.92);--text-secondary:rgba(255,255,255,.6);
60  --text-muted:rgba(255,255,255,.35);
61  --border:rgba(255,255,255,.08);
62  --input-bg:rgba(255,255,255,.06);--input-border:rgba(255,255,255,.12);
63}
64html{scroll-behavior:smooth}
65body{
66  font-family:'Outfit',system-ui,sans-serif;
67  background:linear-gradient(170deg,var(--bg-main) 0%,var(--bg-deep) 100%);
68  color:var(--text-primary);min-height:100vh;
69  -webkit-font-smoothing:antialiased;overflow-x:hidden;
70}
71body::before{content:'';position:fixed;top:-30%;right:-20%;width:800px;height:800px;background:radial-gradient(circle,rgba(0,176,168,.06) 0%,transparent 70%);pointer-events:none}
72body::after{content:'';position:fixed;bottom:-20%;left:-15%;width:600px;height:600px;background:radial-gradient(circle,rgba(77,40,116,.08) 0%,transparent 70%);pointer-events:none}
73h1,h2,h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500;line-height:1.15}
74a{color:var(--teal);text-decoration:none}
75
76/* ─── Layout ─── */
77.page{
78  min-height:100vh;display:flex;flex-direction:column;
79  align-items:center;justify-content:center;
80  padding:40px 20px;position:relative;z-index:1;
81}
82.card{
83  background:linear-gradient(160deg,#2A1540 0%,#1A0E2E 100%);
84  border:1px solid var(--border);
85  border-radius:28px;max-width:520px;width:100%;
86  padding:44px 36px;
87  box-shadow:0 40px 80px rgba(0,0,0,.5),0 0 120px rgba(77,40,116,.12);
88  position:relative;overflow:hidden;
89  animation:cardIn .7s cubic-bezier(.16,1,.3,1);
90}
91@keyframes cardIn{0%{opacity:0;transform:translateY(24px) scale(.97)}100%{opacity:1;transform:translateY(0) scale(1)}}
92.card::before{content:'';position:absolute;top:-80px;right:-80px;width:260px;height:260px;background:radial-gradient(circle,rgba(0,176,168,.07) 0%,transparent 70%);pointer-events:none}
93.card::after{content:'';position:absolute;bottom:-60px;left:-60px;width:200px;height:200px;background:radial-gradient(circle,rgba(77,40,116,.06) 0%,transparent 70%);pointer-events:none}
94
95/* ─── Photo ─── */
96.photo-wrap{
97  width:110px;height:110px;border-radius:50%;
98  border:3px solid var(--purple-soft);
99  overflow:hidden;margin:0 auto 20px;
100  box-shadow:0 0 50px rgba(77,40,116,.35),0 0 0 6px rgba(77,40,116,.1);
101  position:relative;z-index:1;
102}
103.photo-wrap img{width:100%;height:100%;object-fit:cover;object-position:center top}
104
105/* ─── Typography ─── */
106.tag{
107  text-align:center;font-size:11px;font-weight:700;color:var(--teal);
108  letter-spacing:.12em;text-transform:uppercase;margin-bottom:18px;
109}
110.card h1{text-align:center;font-size:clamp(23px,4.5vw,30px);color:var(--white);margin-bottom:16px;line-height:1.25;position:relative;z-index:1}
111.hook{text-align:center;font-size:15px;font-weight:600;color:var(--yellow);font-style:italic;margin-bottom:12px;position:relative;z-index:1}
112.sub{text-align:center;font-size:13.5px;color:var(--text-secondary);line-height:1.75;margin-bottom:28px;position:relative;z-index:1}
113
114/* ─── Form ─── */
115.form-group{margin-bottom:14px}
116.form-input{
117  width:100%;background:var(--input-bg);
118  border:1.5px solid var(--input-border);border-radius:12px;
119  padding:14px 16px;font-family:'Outfit',sans-serif;font-size:14px;
120  color:var(--white);outline:none;transition:all .3s ease;
121}
122.form-input::placeholder{color:var(--text-muted)}
123.form-input:focus{border-color:var(--purple-soft);box-shadow:0 0 0 3px var(--purple-glow);background:rgba(255,255,255,.08)}
124
125.phone-row{display:flex;gap:8px}
126.phone-prefix{
127  width:68px;flex-shrink:0;background:var(--input-bg);
128  border:1.5px solid var(--input-border);border-radius:12px;
129  padding:14px 0;font-family:'Outfit',sans-serif;font-size:14px;
130  color:var(--text-secondary);text-align:center;
131}
132
133/* ─── CTA ─── */
134.cta{
135  display:block;width:100%;
136  background:linear-gradient(135deg,var(--purple) 0%,var(--teal) 100%);
137  color:var(--white);border:none;border-radius:14px;
138  padding:17px 24px;font-family:'Outfit',sans-serif;
139  font-size:16px;font-weight:700;letter-spacing:.02em;
140  cursor:pointer;transition:all .3s ease;margin-top:22px;
141  position:relative;z-index:1;
142}
143.cta:hover{transform:translateY(-2px);box-shadow:0 14px 44px rgba(0,176,168,.25),0 0 60px rgba(77,40,116,.12)}
144.cta:active{transform:translateY(0)}
145.cta .arrow{display:inline-block;margin-left:8px;transition:transform .3s}
146.cta:hover .arrow{transform:translateX(5px)}
147
148.disclaimer{
149  text-align:center;font-size:10px;color:var(--text-muted);
150  margin-top:18px;line-height:1.6;position:relative;z-index:1;
151}
152
153/* ─── Validation ─── */
154.form-input.shake{animation:shake .4s ease}
155@keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
156.form-input.err{border-color:rgba(255,242,0,.5)}
157
158/* ─── Bottom brand ─── */
159.brand-footer{
160  text-align:center;margin-top:32px;
161  padding-top:20px;border-top:1px solid var(--border);
162}
163.brand-footer .patent{font-size:10px;color:var(--teal);font-weight:600;letter-spacing:.06em}
164.brand-footer .legal{font-size:9px;color:var(--text-muted);margin-top:4px;line-height:1.5}
165
166@media(max-width:540px){
167  .card{padding:32px 22px;border-radius:22px}
168  .photo-wrap{width:90px;height:90px}
169}
170</style>
171</head>
172<body>
173
174<div class="page">
175  <div class="card">
176    <div class="photo-wrap">
177      <img src="Shilpa+profile_pic.jpg" alt="Dt. Shilpa Bhoskar">
178    </div>
179
180    <p class="tag">For Indians with Type 2 Diabetes &amp; Pre&#8209;Diabetes</p>
181
182    <h1>Type 2 Diabetes or Pre&#8209;Diabetes?<br>Sugar Still Fluctuates Even After Medicines &amp; &ldquo;Being Careful&rdquo;?</h1>
183
184    <p class="hook">&ldquo;This isn&rsquo;t your failure. It&rsquo;s a reactive system, not a corrective one.&rdquo;</p>
185
186    <p class="sub">Watch this short video to understand why your sugar swings&mdash;and get a clear, doctor&#8209;aligned roadmap to stabilize numbers, reduce spikes, and regain confidence.</p>
187
188    <form id="leadForm" autocomplete="on">
189      <div class="form-group">
190        <input type="email" class="form-input" id="email" placeholder="Email address" required autocomplete="email">
191      </div>
192      <div class="form-group">
193        <input type="text" class="form-input" id="firstName" placeholder="First name" required autocomplete="given-name">
194      </div>
195      <div class="form-group">
196        <div class="phone-row">
197          <div class="phone-prefix">&#127470;&#127475; +91</div>
198          <input type="tel" class="form-input" id="phone" placeholder="10-digit mobile number" maxlength="10" autocomplete="tel">
199        </div>
200      </div>
201      <div class="form-group">
202        <input type="text" class="form-input" id="city" placeholder="City" autocomplete="address-level2">
203      </div>
204      <button type="submit" class="cta">
205        Watch Free Diabetes Strategy Video <span class="arrow">&rarr;</span>
206      </button>
207    </form>
208
209    <p class="disclaimer">
210      Advisory only &mdash; not a substitute for medical advice.<br>
211      Glycosutra is a wellness programme and is not intended to diagnose, treat, cure, or prevent any disease. Individual results may vary.<br>
212      Glycosutra&trade; &middot; Activ&eacute;nse Holistic Solutions Pvt Ltd
213    </p>
214  </div>
215
216  <div class="brand-footer">
217    <p class="legal">Glycosutra&trade; &middot; Activ&eacute;nse Holistic Solutions Pvt Ltd &middot; Pune, India</p>
218  </div>
219</div>
220
221<script>
222var emailEl = document.getElementById('email');
223var nameEl = document.getElementById('firstName');
224var phoneEl = document.getElementById('phone');
225var cityEl = document.getElementById('city');
226var ctaBtn = document.querySelector('.cta');
227var allInputs = [emailEl, nameEl, phoneEl, cityEl];
228
229// Validation rules
230function isValidEmail(v) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v); }
231function isValidName(v) { return v.trim().length >= 2; }
232function isValidPhone(v) { return /^[6-9][0-9]{9}$/.test(v.trim()); }
233function isValidCity(v) { return v.trim().length >= 2; }
234
235function checkAllValid() {
236  var valid = isValidEmail(emailEl.value) && isValidName(nameEl.value) &&
237              isValidPhone(phoneEl.value) && isValidCity(cityEl.value);
238  ctaBtn.disabled = !valid;
239  ctaBtn.style.opacity = valid ? '1' : '0.45';
240  ctaBtn.style.cursor = valid ? 'pointer' : 'not-allowed';
241  return valid;
242}
243
244// Show per-field feedback on blur
245function markField(el, isValid) {
246  el.style.borderColor = el.value.length === 0 ? 'rgba(255,255,255,.12)' :
247                         isValid ? 'rgba(0,176,168,.6)' : 'rgba(255,242,0,.6)';
248}
249
250emailEl.addEventListener('blur', function() { markField(emailEl, isValidEmail(emailEl.value)); });
251nameEl.addEventListener('blur', function() { markField(nameEl, isValidName(nameEl.value)); });
252phoneEl.addEventListener('blur', function() { markField(phoneEl, isValidPhone(phoneEl.value)); });
253cityEl.addEventListener('blur', function() { markField(cityEl, isValidCity(cityEl.value)); });
254
255// Re-check on every keystroke
256allInputs.forEach(function(el) { el.addEventListener('input', checkAllValid); });
257
258// Start disabled
259ctaBtn.disabled = true;
260ctaBtn.style.opacity = '0.45';
261ctaBtn.style.cursor = 'not-allowed';
262
263// Submit
264document.getElementById('leadForm').addEventListener('submit', function(e) {
265  e.preventDefault();
266
267  // Final validation
268  document.querySelectorAll('.form-input').forEach(function(el){el.classList.remove('err','shake')});
269
270  var valid = true;
271  if (!isValidEmail(emailEl.value)) { emailEl.classList.add('err','shake'); valid = false; }
272  if (!isValidName(nameEl.value)) { nameEl.classList.add('err','shake'); valid = false; }
273  if (!isValidPhone(phoneEl.value)) { phoneEl.classList.add('err','shake'); valid = false; }
274  if (!isValidCity(cityEl.value)) { cityEl.classList.add('err','shake'); valid = false; }
275  if (!valid) return;
276
277  // Disable button to prevent double-submit
278  ctaBtn.disabled = true;
279  ctaBtn.textContent = 'Loading...';
280
281  // Save lead
282  var lead = {
283    email: emailEl.value.trim(),
284    first_name: nameEl.value.trim(),
285    phone: '+91' + phoneEl.value.trim(),
286    city: cityEl.value.trim(),
287    source: 'db_reversal_funnel',
288    captured_at: new Date().toISOString(),
289    // delta-144: where this person actually came from (gclid / utm_* captured on
290    // landing by glyco-track.js). Without it every lead read as
291    // "db_reversal_funnel", which is the page — not the channel.
292    attribution: (window.glycoAttribution ? window.glycoAttribution() : {})
293  };
294
295  // Store for personalization (instant, survives navigation)
296  localStorage.setItem('glycosutra_lead', JSON.stringify(lead));
297
298  // Send to backend and VERIFY it actually saved before treating this as a
299  // conversion. delta-133: the previous sendBeacon/fire-and-forget version
300  // always proceeded to the video regardless of whether the lead was ever
301  // stored server-side — for a paid campaign, silently discarded leads are
302  // the most expensive bug available. This version checks response.ok,
303  // retries once on failure, and only falls through unverified as a last
304  // resort so a transient network hiccup never blocks a visitor who filled
305  // the form in good faith (the localStorage copy above is the safety net
306  // for that narrow case).
307  var leadJson = JSON.stringify(lead);
308  var CAPTURE_URL = 'https://app.glycosutra.ai/api/ingest/v1/leads/capture';
309
310  function postLead() {
311    return fetch(CAPTURE_URL, {
312      method: 'POST',
313      headers: {'Content-Type':'application/json'},
314      body: leadJson,
315      keepalive: true
316    }).then(function(res){
317      if (!res.ok) throw new Error('capture failed: ' + res.status);
318      return true;
319    });
320  }
321
322  function goToVideo(){
323    // delta-140: the conversion fires HERE — after the lead is captured — not on
324    // button click, so Google Ads optimises on real leads rather than clicks.
325    // No PII is sent: only that a lead occurred.
326    if (window.glycoTrack) window.glycoTrack('generate_lead', { source: 'db_reversal_funnel' }, true);
327    window.location.href = 'video.html';
328  }
329
330  function withTimeout(promise, ms) {
331    return Promise.race([
332      promise,
333      new Promise(function(_, reject){ setTimeout(function(){ reject(new Error('timeout')); }, ms); })
334    ]);
335  }
336
337  withTimeout(postLead(), 3000)
338    .then(goToVideo)
339    .catch(function(){
340      // one retry — covers the common transient-network case
341      withTimeout(postLead(), 3000)
342        .then(goToVideo)
343        .catch(function(){
344          // Still failed after retry. Don't strand the visitor who filled
345          // the form honestly — let them through to the video (they were
346          // promised it), but never claim the lead was saved. The
347          // localStorage copy is the only remaining record; nothing else
348          // pretends this succeeded.
349          goToVideo();
350        });
351    });
352});
353</script>
353
354
355</body>
356</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.