<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8">
  <title>NEET Ebook with Syllabus</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="shortcut icon" href="#">

  <link href="https://res-cdn.learnyst.com/loki/pro/assets/minimalist-blocks/content.css?version=c7f6566262f34dbb8a01524643792ca9" rel="stylesheet">
  <link href="https://res-cdn.learnyst.com/loki/pro/box/box-flex.css?version=c7f6566262f34dbb8a01524643792ca9" rel="stylesheet">

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
  <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100;0,9..40,200;0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;0,9..40,900;0,9..40,1000;1,9..40,100;1,9..40,200;1,9..40,300;1,9..40,400;1,9..40,500;1,9..40,600;1,9..40,700;1,9..40,800;1,9..40,900;1,9..40,1000&amp;family=Fira+Code:wght@300;400;500;600;700&amp;display=swap" rel="stylesheet">
  <link href="https://res-cdn.learnyst.com/loki/pro/loki-preview.css?version=c7f6566262f34dbb8a01524643792ca9" rel="stylesheet">

  <!-- <script src="https://cdn.tailwindcss.com"></script> -->
  <script>
    /* Add saved styles */
    if (localStorage.getItem('preview-maincss') != null) {
      document.head.insertAdjacentHTML('beforeend', localStorage.getItem('preview-maincss'));
    }
    if (localStorage.getItem('preview-sectioncss') != null) {
      document.head.insertAdjacentHTML('beforeend', localStorage.getItem('preview-sectioncss'));
    }
  </script>
  
  <script type="module" crossorigin="" src="https://res-cdn.learnyst.com/loki/pro/assets/preview-e97a0035.js"></script>
  <link rel="modulepreload" crossorigin="" href="https://res-cdn.learnyst.com/loki/pro/assets/preload-helper-d2c0372f.js">

      
      
      
      <meta property="og:title" content="">
      <meta property="og:description" content="">
      <meta name="description" content="">
      <meta property="og:type" content="website">
      
      </head>

<body style="touch-action: pan-y" class="lyst-font-family">

  <div id="defaultStyleVariables"></div>

  <div class="is-wrapper"><div class="is-section is-box box-autofit type-raleway-lato is-section-100 min-height-60 last-box is-light-text scroll-target">
    <div class="is-overlay" style="background-color: rgb(51, 89, 255);">
    </div>
    <div class="is-container size-19 leading-16 v2 is-content-1400" style="margin-bottom: 0px; padding-bottom: 0px;">

        <div class="row relative">

            <div class="column flex flex-col justify-center items-center" true"="" style="width: 100%;">
                <h1 class="font-semibold leading-12 size-60 text-left" style="font-family: Poppins, sans-serif;"><img src="https://cdn-learnyst.learnyst.com/websites/156889/images/10698307_19021605.png" alt="" style="font-family: Lato, sans-serif; font-weight: 300; height: auto; width: 100%;"><br></h1>
            </div>
            <div class="column flex flex-col justify-center" true"="" style="width: 58.6504%; flex: 0 0 auto;">
                <h1 class="leading-12 text-left font-bold size-76" style="font-family: Montserrat, sans-serif;">The Ultimate Guide to jee3 Exam</h1>
                <p style="font-family: Montserrat, sans-serif;" class="font-normal">Download our book for the ultimate guide for beginners to kickstart the NEET coaching process and take the first step towards your dream job.</p>
                <div class="spacer height-20"></div>
                <div class="text-left">
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 px-6 leading-14 rounded border-transparent hover:border-transparent tracking-wide size-24 font-semibold pt-4 pb-4" style="background-color: rgb(254, 210, 0); color: rgb(0, 0, 0); font-family: Montserrat, sans-serif;" data-bg="rgb(254,210,0)">Download The Full Guide</a>
                </div>
            </div>

        </div>

        <div class="row">
            <div class="column" true"="">
                <div class="spacer height-100"></div>
            </div>

        </div>

        <link href="//fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900" rel="stylesheet" property="stylesheet">
        <link href="//fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900" rel="stylesheet" property="stylesheet">
    </div>
</div>
<div class="is-section is-box box-autofit type-heebo-ibmplexmono-2 last-box is-section-10">
    <div class="is-overlay" style="background-color: rgb(0, 0, 0);"></div>
    <div class="is-container v2 size-16 leading-13 is-content-1600">

        <div class="row">
            <div class="column" true"="">
                <div class="text-center">
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer border-solid mr-2 mt-2 mb-1 border-current hover:border-current leading-relaxed tracking-wide font-semibold rounded pb-3 pt-3 px-10 border-0 underline size-24" title="" data-bg="" style="color: rgb(255, 255, 255); font-family: Montserrat, sans-serif;">Read Now</a>
                </div>
            </div>

        </div>
    </div>
