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 & 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 & Pre‑Diabetes</p> 181 182 <h1>Type 2 Diabetes or Pre‑Diabetes?<br>Sugar Still Fluctuates Even After Medicines & “Being Careful”?</h1> 183 184 <p class="hook">“This isn’t your failure. It’s a reactive system, not a corrective one.”</p> 185 186 <p class="sub">Watch this short video to understand why your sugar swings—and get a clear, doctor‑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">🇮🇳 +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">→</span> 206 </button> 207 </form> 208 209 <p class="disclaimer"> 210 Advisory only — 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™ · Activénse Holistic Solutions Pvt Ltd 213 </p> 214 </div> 215 216 <div class="brand-footer"> 217 <p class="legal">Glycosutra™ · Activénse Holistic Solutions Pvt Ltd · 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.