1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> 7 <link rel="icon" href="/img/fav.png" /> 8 9 <!-- Performance: DNS prefetch for third-party domains (less priority than preconnect) --> 10 <link rel="dns-prefetch" href="https://www.google.com"> 11 <link rel="dns-prefetch" href="https://connect.facebook.net"> 12 <link rel="dns-prefetch" href="https://scripts.clarity.ms"> 13 <link rel="dns-prefetch" href="https://bat.bing.com"> 14 <link rel="dns-prefetch" href="https://a.quora.com"> 15 <link rel="dns-prefetch" href="https://sibautomation.com"> 16 <link rel="dns-prefetch" href="https://r.wdfl.co"> 17 <link rel="dns-prefetch" href="https://cdn.pushowl.com"> 18 19 <!-- Performance: Preconnect to critical origins (fonts first - they block render) --> 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 23 <!-- Performance: Preload critical font for LCP --> 24 <link rel="preload" as="font" type="font/woff2" href="https://fonts.gstatic.com/s/lato/v24/S6uyw4BMUTPHjx4wXg.woff2" 25 crossorigin> 26 27 <!-- Performance: Preload logo for faster LCP --> 28 <link rel="preload" as="image" href="/img/logo_new.svg" fetchpriority="high"> 29 30 <!-- Performance: Inline critical CSS to prevent render blocking --> 31 <style> 32 /* Critical ATF styles - minimal for fast first paint */ 33 *, 34 *::before, 35 *::after { 36 box-sizing: border-box 37 } 38 39 html, body { 40 margin: 0; 41 padding: 0; 42 height: auto; 43 min-height: 100%; 44 overflow-x: hidden; 45 overflow-y: auto; 46 -webkit-overflow-scrolling: touch; 47 } 48 49 body { 50 font-family: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 51 -webkit-font-smoothing: antialiased; 52 -moz-osx-font-smoothing: grayscale; 53 line-height: 1.5; 54 background-color: #ffffff; 55 } 56 57 #root { 58 min-height: 100vh; 59 min-height: 100dvh; 60 height: auto; 61 overflow: visible; 62 } 63 64 /* Critical styles for login/register pages - prevents layout shift */ 65 .flex { 66 display: flex 67 } 68 69 .items-center { 70 align-items: center 71 } 72 73 .justify-center { 74 justify-content: center 75 } 76 77 .w-full { 78 width: 100% 79 } 80 81 .h-full { 82 height: 100% 83 } 84 85 .min-h-screen { 86 min-height: 100vh; 87 min-height: 100dvh 88 } 89 90 .bg-white { 91 background-color: #fff 92 } 93 94 .rounded-lg { 95 border-radius: 0.5rem 96 } 97 98 .shadow-lg { 99 box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05) 100 } 101 102 .p-4 { 103 padding: 1rem 104 } 105 106 .p-6 { 107 padding: 1.5rem 108 } 109 110 .mb-4 { 111 margin-bottom: 1rem 112 } 113 114 .text-center { 115 text-align: center 116 } 117 118 .font-semibold { 119 font-weight: 600 120 } 121 122 .text-2xl { 123 font-size: 1.5rem; 124 line-height: 2rem 125 } 126 127 .text-gray-600 { 128 color: #4b5563 129 } 130 131 .text-gray-900 { 132 color: #111827 133 } 134 135 .space-y-4>*+* { 136 margin-top: 1rem 137 } 138 139 /* Button critical styles */ 140 .bg-blue-600 { 141 background-color: #2563eb 142 } 143 144 .text-white { 145 color: #fff 146 } 147 148 .py-2 { 149 padding-top: 0.5rem; 150 padding-bottom: 0.5rem 151 } 152 153 .px-4 { 154 padding-left: 1rem; 155 padding-right: 1rem 156 } 157 158 .bg-gradient-to-b { 159 background: linear-gradient(to bottom, #ffffff, #f9fafb) 160 } 161 162 h1 { 163 font-weight: 600; 164 letter-spacing: -0.025em; 165 line-height: 1.2 166 } 167 </style> 168 169 <!-- Optimized fonts: only load Lato with critical weights initially --> 170 <link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet"> 171 <!-- Defer non-critical font weights --> 172 <link 173 href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,900;1,100;1,300;1,400;1,700;1,900&display=swap" 174 rel="stylesheet" media="print" onload="this.media='all'"> 175 <link href="https://fonts.googleapis.com/css2?family=Bungee&display=swap" rel="stylesheet" media="print" 176 onload="this.media='all'"> 177 <link href="https://fonts.googleapis.com/css2?family=Bubblegum+Sans&display=swap" rel="stylesheet" media="print" 178 onload="this.media='all'"> 179 <link href="https://fonts.googleapis.com/css2?family=Patrick+Hand&display=swap" rel="stylesheet" media="print" 180 onload="this.media='all'"> 181 <link href="https://fonts.googleapis.com/css2?family=Comic+Neue:wght@400;700&display=swap" rel="stylesheet" 182 media="print" onload="this.media='all'"> 183 <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700&display=swap" rel="stylesheet" 184 media="print" onload="this.media='all'"> 185 <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&display=swap" rel="stylesheet" 186 media="print" onload="this.media='all'"> 187 <link href="https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&family=Open+Sans:wght@400;600;700&family=Montserrat:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Poppins:wght@400;500;600;700&family=Source+Sans+Pro:wght@400;600;700&family=Crimson+Text:wght@400;700&family=Nunito:wght@400;600;700&family=Bitter:wght@400;500;700&family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet" 188 media="print" onload="this.media='all'"> 189 <link href="https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;900&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,700;1,500&family=Crimson+Pro:ital,wght@0,400;0,600;0,700;1,500&family=DM+Sans:wght@400;500;700;
189800&family=EB+Garamond:ital,wght@0,400;0,500;0,700;1,500&family=Libre+Baskerville:wght@400;700&family=Lora:ital,wght@0,400;0,500;0,700;1,500&family=Manrope:wght@400;500;700;800&family=Oswald:wght@500;600;700&family=Quicksand:wght@500;700&family=Source+Serif+4:ital,wght@0,400;0,600;0,700;1,500&family=Work+Sans:wght@400;500;700;800&display=swap" rel="stylesheet" 190 media="print" onload="this.media='all'"> 191 192 <title>AI eBook Creator by Automateed</title> 193 <meta name="description" 194 content="Create and publish professional eBooks in minutes with AI. AI eBook Creator by Automateed helps you generate, design, and publish eBooks effortlessly." /> 195 196 <!-- Performance: Defer all analytics to after page interactive --> 197
197<script> 198 // Initialize data layers early (for tracking queue) 199 window.dataLayer = window.dataLayer || []; 200 window.uetq = window.uetq || []; 201 202 // Define gtag globally EARLY so TWA tracking can use it immediately 203 // Events will be queued until Google Analytics loads 204 function gtag() { window.dataLayer.push(arguments); } 205 window.gtag = gtag; 206 gtag('js', new Date()); 207 208 // Defer analytics loading until page is interactive. 209 // Each tracker is loaded in its OWN idle slice (instead of all 9 in one 210 // synchronous burst) so their parse/eval doesn't produce a single long 211 // main-thread block right at the user's first interaction (INP killer). 212 // Order = business priority: GA/Ads first, FB pixel, then the rest. 213 function loadAnalytics() { 214 function _t0() { 215// Google Analytics 216 (function () { 217 var s = document.createElement('script'); 218 s.async = true; 219 s.src = 'https://www.googletagmanager.com/gtag/js?id=G-5RG6LLJQ75'; 220 document.head.appendChild(s); 221 222 gtag('config', 'G-5RG6LLJQ75'); 223 gtag('config', 'AW-11424554440'); 224 })(); 225 } 226 function _t1() { 227// Microsoft Clarity 228 (function (c, l, a, r, i, t, y) { 229 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) }; 230 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i; 231 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 232 })(window, document, "clarity", "script", "qyuczi8u98"); 233 } 234 function _t2() { 235// Google Tag Manager
vendor: 419 bytes, lines 235-241
235 236 (function (w, d, s, l, i) { 237 w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); 238 var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; 239 j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 240 f.parentNode.insertBefore(j, f); 241 })(window, document, 'script', 'dataLayer', '
241GTM-WQDW8HB3
vendor: 10 bytes, lines 241-242
241'); 242
242} 243 function _t3() { 244// Bing Ads 245 (function (w, d, t, r, u) { 246 var f, n, i; 247 w[u] = w[u] || [], f = function () { 248 var o = { ti: "97118516", enableAutoSpaTracking: true }; 249 o.q = w[u], w[u] = new UET(o), w[u].push("pageLoad") 250 }, 251 n = d.createElement(t), n.src = r, n.async = 1, n.onload = n.onreadystatechange = function () { 252 var s = this.readyState; 253 s && s !== "loaded" && s !== "complete" || (f(), n.onload = n.onreadystatechange = null) 254 }, 255 i = d.getElementsByTagName(t)[0], i.parentNode.insertBefore(n, i) 256 })(window, document, "script", "//bat.bing.com/bat.js", "uetq"); 257 } 258 function _t4() { 259// Bing Ads 2 260 (function (w, d, t, r, u) { 261 var f, n, i; 262 w[u] = w[u] || [], f = function () { 263 var o = { ti: "343157125", enableAutoSpaTracking: true }; 264 o.q = w[u], w[u] = new UET(o), w[u].push("pageLoad") 265 }, 266 n = d.createElement(t), n.src = r, n.async = 1, n.onload = n.onreadystatechange = function () { 267 var s = this.readyState; 268 s && s !== "loaded" && s !== "complete" || (f(), n.onload = n.onreadystatechange = null) 269 }, 270 i = d.getElementsByTagName(t)[0], i.parentNode.insertBefore(n, i) 271 })(window, document, "script", "//bat.bing.com/bat.js", "uetq"); 272 } 273 function _t5() { 274// Sendinblue 275 (function () { 276 window.sib = { equeue: [], client_key: "1ej5sup8mgbyrxbuwp8uekaf" }; 277 window.sendinblue = {}; 278 for (var j = ["track", "identify", "trackLink", "page"], i = 0; i < j.length; i++) { 279 (function (k) { 280 window.sendinblue[k] = function () { 281 var arg = Array.prototype.slice.call(arguments); 282 (window.sib[k] || function () { 283 var t = {}; t[k] = arg; window.sib.equeue.push(t); 284 })(arg[0], arg[1], arg[2], arg[3]); 285 }; 286 })(j[i]); 287 } 288 var n = document.createElement("script"), i = document.getElementsByTagName("script")[0]; 289 n.type = "text/javascript"; n.id = "sendinblue-js"; n.async = !0; 290 n.src = "https://sibautomation.com/sa.js?key=" + window.sib.client_key; 291 i.parentNode.insertBefore(n, i); 292 window.sendinblue.page(); 293 })(); 294 } 295 function _t6() { 296// Rewardful 297 (function (w, r) { 298 w._rwq = r; 299 w[r] = w[r] || function () { (w[r].q = w[r].q || []).push(arguments); }; 300 })(window, "rewardful"); 301 var s = document.createElement('script'); 302 s.async = true; s.src = 'https://r.wdfl.co/rw.js'; s.setAttribute('data-rewardful', 'b80386'); 303 document.head.appendChild(s); 304 } 305 function _t7() { 306// Quora Pixel 307 !function (q, e, v, n, t, s) { if (q.qp) return; n = q.qp = function () { n.qp ? n.qp.apply(n, arguments) : n.queue.push(arguments); }; n.queue = []; t = document.createElement(e); t.async = !0; t.src = v; s = document.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s); }(window, 'script', 'https://a.quora.com/qevents.js'); 308 qp('init', '547f00b4aff84aec9f8b838a59397ba8'); 309 qp('track', 'ViewContent'); 310 } 311 function _t8() { 312// Facebook Pixel 313 !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments); }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = "2.0"; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s); }(window, document, "script", "https://connect.facebook.net/en_US/fbevents.js"); 314 fbq("init", "732410987598789"); 315 fbq("track", "PageView"); 316 } 317 var _steps = [_t0, _t8, _t2, _t1, _t3, _t4, _t5, _t6, _t7]; 318 var _i = 0; 319 var _idle = ('requestIdleCallback' in window) 320 ? function (cb) { requestIdleCallback(cb, { timeout: 2000 }); } 321 : function (cb) { setTimeout(cb, 250); }; 322 (function _next() { 323 if (_i >= _steps.length) return; 324 var fn = _steps[_i++]; 325 try { fn(); } catch (e) { } 326 _idle(_next); 327 })(); 328 } 329 330 // Load analytics after user interaction OR after delay (performance optimization) 331 // This prevents blocking LCP and reduces TBT significantly 332 var analyticsLoaded = false;
333 function scheduleAnalytics() { 334 if (analyticsLoaded) return; 335 analyticsLoaded = true; 336 // Use requestIdleCallback for better performance, fallback to setTimeout 337 var schedule = window.requestIdleCallback || function (cb) { setTimeout(cb, 1); }; 338 schedule(loadAnalytics, { timeout: 3000 }); 339 } 340 341 // Load on first user interaction (scroll, click, touch, keydown) 342 ['scroll', 'click', 'touchstart', 'keydown'].forEach(function (evt) { 343 document.addEventListener(evt, scheduleAnalytics, { once: true, passive: true }); 344 }); 345 346 // IMPORTANT: Load analytics IMMEDIATELY on conversion-critical pages (signup, verify, success, payment) 347 var conversionPages = ['/verify-email', '/success', '/payment', '/register']; 348 var isConversionPage = conversionPages.some(function (page) { 349 return window.location.pathname.indexOf(page) !== -1; 350 }); 351 352 if (isConversionPage) { 353 // Load analytics immediately on conversion pages - no delay 354 scheduleAnalytics(); 355 } else { 356 // Fallback: load after 4 seconds if no interaction 357 if (document.readyState === 'complete') { 358 setTimeout(scheduleAnalytics, 4000); 359 } else { 360 window.addEventListener('load', function () { 361 setTimeout(scheduleAnalytics, 4000); 362 }); 363 } 364 } 365 </script>
365 366 367
367<script type="module" crossorigin src="/assets/index-2ba3c2ef.js"></script>
367 368 <link rel="modulepreload" crossorigin href="/assets/mui-7de4f23d.js"> 369 <link rel="modulepreload" crossorigin href="/assets/react-vendor-60cd4be3.js"> 370 <link rel="stylesheet" href="/assets/index-79f22cb6.css"> 371<link rel="manifest" href="/manifest.webmanifest">
371<script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script>
371</head> 372<noscript><img height="1" width="1" style="display:none" 373 src="https://q.quora.com/_/ad/547f00b4aff84aec9f8b838a59397ba8/pixel?tag=ViewContent&noscript=1" /></noscript> 374 375<body> 376 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 376-377
376 377 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
377GTM-WQDW8HB3
vendor: 91 bytes, lines 377-379
377" height="0" width="0" 378 style="display:none;visibility:hidden"></iframe></noscript> 379
379<!-- End Google Tag Manager (noscript) --> 380 381 <!-- Down app snippet --> 382 <!-- <div style=" 383 display: flex; 384 align-items: center; 385 justify-content: center; 386 height: 100vh; 387 font-family: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; 388 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 389 margin: 0; 390 padding: 20px; 391 "> 392 <div style=" 393 text-align: center; 394 "> 395 <h1 style=" 396 font-size: 48px; 397 font-weight: 700; 398 color: white; 399 margin: 0 0 15px 0; 400 letter-spacing: -1px; 401 "> 402 We'll Be Right Back 403 </h1> 404 405 <p style=" 406 font-size: 18px; 407 color: rgba(255, 255, 255, 0.9); 408 font-weight: 300; 409 margin: 0; 410 letter-spacing: 0.5px; 411 "> 412 Scheduled Maintenance in Progress 413 </p> 414 </div> 415 </div> --> 416 417 418 419 420 421 <!-- Top notch for Capacitor mobile app --> 422 <div id="top-notch" 423 style="display: none; height: 36px; background-color: #000000; width: 100%; position: fixed; top: 0; left: 0; z-index: 9999;"> 424 </div> 425 <div id="root"> 426 </div> 427 428 429 <!-- Show top notch only in Capacitor mobile app --> 430
430<script> 431 432 if (window.Capacitor !== undefined) { 433 document.getElementById('top-notch').style.display = 'block'; 434 // Add padding to root to account for the notch 435 document.getElementById('root').style.paddingTop = '36px'; 436 } 437 </script>
437 438 439 <!-- Performance: Inline critical polyfill for requestIdleCallback --> 440
440<script> 441 window.requestIdleCallback = window.requestIdleCallback || function (cb) { var start = Date.now(); return setTimeout(function () { cb({ didTimeout: !1, timeRemaining: function () { return Math.max(0, 50 - (Date.now() - start)) } }) }, 1) }; 442 </script>
442 443 444
444<script> 445 window.addEventListener("error", e => { 446 if (e.message?.includes("Loading chunk")) { 447 window.location.reload(); 448 } 449 }); 450 </script>
450 451 452 453 <!-- Performance: Facebook Pixel deferred via loadAnalytics() --> 454 <noscript><img height="1" width="1" style="display: none" 455 src="https://www.facebook.com/tr?id=732410987598789&ev=PageView&noscript=1" /></noscript> 456 457 <!--Start of Tawk.to Script--> 458 <!--
458<script type="text/javascript"> 459 var Tawk_API = Tawk_API || {}, Tawk_LoadStart = new Date(); 460 (function () { 461 var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0]; 462 s1.async = true; 463 s1.src = 'https://embed.tawk.to/65ca7f918d261e1b5f5f391d/1hmfg4k6o'; 464 s1.charset = 'UTF-8'; 465 s1.setAttribute('crossorigin', '*'); 466 s0.parentNode.insertBefore(s1, s0); 467 })(); 468 </script>
468 --> 469 <!--End of Tawk.to Script--> 470</body> 471 472</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.