</div>
<div class="is-section is-box box-autofit min-height-40 type-heebo-ibmplexmono-2 last-box is-section-50">
    <div class="is-overlay"></div>
    <div class="is-container v2 size-18 leading-12 is-content-1400">
        <div class="row relative gap-50">
            <div class="column">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="column" true"="">
                <h2 class="leading-14 font-semibold size-50" style="font-family: Montserrat, sans-serif;"><span class="font-bold">Unlock Success with NEET Ultimate Guide for Beginners<br class="size-50"></span></h2>
                <div class="spacer height-20"></div>
            </div>

        </div>
        <div class="row">
            <div class="column">
                <p class="size-32 font-light leading-16"><span style="font-family: Montserrat, sans-serif;" class="size-21 font-normal">Our NEET Ultimate Guide for Beginners is the most comprehensive resource in the business. This multimedia learning experience features six chapters, over 30,000 words, and a mixture of videos, infographics, guides, podcast episodes, and more—all designed to provide you with a complete and unparalleled NEET exam preparation.</span></p>
                <p class="leading-16 size-21 font-normal" style="font-family: Montserrat, sans-serif;">Whether you're a seasoned NEET aspirant looking for new strategies and a good refresher, or you're just embarking on your NEET preparation journey—you're in the right place. This guide will help you understand NEET's intricate requirements and prepare you to excel in the exam, making it your first step towards a promising career in medicine<br class="size-21"></p>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="column">
                <div class="spacer height-80"></div>
            </div>

        </div>

        <link href="//fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900" rel="stylesheet" property="stylesheet">
    </div>
</div>
<div class="is-section is-box box-autofit min-height-40 type-heebo-ibmplexmono-2 last-box is-section-100">
    <div class="is-overlay" style="background-color: rgb(237, 237, 237);"></div>
    <div class="is-container v2 size-18 leading-12 is-content-1400">
        <div class="row relative">
            <div class="column">
                <p style="font-family: Montserrat, sans-serif;" class="size-50 text-center font-bold">Start a Chapter
                </p>
            </div>

        </div>
        <div class="row">
            <div class="column">
                <div class="spacer height-60"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="flex flex-col column justify-start" style="width: 173px; flex: 0 0 auto;" true"="">
                <p style="font-family: Montserrat, sans-serif; color: rgb(51, 89, 255);" class="text-center font-bold size-180">1</p>
            </div>
            <div class="flex flex-col column justify-center" true"="">
                <p style="font-family: Montserrat, sans-serif;" class="size-35 font-bold">Chapter 1: NEET Exam Overview

                </p>
                <p style="font-family: Montserrat, sans-serif;" class="leading-16 size-21 font-normal">In this chapter, we'll delve into the NEET exam format, including the number of questions, marking scheme, syllabus, and essential tips for approaching each section.
                </p>
                <div>
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 px-6 text-black leading-14 hover:border-transparent tracking-wide size-18 font-semibold border-current rounded-md" style="font-family: Montserrat, sans-serif;" data-bg="">Read Chapter 1</a>
                </div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="flex flex-col column justify-start" style="width: 173px; flex: 0 0 auto;" true"="">
                <p style="font-family: Montserrat, sans-serif; color: rgb(51, 89, 255);" class="text-center font-bold size-180">2</p>
            </div>
            <div class="flex flex-col column justify-center" true"="">
                <p style="font-family: Montserrat, sans-serif;" class="size-35 font-bold">Chapter 2: Understanding the NEET Syllabus

                </p>
                <p style="font-family: Montserrat, sans-serif;" class="leading-16 size-21 font-normal">This chapter will help you navigate the vast NEET syllabus by breaking down key concepts in Physics, Chemistry, and Biology, along with recommended study resources.

                </p>
                <div>
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 px-6 text-black leading-14 hover:border-transparent tracking-wide size-18 font-semibold border-current rounded-md" style="font-family: Montserrat, sans-serif;" data-bg="">Read Chapter 2</a>
                </div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="flex flex-col column justify-start" style="width: 173px; flex: 0 0 auto;" true"="">
                <p style="font-family: Montserrat, sans-serif; color: rgb(51, 89, 255);" class="text-center font-bold size-180">3</p>
            </div>
            <div class="flex flex-col column justify-center" true"="">
                <p style="font-family: Montserrat, sans-serif;" class="size-35 font-bold">Chapter 3: Preparing for NEET: Study Strategies and Techniques

                </p>
                <p style="font-family: Montserrat, sans-serif;" class="leading-16 size-21 font-normal">Here, we'll discuss effective study strategies, time management techniques, and how to create a personalized study plan that works best for you.

                </p>
                <div>
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 px-6 text-black leading-14 hover:border-transparent tracking-wide font-semibold size-18 border-current rounded-md" style="font-family: Montserrat, sans-serif;" data-bg="">Read Chapter 3</a>
                </div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="flex flex-col column justify-start" style="width: 173px; flex: 0 0 auto;" true"="">
                <p style="font-family: Montserrat, sans-serif; color: rgb(51, 89, 255);" class="text-center font-bold size-180">4</p>
            </div>
            <div class="flex flex-col column justify-center" true"="">
                <p style="font-family: Montserrat, sans-serif;" class="size-35 font-bold">Chapter 4: NEET Practice Tests and Mock Exams

                </p>
                <p style="font-family: Montserrat, sans-serif;" class="leading-16 size-21 font-normal">This chapter will guide you on how to make the most out of practice tests and mock exams, including interpreting your scores, identifying areas of improvement, and adjusting your study plan accordingly.

                </p>
                <div>
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 px-6 text-black leading-14 hover:border-transparent tracking-wide font-semibold size-18 rounded-md border-current" style="font-family: Montserrat, sans-serif;" data-bg="">Read Chapter 4</a>
                </div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative gap-50">
            <div class="flex flex-col column justify-start" style="width: 173px; flex: 0 0 auto;" true"="">
                <p style="font-family: Montserrat, sans-serif; color: rgb(51, 89, 255);" class="text-center font-bold size-180">5</p>
            </div>
            <div class="flex flex-col column justify-center" true"="">
                <p style="font-family: Montserrat, sans-serif;" class="size-35 font-bold">Chapter 5: NEET Revision and Last-Minute Tips

                </p>
                <p style="font-family: Montserrat, sans-serif;" class="leading-16 size-21 font-normal">As the exam day approaches, this chapter will provide you with valuable revision strategies and last-minute tips to help you feel confident and prepared on the day of the exam.

                </p>
                <div>
                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 px-6 text-black leading-14 hover:border-transparent tracking-wide border-current rounded-md size-18 font-semibold" style="font-family: Montserrat, sans-serif;" data-bg="">Read Chapter 5</a>
                </div>
            </div>

        </div>
        <div class="row">
            <div class="column" true"="">
                <div class="spacer height-40"></div>
            </div>

        </div>

        <link href="//fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900" rel="stylesheet" property="stylesheet">
    </div>
</div>
<div class="is-section is-box box-autofit last-box type-poppins is-section-85">
    <div class="is-overlay"></div>
    <div class="is-container v2 size-18 leading-12 is-content-1400">
        <div class="row">
            <div class="column" true"="">
                <h2 class="size-54 text-center font-bold" style="font-family: Montserrat, sans-serif;">You Might Be Wondering...
                </h2>
            </div>

        </div>
        <div class="row">
            <div class="column" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">

                <h3 class="font-semibold size-32" style="font-family: Montserrat, sans-serif;">What Is NEET ?</h3>
                <p style="color: rgb(72, 72, 72); font-family: Montserrat, sans-serif;" class="size-18 font-normal leading-16">In this section, we will discuss the significance of the National Eligibility cum Entrance Test (NEET) for aspiring medical professionals in India. We'll cover its purpose, relevance, and its role as a standardized examination for admissions into medical and dental colleges across the country.</p>
            </div>
            <div class="column" true"="">

                <h3 class="font-semibold size-32" style="font-family: Montserrat, sans-serif;">How NEET Compare to Other Exams?</h3>
                <p style="color: rgb(72, 72, 72); font-family: Montserrat, sans-serif;" class="size-18 font-normal leading-16">This section will provide a comparative analysis of NEET with other medical entrance exams such as AIIMS, JIPMER, and state-level PMT exams. We'll examine the similarities and differences, and why NEET stands out as a key determinant for medical college admissions.</p>
            </div>

        </div>
        <div class="row">
            <div class="column" true"="">
                <div class="spacer height-40"></div>
            </div>

        </div>
        <div class="row relative">
            <div class="column" true"="">

                <h3 class="font-semibold size-32" style="font-family: Montserrat, sans-serif;">What Is the Syllabus?</h3>
                <p style="color: rgb(72, 72, 72); font-family: Montserrat, sans-serif;" class="size-18 font-normal leading-16">In this part, we'll delve into the NEET exam pattern, including the number of questions, the marking scheme, and the time allotted. We'll also discuss the comprehensive syllabus, covering Physics, Chemistry, and Biology, and highlight key topics that you should focus on during your preparation.</p>
            </div>
            <div class="column" true"="">

                <h3 class="font-semibold size-32" style="font-family: Montserrat, sans-serif;">How Do I Prepare for the NEET ?</h3>
                <p style="color: rgb(72, 72, 72); font-family: Montserrat, sans-serif;" class="size-18 font-normal leading-16">This section will provide actionable tips and strategies for efficient NEET exam preparation. We'll explore effective study techniques, time management, and resources that you can utilize to maximize your chances of success.</p>
            </div>

        </div>

        <link href="//fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900" rel="stylesheet" property="stylesheet">
    </div>
</div>
<div class="is-section is-box box-autofit type-raleway-lato min-height-60 last-box is-light-text is-section-40">
    <div class="is-overlay" style="background-color: rgb(51, 89, 255);">
    </div>
    <div class="is-container size-19 leading-16 v2 is-content-1400" style="margin-bottom: 0px; padding-bottom: 0px;">

        <div class="row relative">
            <div class="column">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row">

            <div class="column flex flex-col items-center" true"="">
                <h1 class="leading-12 text-center size-50 font-bold" style="font-family: Montserrat, sans-serif; width: 900px;">Ready to Get Started?
                </h1>
            </div>

        </div>
        <div class="row sm-autofit">
            <div class="column xs-hidden sm-hidden" style="width: 100%;" true"="">
                <div class="spacer height-80"></div>
            </div>
            <div class="column flex flex-col items-center" style="width: 95.0117%; flex: 0 0 auto;" true"="">
                <p class="text-center size-21 font-normal" style="font-family: Montserrat, sans-serif;">Congratulations on taking the first step toward achieving your dream of becoming a medical professional! The NEET exam is your gateway to some of the most prestigious medical and dental colleges in India. With diligent preparation and the right strategies, you can ace the NEET exam and secure a promising future in the healthcare industry.</p>
            </div>
            <div class="column xs-hidden sm-hidden" style="width: 100%;" true"="">
                <div class="spacer height-80"></div>
            </div>

        </div>
        <div class="row">
            <div class="column" true"="">
                <div class="spacer height-20"></div>
            </div>

        </div>
        <div class="row relative">
            <div class="column text-center" style="min-height: 54px;" true"="">
                <div class="button-group">

                    <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-solid mr-2 mt-2 mb-1 border-current hover:border-current leading-relaxed tracking-wide pt-4 pb-4 px-10 rounded size-24 font-semibold border-0" data-bg="rgb(254,210,0)" style="background-color: rgb(254, 210, 0); color: rgb(0, 0, 0); font-family: Montserrat, sans-serif;">Download The Full Guide</a>
                </div>
                <div class="spacer height-40"></div>
            </div>

        </div>

    </div>
</div>
<link data-name="contentstyle" data-class="type-raleway-lato" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-raleway-lato.css" rel="stylesheet">
<link data-name="contentstyle" data-class="type-heebo-ibmplexmono-2" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-heebo-ibmplexmono-2.css" rel="stylesheet">
<link data-name="contentstyle" data-class="type-poppins" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-poppins.css" rel="stylesheet"></div>

  <script src="https://res-cdn.learnyst.com/loki/pro/assets/scripts/glide/glide.js?version=c7f6566262f34dbb8a01524643792ca9"></script>
  <script src="https://res-cdn.learnyst.com/loki/pro/assets/scripts/navbar/navbar.min.js?version=c7f6566262f34dbb8a01524643792ca9"></script>

  <script src="https://res-cdn.learnyst.com/loki/pro/box/box-flex.js?version=c7f6566262f34dbb8a01524643792ca9"></script>

  <!-- Optional: if you want to add smooth scrolling -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/smoothscroll/1.4.10/SmoothScroll.min.js"></script>
  <script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
  <script nomodule="" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
  <script>
    SmoothScroll({
      frameRate: 150,
      animationTime: 800,
      stepSize: 120,
      pulseAlgorithm: 1,
      pulseScale: 4,
      pulseNormalize: 1,
      accelerationDelta: 300,
      accelerationMax: 2,
      keyboardSupport: 1,
      arrowScroll: 50,
      fixedBackground: 0
    });
  </script>
  <!-- <script>
    const defaultCssVariables = JSON.parse(localStorage.getItem('cssVars') || '{}');
    const cssVariablesDeclaration = document.querySelector('#default-css-variables');
    if (!cssVariablesDeclaration) {
      const variableDeclarations = [];
      Object.entries(defaultCssVariables).forEach(([key, value]) => {
        variableDeclarations.push(`${key}: ${value};`);
      })
      document.querySelector('#defaultStyleVariables').innerHTML = /* html */ `
                <style id='default-css-variables'>
                    :root {
                    ${variableDeclarations.join('\n')}
                    }
                </style>
            `
    }
  </script> -->
  <lyst-config school-id="169089" subdomain="checking-default-website-domain" wdm-registry="%7B%7D" wdm-response="%7B%7D"></lyst-config>
  <script>
    const searchParams = new URLSearchParams(window.location.search);
    const lystConfigElement = document.querySelector('lyst-config');
    lystConfigElement.setAttribute('school-id', lystConfigElement.getAttribute('school-id') || searchParams.get('schoolId'));
    lystConfigElement.setAttribute('subdomain', lystConfigElement.getAttribute('subdomain') || decodeURIComponent(searchParams
      .get('embedderOrigin') || "")
      ?.replace('.learnyst.com', '')
      .replace('.learnyst.net', '')
      .replace('http://', '')
      .replace('https://', ''))
    if (!searchParams.get('isDesignMode')) {
      lystConfigElement.setAttribute('wdm-lock-registry', "true");
    } else {
      localStorage.removeItem('lyst-widget-data');
    }
    // document.body.appendChild(lystConfigElement);
  </script>
  <link href="https://res-cdn.learnyst.com/loki/pro/assets/scripts/glide/css/glide.core.css?version=c7f6566262f34dbb8a01524643792ca9" rel="stylesheet">
  <link href="https://res-cdn.learnyst.com/loki/pro/assets/scripts/glide/css/glide.theme.css?version=c7f6566262f34dbb8a01524643792ca9" rel="stylesheet">
  <!-- <link href="/assets/scripts/navbar/navbar.css" rel="stylesheet"> -->
  <script>
    const queryParams = new URLSearchParams(window.location.search);
    const widgetScript = document.createElement('script');
    widgetScript.type = "module"
    widgetScript.async = true
    const widgetsSrcEncoded = (queryParams.get('widgetsSrc'))
    let widgetsSrc = `https://res-cdn.learnyst.com/widgets/pro/src/raven/index.js?version=c7f6566262f34dbb8a01524643792ca9`
    // let widgetsSrc = `http://localhost:5173/dist/src/raven/index.js`
    if(widgetsSrcEncoded) {
      widgetsSrc = decodeURIComponent(queryParams.get('widgetsSrc'))
    }
    widgetScript.src = widgetsSrc;
    document.head.appendChild(widgetScript);
  </script>
  <script>
    setTimeout(() => {
      // for video autoplay
      document.body.click();
    }, 2000);
    setTimeout(() => {
        parent?.document.querySelector('#loader')?.classList.add('hidden');
        window.commUtilsTrigger('builderLoaded', {}, console.log);
      }, 3000);
  </script>
  <!-- <script>
        const parentWindow = window.parent;
        document.querySelectorAll(":not(:defined)").forEach(el => {
            console.log({ el })
            customElements.define(
                el.localName,
                parentWindow.customElements.get(el.localName)
            )
        }
        )
    </script> -->
  <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&amp;display=swap" rel="stylesheet">
    <script>
      window.lazyLoadOptions = {
        //TODO add options if required
      };
    </script>
    <script async="" src="https://cdn.jsdelivr.net/npm/vanilla-lazyload@17.8.4/dist/lazyload.min.js"></script>



        
        
        <link data-name="contentstyle" data-class="type-raleway-lato" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-raleway-lato.css" rel="stylesheet"><link data-name="contentstyle" data-class="type-heebo-ibmplexmono-2" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-heebo-ibmplexmono-2.css" rel="stylesheet"><link data-name="contentstyle" data-class="type-poppins" href="https://res-cdn.learnyst.com/loki/pro/assets/styles/type-poppins.css" rel="stylesheet">
        
      <lyst-event-handler event-property-id="737" event-type="page_visit"></lyst-event-handler></body></html>