It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://fabulous1.easy.co/products/online-seo/

  1. <!doctype html>
  2. <!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
  3. <!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
  4. <!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
  5. <!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
  6. <!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]-->
  7. <head>
  8.  
  9.  <!-- Basic page needs ================================================== -->
  10.  <meta charset="utf-8">
  11.  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  12.  
  13.  
  14.  <link rel="icon" href="https://cdn.store-assets.com/s/922320/f/8463850.png" />
  15.  
  16.  
  17.  <!-- Title and description ================================================== -->
  18.  <title>
  19.  online seo &ndash; Fabulous
  20.  </title>
  21.  
  22.  
  23.  <meta name="description" content="Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about provi">
  24.  
  25.  
  26.  <!-- Social meta ================================================== -->
  27.  
  28.  
  29.  <meta property="og:type" content="product">
  30.  <meta property="og:title" content="online seo">
  31.  <meta property="og:url" content="https://fabulous1.easy.co/products/online-seo">
  32.  
  33.  <meta property="og:price:amount" content="50">
  34.  <meta property="og:price:currency" content="USD">
  35.  
  36.  
  37. <meta property="og:description" content="Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It's not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it's about provi">
  38. <meta property="og:site_name" content="Fabulous">
  39.  
  40.  
  41.  
  42.  <meta name="twitter:card" content="summary">
  43.  
  44.  
  45.  
  46.  <meta name="twitter:site" content="@">
  47.  
  48.  
  49.  <meta name="twitter:title" content="online seo">
  50.  <meta name="twitter:description" content="Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&amp;#39;s not just about stuffing keywords into content or acquiring a">
  51.  <meta name="twitter:image" content="/assets/images/products/no_image.png">
  52.  <meta name="twitter:image:width" content="480">
  53.  <meta name="twitter:image:height" content="480">
  54.  
  55.  
  56.  
  57.  
  58.  <!-- Helpers ================================================== -->
  59.  <link rel="canonical" href="https://fabulous1.easy.co/products/online-seo">
  60.  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
  61.  <meta name="theme-color" content="#121212">
  62.  
  63.  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
  64.  
  65.  <!-- Header hook for plugins ================================================== -->
  66.  
  67. <!-- ScriptTags -->
  68. <script>window.__st={'p': 'product', 'cid': ''};</script><script src='/assets/events.js'></script><script>const __es_ads = {'country_code':'PK' ,'title': 'Online store by <img src="https://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg" alt="EasyStore" style="display: block !important;width:8em;margin:-2px 0 0 8px;"> <i style="width: 1px;height: 25px;margin: 0 10px;background: #E3E7EB;"></i> Create yours for free today.','title_mb': 'Create online store with <img src="https://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg" alt="EasyStore" style="display: block !important;width:8em;margin:-2px 8px 0;">','cta': 'Get started'}</script><script src='/assets/js/ads/storefront-ads.js'></script><script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
  69. <!-- /ScriptTags -->
  70.  
  71.  
  72.  
  73.  <script src="https://themes.easystore.co/63057/assets/global.js?t=1752564255" defer="defer"></script>
  74.  
  75.  
  76.  
  77.  <script>
  78.  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  79.  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  80.  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  81.  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  82.  
  83.  ga('create', '', 'auto','myTracker');
  84.  ga('myTracker.send', 'pageview');
  85.  
  86.  </script>
  87.  
  88.  <script src="/assets/storefront.js?id=914286bfa5e6419c67d1" type="text/javascript" ></script>
  89.  
  90.  
  91.  <!-- CSS ================================================== -->
  92.  <style>
  93.      @font-face {
  94.        font-family: 'Rubik';
  95.        font-style: normal;
  96.        font-weight: regular;
  97.        src: local('Rubik regular'), local('Rubik-regular'), url(https://fonts.gstatic.com/s/rubik/v14/iJWZBXyIfDnIV5PNhY1KTN7Z-Yh-B4i1UE80V4bVkA.ttf) format('truetype');
  98.      }
  99.  
  100.      @font-face {
  101.        font-family: 'Archivo Black';
  102.        font-style: normal;
  103.        font-weight: regular;
  104.        src: local('Archivo Black regular'), local('Archivo Black-regular'), url(https://fonts.gstatic.com/s/archivoblack/v10/HTxqL289NzCGg4MzN6KJ7eW6OYuP_x7yx3A.ttf) format('truetype');
  105.      }
  106.  
  107.      :root {
  108.        --font-body-family: 'Rubik', sans-serif;
  109.        --font-body-style: normal;
  110.        --font-body-weight: 300;
  111.  
  112.        --font-heading-family: 'Archivo Black', sans-serif;
  113.        --font-heading-style: normal;
  114.        --font-heading-weight: 700;
  115.  
  116.        --color-heading-text: 18,18,18;
  117.        --color-base-text: 18,18,18;
  118.        --color-base-background-1: 255,255,255;
  119.        --color-base-background-2: 255,255,255;
  120.        
  121.        --color-base-solid-button-labels: 255,255,255;
  122.        --color-base-outline-button-labels: 18,18,18;
  123.        
  124.        --color-base-accent-1: 18,18,18;
  125.        --color-base-accent-2: 18,18,18;
  126.        --payment-terms-background-color: 255,255,255;
  127.  
  128.        --gradient-base-background-1: 255,255,255;
  129.        --gradient-base-background-2: 255,255,255;
  130.        --gradient-base-accent-1: 18,18,18;
  131.        --gradient-base-accent-2: 18,18,18;
  132.  
  133.        --page-width: 145rem;
  134.      }
  135.  
  136.      *,
  137.      *::before,
  138.      *::after {
  139.        box-sizing: inherit;
  140.      }
  141.  
  142.      html {
  143.        box-sizing: border-box;
  144.        font-size: 62.5%;
  145.        height: 100%;
  146.      }
  147.  
  148.      body {
  149.        display: grid;
  150.        grid-template-rows: auto auto 1fr auto;
  151.        grid-template-columns: 100%;
  152.        min-height: 100%;
  153.        margin: 0;
  154.        font-size: 1.5rem;
  155.        letter-spacing: 0.06rem;
  156.        line-height: 1.8;
  157.        font-family: var(--font-body-family);
  158.        font-style: var(--font-body-style);
  159.        font-weight: var(--font-body-weight);
  160.        
  161.      }
  162.  
  163.      @media screen and (min-width: 750px) {
  164.        body {
  165.          font-size: 1.6rem;
  166.        }
  167.      }
  168.   </style>
  169.  
  170.  <link href="https://themes.easystore.co/63057/assets/base.css?t=1752564255" rel="stylesheet" type="text/css" media="screen" />
  171.  
  172.  
  173.  
  174.  
  175.  <script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
  176. </head>
  177.  
  178. <body id="online-seo" class="template-product" >
  179.  
  180. <!-- Snippet:global/body_start: Console Extension -->
  181. <div id='es_console' style='display: none;'>1346176</div>
  182. <!-- /Snippet -->
  183.  
  184. <style>
  185.  header {
  186.    --logo-width: 120px;
  187.  }
  188.  .header-wrapper,
  189.  .header-wrapper .list-menu--disclosure,
  190.  .header-wrapper .search-modal{
  191.    background-color: #F1F1F1;
  192.  }
  193.  .header-wrapper .search-modal .field__input{
  194.    background-color: rgb(var(--color-background));
  195.  }
  196.  .header-wrapper summary .icon-caret,
  197.  .header-wrapper .header__menu-item a,
  198.  .header-wrapper .list-menu__item,
  199.  .header-wrapper .link--text{
  200.    color: #000000;
  201.  }
  202.  
  203.  .search-modal__form{
  204.    position: relative;
  205.  }
  206.  
  207.  .dropdown {
  208.    display: none;
  209.    position: absolute;
  210.    top: 100%;
  211.    left: 0;
  212.    width: 100%;
  213.    padding: 5px 0;
  214.    background-color: #fff;
  215.    color:#000;
  216.    z-index: 1000;
  217.    border-bottom-left-radius: 15px;
  218.    border-bottom-right-radius: 15px;
  219.    border: 1px solid rgba(var(--color-foreground), 1);
  220.    border-top: none;
  221.    overflow-x: hidden;
  222.    overflow-y: auto;
  223.    max-height: 350px;
  224.  }
  225.  
  226.  .dropdown-item {
  227.    padding: 0.4rem 2rem;
  228.    cursor: pointer;
  229.    line-height: 1.4;
  230.    overflow: hidden;
  231.    text-overflow: ellipsis;
  232.    white-space: nowrap;
  233.  }
  234.  
  235.  .dropdown-item:hover{
  236.    background-color: #f3f3f3;
  237.  }
  238.  
  239.  .search__input.is-focus{
  240.    border-radius: 15px;
  241.    border-bottom-left-radius: 0;
  242.    border-bottom-right-radius: 0;
  243.    border: 1px solid rgba(var(--color-foreground), 1);
  244.    border-bottom: none;
  245.    box-shadow: none;
  246.  }
  247.  
  248.  .clear-all {
  249.    text-align: right;
  250.    padding: 0 2rem 0.2rem;
  251.    line-height: 1;
  252.    font-size: 70%;
  253.    margin-bottom: -2px;
  254.  }
  255.  
  256.  .clear-all:hover{
  257.    background-color: #fff;
  258.  }
  259.  
  260.  .search-input-focus .easystore-section-header-hidden{
  261.    transform: none;
  262.  }
  263. </style>
  264.  
  265. <link rel="preload" href="https://themes.easystore.co/63057/assets/section-header.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  266. <link rel="preload" href="https://themes.easystore.co/63057/assets/component-list-menu.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  267. <link rel="preload" href="https://themes.easystore.co/63057/assets/component-menu-drawer.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  268. <link rel="preload" href="https://themes.easystore.co/63057/assets/component-cart-notification.css?v1.1?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  269.  
  270. <script src="https://themes.easystore.co/63057/assets/cart-notification.js?t=1752564255" defer="defer"></script>
  271. <script src="https://themes.easystore.co/63057/assets/details-modal.js?t=1752564255" defer="defer"></script>
  272.  
  273. <svg xmlns="http://www.w3.org/2000/svg" class="hidden">
  274.  <symbol id="icon-search" viewbox="0 0 18 19" fill="none">
  275.    <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/>
  276.  </symbol>
  277.  
  278.  <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
  279.    <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor">
  280.  </symbol>
  281. </svg>
  282.  
  283.  
  284. <div id="easystore-section-header">
  285.  <sticky-header class="header-wrapper header-wrapper--border-bottom">
  286.    <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization">
  287.      <header-drawer data-breakpoint="tablet">
  288.        <details class="menu-drawer-container menu-opening">
  289.          <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer">
  290.            <span>
  291.              
  292.  
  293.  
  294.    <svg class="icon icon-hamburger " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M32.5,65h535a25,25,0,0,0,0-50H32.5a25,25,0,0,0,0,50Z" fill="currentColor"/><path d="M567.5,275H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/><path d="M567.5,535H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/></svg>
  295.  
  296.  
  297.  
  298.              
  299.  
  300.  
  301.    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
  302.  
  303.  
  304.  
  305.            </span>
  306.          </summary>
  307.          <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1">
  308.            <div class="menu-drawer__inner-container">
  309.              <div class="menu-drawer__navigation-container">
  310.                <nav class="menu-drawer__navigation">
  311.                  <ul class="menu-drawer__menu list-menu" role="list">
  312.                    
  313.                    
  314.                      
  315.                        <li>
  316.                          <a href="/"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
  317.                            Home
  318.                          </a>
  319.                        </li>
  320.                      
  321.                    
  322.                    
  323.                      
  324.                        
  325.                        <li>
  326.                          <details>
  327.                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
  328.                                  <a href="/collections/all"  class="link--text list-menu__item menu-drawer__menu-item">
  329.                                    Catalog
  330.                                  </a>
  331.                                  
  332.  
  333.  
  334.    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
  335.  
  336.  
  337.  
  338.                                  
  339.  
  340.  
  341.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
  342.      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
  343.    </svg>
  344.  
  345.  
  346.  
  347.                                </summary>
  348.                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
  349.                                  <div class="menu-drawer__inner-submenu">
  350.                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
  351.                                      
  352.  
  353.  
  354.    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
  355.  
  356.  
  357.  
  358.                                      Catalog
  359.                                    </button>
  360.                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
  361.                                      
  362.                                        
  363.                                        
  364.                                          <li>
  365.                                            <a href="/collections/new-arrival"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
  366.                                              New arrival
  367.                                            </a>
  368.                                          </li>
  369.                                        
  370.                                      
  371.                                        
  372.                                        
  373.                                          <li>
  374.                                            <a href="/collections/hot-selling"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
  375.                                              Hot selling
  376.                                            </a>
  377.                                          </li>
  378.                                        
  379.                                      
  380.                                      
  381.                                    </ul>
  382.                                  </div>
  383.                                </div>
  384.                          </details>
  385.                        </li>
  386.                      
  387.                    
  388.                    
  389.                      
  390.                        <li>
  391.                          <a href="/blogs/news"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
  392.                            News
  393.                          </a>
  394.                        </li>
  395.                      
  396.                    
  397.                    
  398.                      
  399.                        <li>
  400.                          <a href="/store-locator"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
  401.                            Location
  402.                          </a>
  403.                        </li>
  404.                      
  405.                    
  406.                  </ul>
  407.                </nav>
  408.  
  409.                <div class="menu-drawer__utility-links">
  410.  
  411.                  
  412.  
  413.  
  414.  
  415.  
  416.                  
  417.                  
  418.                  
  419.                    <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5">
  420.                      
  421.  
  422.  
  423.    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
  424.  
  425.  
  426.                      
  427.                      Log in
  428.                    </a>
  429.                  
  430.                    <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5">
  431.                      
  432.                      
  433.  
  434.  
  435.    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
  436.      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
  437.    </svg>
  438.  
  439.  
  440.                      Create account
  441.                    </a>
  442.                  
  443.                  
  444.                  
  445.                </div>
  446.              </div>
  447.            </div>
  448.          </div>
  449.        </details>
  450.      </header-drawer>
  451.  
  452.      
  453.        <h1 class="header__heading">
  454.          Fabulous
  455.        </h1>
  456.      
  457.  
  458.      
  459.      <div class="header__search-input" tabindex="-1">
  460.        <form action="/search" method="get" role="search" class="search search-modal__form">
  461.          <div class="field">
  462.            <input class="search__input field__input"
  463.              id="Search-In-Modal"
  464.              type="search"
  465.              name="q"
  466.              value=""
  467.              placeholder="Search"
  468.              autocomplete="off"
  469.            >
  470.            <label class="field__label" for="Search-In-Modal">Search</label>
  471.            <div class="dropdown" id="searchDropdown"></div>
  472.            <input type="hidden" name="search_history" class="hidden_search_history">
  473.            <input type="hidden" name="options[prefix]" value="last">
  474.            <button class="search__button field__button" aria-label="Search">
  475.              <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation">
  476.                <use href="#icon-search">
  477.              </svg>
  478.            </button>
  479.          </div>
  480.        </form>
  481.      </div>
  482.      
  483.  
  484.      <nav class="header__inline-menu">
  485.        <ul class="list-menu list-menu--inline" role="list">
  486.          
  487.            
  488.              
  489.                <li>
  490.                  <a href="/"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
  491.                    Home
  492.                  </a>
  493.                </li>
  494.              
  495.            
  496.            
  497.              
  498.                
  499.                <li>
  500.                  <details-disclosure>
  501.                    <details>
  502.                      <summary class="header__menu-item list-menu__item link focus-inset">
  503.                        <a href="/collections/all"  >Catalog</a>
  504.                        
  505.  
  506.  
  507.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
  508.      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
  509.    </svg>
  510.  
  511.  
  512.  
  513.                      </summary>
  514.                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
  515.                        
  516.                        
  517.                        
  518.                          
  519.                            
  520.                            <li>
  521.                              <a href="/collections/new-arrival"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
  522.                                New arrival
  523.                              </a>
  524.                            </li>
  525.                          
  526.                        
  527.                        
  528.                          
  529.                            
  530.                            <li>
  531.                              <a href="/collections/hot-selling"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
  532.                                Hot selling
  533.                              </a>
  534.                            </li>
  535.                          
  536.                        
  537.                      </ul>
  538.                    </details>
  539.                  </details-disclosure>
  540.                </li>
  541.              
  542.            
  543.            
  544.              
  545.                <li>
  546.                  <a href="/blogs/news"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
  547.                    News
  548.                  </a>
  549.                </li>
  550.              
  551.            
  552.            
  553.              
  554.                <li>
  555.                  <a href="/store-locator"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
  556.                    Location
  557.                  </a>
  558.                </li>
  559.              
  560.            
  561.            
  562.            
  563.              
  564.                
  565.                  
  566.                
  567.                  
  568.                
  569.              
  570.            
  571.        </ul>
  572.      </nav>
  573.      <div class="header__icons">
  574.  
  575.        
  576.          
  577.            <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide">
  578.              <a href="/account/login" class="header__icon link link--text focus-inset p-2">
  579.                
  580.  
  581.  
  582.    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
  583.  
  584.  
  585.  
  586.                <span id="my-account" class="header__link-label">Login</span>
  587.              </a>
  588.          </div>
  589.          
  590.        
  591.  
  592.        <a href="/cart" class="header__icon link link--text focus-inset" id="cart-icon-bubble">
  593.          <span class="header__icon--cart">
  594.            
  595.  
  596.  
  597.    <svg class="icon icon-cart-empty " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496.56 600"><path d="M453.52,128.63a25,25,0,0,0-24.91-22.8H364.72a117.48,117.48,0,0,0-232.89,0H67.94A25,25,0,0,0,43,128.63L8.8,515.21a72.11,72.11,0,0,0,19.05,55.6,79,79,0,0,0,58.22,25.3H410.49a79,79,0,0,0,58.22-25.3,72.11,72.11,0,0,0,19.05-55.6ZM248.28,53.89a67.58,67.58,0,0,1,65.65,51.94H182.63A67.57,67.57,0,0,1,248.28,53.89ZM431.83,537.05a28.85,28.85,0,0,1-21.34,9.06H86.07a28.85,28.85,0,0,1-21.34-9.06,22.69,22.69,0,0,1-6.13-17.43L90.82,155.83h40v51.23a25,25,0,0,0,50,0V155.83h135v51.23a25,25,0,0,0,50,0V155.83h40L438,519.62A22.68,22.68,0,0,1,431.83,537.05Z" fill="currentColor"/></svg>
  598.  
  599.  
  600.  
  601.            <div class="cart-count-bubble hidden">
  602.              <span aria-hidden="true" class="js-content-cart-count">0</span>
  603.            </div>
  604.          </span>
  605.          <span class="header__link-label medium-hide small-hide">
  606.            Cart
  607.          </span>
  608.        </a>
  609.        
  610.      </div>
  611.    </header>
  612.  </sticky-header>
  613.  
  614. <cart-notification>
  615.  <div class="cart-notification-wrapper page-width color-background-1">
  616.    <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="Added to cart" role="dialog" tabindex="-1">
  617.      <div class="cart-notification__header">
  618.        <h2 class="cart-notification__heading caption-large">
  619.  
  620.  
  621.    <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none">
  622.      <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path>
  623.    </svg>
  624.  
  625.  
  626. Added to cart</h2>
  627.        <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
  628.          
  629.  
  630.  
  631.    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
  632.  
  633.  
  634.  
  635.        </button>
  636.      </div>
  637.      <div id="cart-notification-product" class="cart-notification-product"></div>
  638.      <div class="cart-notification__links">
  639.        <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">View cart (<span class="js-content-cart-count">0</span>)</a>
  640.        <form action="/cart" method="post" id="cart-notification-form">
  641.          <input type="hidden" name="_token" value="Mt1AlfNyacNXhjWnV1QBaVFQGFTjuzyhlmLDQ48X">
  642.          <input type="hidden" name="current_currency" value="USD">
  643.          <button class="button button--primary button--full-width" name="checkout" value="true">Checkout</button>
  644.        </form>
  645.        <button type="button" class="link button-label">Continue shopping</button>
  646.      </div>
  647.    </div>
  648.  </div>
  649. </cart-notification>
  650. <style>
  651.  .cart-notification {
  652.     display: none;
  653.  }
  654. </style>
  655. <script>
  656. document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{
  657.  if(event.submitter) event.submitter.classList.add('loading');
  658. })
  659.  
  660. </script>
  661.  
  662. </div>
  663.  
  664.  
  665. <script>
  666.  
  667.  class StickyHeader extends HTMLElement {
  668.    constructor() {
  669.      super();
  670.    }
  671.  
  672.    connectedCallback() {
  673.      this.header = document.getElementById('easystore-section-header');
  674.      this.headerBounds = {};
  675.      this.currentScrollTop = 0;
  676.      this.preventReveal = false;
  677.  
  678.      this.onScrollHandler = this.onScroll.bind(this);
  679.      this.hideHeaderOnScrollUp = () => this.preventReveal = true;
  680.  
  681.      this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
  682.      window.addEventListener('scroll', this.onScrollHandler, false);
  683.  
  684.      this.createObserver();
  685.    }
  686.  
  687.    disconnectedCallback() {
  688.      this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
  689.      window.removeEventListener('scroll', this.onScrollHandler);
  690.    }
  691.  
  692.    createObserver() {
  693.      let observer = new IntersectionObserver((entries, observer) => {
  694.        this.headerBounds = entries[0].intersectionRect;
  695.        observer.disconnect();
  696.      });
  697.  
  698.      observer.observe(this.header);
  699.    }
  700.  
  701.    onScroll() {
  702.      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
  703.  
  704.      if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
  705.        requestAnimationFrame(this.hide.bind(this));
  706.      } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
  707.        if (!this.preventReveal) {
  708.          requestAnimationFrame(this.reveal.bind(this));
  709.        } else {
  710.          window.clearTimeout(this.isScrolling);
  711.  
  712.          this.isScrolling = setTimeout(() => {
  713.            this.preventReveal = false;
  714.          }, 66);
  715.  
  716.          requestAnimationFrame(this.hide.bind(this));
  717.        }
  718.      } else if (scrollTop <= this.headerBounds.top) {
  719.        requestAnimationFrame(this.reset.bind(this));
  720.      }
  721.  
  722.  
  723.      this.currentScrollTop = scrollTop;
  724.    }
  725.  
  726.    hide() {
  727.      this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky');
  728.      this.closeMenuDisclosure();
  729.      // this.closeSearchModal();
  730.    }
  731.  
  732.    reveal() {
  733.      this.header.classList.add('easystore-section-header-sticky', 'animate');
  734.      this.header.classList.remove('easystore-section-header-hidden');
  735.    }
  736.  
  737.    reset() {
  738.      this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate');
  739.    }
  740.  
  741.    closeMenuDisclosure() {
  742.      this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure');
  743.      this.disclosures.forEach(disclosure => disclosure.close());
  744.    }
  745.  
  746.    // closeSearchModal() {
  747.    //   this.searchModal = this.searchModal || this.header.querySelector('details-modal');
  748.    //   this.searchModal.close(false);
  749.    // }
  750.  }
  751.  
  752.  customElements.define('sticky-header', StickyHeader);
  753.  
  754.  
  755.  class DetailsDisclosure extends HTMLElement{
  756.    constructor() {
  757.      super();
  758.      this.mainDetailsToggle = this.querySelector('details');
  759.      // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
  760.      this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this));
  761.      this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this));
  762.    }
  763.  
  764.    onFocusOut() {
  765.      setTimeout(() => {
  766.        if (!this.contains(document.activeElement)) this.close();
  767.      })
  768.    }
  769.  
  770.    open() {
  771.      this.mainDetailsToggle.setAttribute('open',1)
  772.    }
  773.  
  774.    close() {
  775.      this.mainDetailsToggle.removeAttribute('open')
  776.    }
  777.  }
  778.  
  779.  customElements.define('details-disclosure', DetailsDisclosure);
  780.  
  781.  function clearAll() {
  782.    localStorage.removeItem('searchHistory');
  783.    
  784.    var customer = "";
  785.    if(customer) {
  786.      // Your logic to clear all data or call an endpoint
  787.      fetch('/account/search_histories', {
  788.          method: 'DELETE',
  789.          headers: {
  790.            "Content-Type": "application/json",
  791.            "X-Requested-With": "XMLHttpRequest"
  792.          },
  793.          body: JSON.stringify({
  794.            _token: "Mt1AlfNyacNXhjWnV1QBaVFQGFTjuzyhlmLDQ48X"
  795.          }),
  796.      })
  797.      .then(response => response.json())
  798.    }
  799.  }
  800.  // End - delete search history from local storage
  801.  
  802.  // search history dropdown  
  803.  var searchInputs = document.querySelectorAll('.search__input');
  804.  
  805.  if(searchInputs.length > 0) {
  806.    
  807.    searchInputs.forEach((searchInput)=> {
  808.    
  809.      searchInput.addEventListener('focus', function() {
  810.        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
  811.        searchDropdown.innerHTML = ''; // Clear existing items
  812.  
  813.        // retrieve data from local storage
  814.        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
  815.  
  816.        // Convert JSON to string
  817.        var search_history_json = JSON.stringify(searchHistoryData);
  818.  
  819.        // Set the value of the hidden input
  820.        searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json;
  821.  
  822.        // create dropdown items
  823.        var clearAllItem = document.createElement('div');
  824.        clearAllItem.className = 'dropdown-item clear-all';
  825.        clearAllItem.textContent = 'Clear';
  826.        clearAllItem.addEventListener('click', function() {
  827.          clearAll();
  828.          searchDropdown.style.display = 'none';
  829.          searchInput.classList.remove('is-focus');
  830.        });
  831.        searchDropdown.appendChild(clearAllItem);
  832.  
  833.        // create dropdown items
  834.        searchHistoryData.forEach(function(item) {
  835.          var dropdownItem = document.createElement('div');
  836.          dropdownItem.className = 'dropdown-item';
  837.          dropdownItem.textContent = item.term;
  838.          dropdownItem.addEventListener('click', function() {
  839.            searchInput.value = item.term;
  840.            searchInput.closest('form').submit();
  841.            searchDropdown.style.display = 'none';
  842.          });
  843.          searchDropdown.appendChild(dropdownItem);
  844.        });
  845.  
  846.        if(searchHistoryData.length > 0){
  847.          // display the dropdown
  848.          searchInput.classList.add('is-focus');
  849.          document.body.classList.add('search-input-focus');
  850.          searchDropdown.style.display = 'block';
  851.        }
  852.      });
  853.  
  854.      searchInput.addEventListener("focusout", (event) => {
  855.        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
  856.        searchInput.classList.remove('is-focus');
  857.        searchDropdown.classList.add('transparent');
  858.        setTimeout(()=>{
  859.          searchDropdown.style.display = 'none';
  860.          searchDropdown.classList.remove('transparent');
  861.          document.body.classList.remove('search-input-focus');
  862.        }, 400);
  863.      });
  864.    })
  865.  }
  866.  // End - search history dropdown
  867. </script>
  868.  
  869.  
  870.  <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
  871.    
  872.    
  873. <!-- <link href="https://themes.easystore.co/63057/assets/component-rte.css?t=1752564255" rel="stylesheet" type="text/css" media="screen" /> -->
  874. <link rel="preload" href="https://themes.easystore.co/63057/assets/section-main-product.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  875. <link rel="preload" href="https://themes.easystore.co/63057/assets/component-price.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  876.  
  877. <style>
  878.  .product-wrapper_color{
  879.    background-color: rgba(245, 245, 245, 1);
  880.    padding: 30px;
  881.    border-radius: 20px;
  882.  }
  883.  .product-card-wrapper{
  884.    background-color: rgba(245, 245, 245, 1);
  885.  }
  886. </style>
  887.  
  888. <link rel="preload" href="https://themes.easystore.co/63057/assets/component-slider.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  889. <script src="https://themes.easystore.co/63057/assets/product-form.js?t=1752564255" defer="defer"></script>
  890.  
  891.  
  892. <section class="product-section page-width spaced-section">
  893.  
  894.  
  895.  
  896.  <div class="product grid grid--1-col grid--2-col-tablet">
  897.    
  898.    
  899.  
  900.      <div class="grid__item product__media-wrapper text-center">
  901.        
  902.        <img src="/assets/images/products/no_image.png" alt="Empty Image">
  903.      </div>
  904.  
  905.    
  906.  
  907.  
  908.    <div class="grid__item product__info-wrapper">
  909.      <div id="ProductInfo" class="product__info-container product__info-container--sticky">
  910.        <div class="product-wrapper_color">
  911.          
  912.  
  913.          <h1 class="product__title">
  914.            online seo
  915.          </h1>
  916.  
  917.          <!-- price -->
  918.          <div id="price">
  919.          
  920.  
  921. <div class="price
  922.   price--large
  923.  
  924.   price--on-sale "
  925.  data-expires="">
  926.  
  927.  <dl>
  928.    <div class="price__regular">
  929.      <dt>
  930.        <span class="visually-hidden visually-hidden--inline">Regular price</span>
  931.      </dt>
  932.      <dd >
  933.        <span class="price-item price-item--regular">
  934.          
  935.            
  936.  
  937.    <span class=money data-ori-price='50.00'>$ 50.00 </span>
  938.  
  939.  
  940.          
  941.        </span>
  942.      </dd>
  943.    </div>
  944.    <div class="price__sale">
  945.      <dt>
  946.        <span class="visually-hidden visually-hidden--inline">Sale price</span>
  947.      </dt>
  948.      <dd >
  949.        <span id="ProductPrice" class="price-item price-item--sale">
  950.          
  951.            
  952.  
  953.    <span class=money data-ori-price='50.00'>$ 50.00 </span>
  954.  
  955.  
  956.          
  957.        </span>
  958.      </dd>
  959.      
  960.      <dt class="price__compare">
  961.        <span class="visually-hidden visually-hidden--inline">Regular price</span>
  962.      </dt>
  963.      <dd class="price__compare">
  964.        <s class="price-item price-item--regular">
  965.          
  966.            <span class=money data-ori-price='100.00'>$ 100.00 </span>
  967.          
  968.          
  969.        </s>
  970.      </dd>
  971.      
  972.    </div>
  973.  </dl>
  974.  
  975.    <span class="badge price__badge-sale color-accent-2" aria-hidden="true">
  976.      Sale
  977.    </span>
  978.  
  979.    <span class="badge price__badge-sold-out" aria-hidden="true">
  980.      Sold Out
  981.    </span>
  982.  
  983. </div>
  984.  
  985.        </div>
  986.  
  987.          <div class="product_upsell-info">
  988.            
  989.              
  990.              
  991.              <div class="product_upsell-box">
  992.                
  993.                  <div class="product_upsell-icon">
  994.                    <img src="https://cdn.store-assets.com/s/943101/f/8656454.png" alt="Free worldwide shipping | Fabulous">
  995.                  </div>
  996.                
  997.                
  998.                  <div class="product_upsell-text">
  999.                    Free worldwide shipping
  1000.                  </div>
  1001.                
  1002.              </div>
  1003.            
  1004.              
  1005.              
  1006.              <div class="product_upsell-box">
  1007.                
  1008.                  <div class="product_upsell-icon">
  1009.                    <img src="https://cdn.store-assets.com/s/943101/f/8656465.png" alt="Secure payments | Fabulous">
  1010.                  </div>
  1011.                
  1012.                
  1013.                  <div class="product_upsell-text">
  1014.                    Secure payments
  1015.                  </div>
  1016.                
  1017.              </div>
  1018.            
  1019.              
  1020.              
  1021.              <div class="product_upsell-box">
  1022.                
  1023.                  <div class="product_upsell-icon">
  1024.                    <img src="https://cdn.store-assets.com/s/943101/f/8656462.png" alt="7 Days Free Return | Fabulous">
  1025.                  </div>
  1026.                
  1027.                
  1028.                  <div class="product_upsell-text">
  1029.                    7 Days Free Return
  1030.                  </div>
  1031.                
  1032.              </div>
  1033.            
  1034.          </div>
  1035.  
  1036.          <product-form class="product-form">
  1037.            <form action="/cart/add" method="post" enctype="multipart/form-data" data-addtocart='{"id":11594771,"name":"online seo","sku":"","price":50.0,"quantity":1,"variant":"Default Title","category":"Feature on homepage","brands":""}' id="AddToCartForm">
  1038.  
  1039.              <style>
  1040. .sf_promo-promo-label, #sf_promo-view-more-tag, .sf_promo-label-unclickable:hover {
  1041.    color: #4089e4
  1042. }
  1043. </style>
  1044. <div class="sf_promo-tag-wrapper">
  1045.    <div id="sf_promo-tag-label"></div>
  1046.    <div class="sf_promo-tag-container">
  1047.        <div id="sf_promo-tag"></div>
  1048.        <a id="sf_promo-view-more-tag" class="sf_promo-promo-label hide" onclick="getPromotionList(true)">View More</a>
  1049.    </div>
  1050. </div>
  1051.  
  1052.  
  1053.              <select name="id" id="productSelect" class="hide">
  1054.                
  1055.                  
  1056.  
  1057.                    <option  selected="selected"  data-sku="" value="53508240">Default Title - <span class=money data-ori-price='5,000.00'>$ 5,000.00 </span></option>
  1058.  
  1059.                  
  1060.                
  1061.              </select>
  1062.  
  1063.              
  1064.  
  1065.              <!-- quantity_selector -->
  1066.              <div class="product-form__input product-form__quantity">
  1067.                <label class="form__label" for="Quantity">
  1068.                  Quantity
  1069.                </label>
  1070.  
  1071.                <quantity-input class="quantity">
  1072.                  <button class="quantity__button no-js-hidden" name="minus" type="button">
  1073.                    
  1074.  
  1075.  
  1076.    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-minus " fill="none" viewBox="0 0 10 2">
  1077.      <path fill-rule="evenodd" clip-rule="evenodd" d="M.5 1C.5.7.7.5 1 .5h8a.5.5 0 110 1H1A.5.5 0 01.5 1z" fill="currentColor"></path>
  1078.    </svg>
  1079.  
  1080.  
  1081.  
  1082.                  </button>
  1083.                  <input class="quantity__input"
  1084.                      type="number"
  1085.                      name="quantity"
  1086.                      id="Quantity"
  1087.                      min="1"
  1088.                      value="1"
  1089.                    >
  1090.                  <button class="quantity__button no-js-hidden" name="plus" type="button">
  1091.                    
  1092.  
  1093.  
  1094.    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
  1095.      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
  1096.    </svg>
  1097.  
  1098.  
  1099.  
  1100.                  </button>
  1101.                </quantity-input>
  1102.              </div>
  1103.  
  1104.  
  1105.              <div class="product-form__buttons">
  1106.  
  1107.                
  1108.  
  1109.                <button
  1110.                  type="submit"
  1111.                  name="add"
  1112.                  id="AddToCart"
  1113.                  class="product-form__submit button button--full-width button--primary btn--radius"
  1114.                
  1115.                >
  1116.                    
  1117.                      Add to Cart
  1118.                    
  1119.                </button>
  1120.  
  1121.                
  1122.  
  1123.              </div>
  1124.              
  1125.              <div class="form__message hidden" tabindex="-1" autofocus>
  1126.                <span class="visually-hidden">accessibility.error </span>
  1127.                
  1128.  
  1129.  
  1130.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error " viewBox="0 0 13 13">
  1131.      <circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2"/>
  1132.      <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width="0.7"/>
  1133.      <path d="M5.87413 3.52832L5.97439 7.57216H7.02713L7.12739 3.52832H5.87413ZM6.50076 9.66091C6.88091 9.66091 7.18169 9.37267 7.18169 9.00504C7.18169 8.63742 6.88091 8.34917 6.50076 8.34917C6.12061 8.34917 5.81982 8.63742 5.81982 9.00504C5.81982 9.37267 6.12061 9.66091 6.50076 9.66091Z" fill="white"/>
  1134.      <path d="M5.87413 3.17832H5.51535L5.52424 3.537L5.6245 7.58083L5.63296 7.92216H5.97439H7.02713H7.36856L7.37702 7.58083L7.47728 3.537L7.48617 3.17832H7.12739H5.87413ZM6.50076 10.0109C7.06121 10.0109 7.5317 9.57872 7.5317 9.00504C7.5317 8.43137 7.06121 7.99918 6.50076 7.99918C5.94031 7.99918 5.46982 8.43137 5.46982 9.00504C5.46982 9.57872 5.94031 10.0109 6.50076 10.0109Z" fill="white" stroke="#EB001B" stroke-width="0.7"/>
  1135.    </svg>
  1136.  
  1137.  
  1138.  
  1139.                <div class="js-error-content"></div>
  1140.              </div>
  1141.  
  1142.            </form>
  1143.          </product-form>
  1144.  
  1145.  
  1146.          <div>
  1147.            
  1148.  
  1149.  
  1150.  
  1151.  
  1152. <share-button class="share-button">
  1153.  <button class="share-button__button hidden">
  1154.    
  1155.      
  1156.  
  1157.  
  1158.    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-share " width="18" height="18" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  1159.      <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  1160.      <circle cx="6" cy="12" r="3" />
  1161.      <circle cx="18" cy="6" r="3" />
  1162.      <circle cx="18" cy="18" r="3" />
  1163.      <line x1="8.7" y1="10.7" x2="15.3" y2="7.3" />
  1164.      <line x1="8.7" y1="13.3" x2="15.3" y2="16.7" />
  1165.    </svg>
  1166.  
  1167.  
  1168.  
  1169.      Share
  1170.    
  1171.  </button>
  1172.  <details>
  1173.    <summary class="share-button__button">
  1174.      
  1175.        
  1176.  
  1177.  
  1178.    <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-share " width="18" height="18" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  1179.      <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  1180.      <circle cx="6" cy="12" r="3" />
  1181.      <circle cx="18" cy="6" r="3" />
  1182.      <circle cx="18" cy="18" r="3" />
  1183.      <line x1="8.7" y1="10.7" x2="15.3" y2="7.3" />
  1184.      <line x1="8.7" y1="13.3" x2="15.3" y2="16.7" />
  1185.    </svg>
  1186.  
  1187.  
  1188.  
  1189.        Share
  1190.      
  1191.    </summary>
  1192.    <div id="Product-share-id" class="share-button__fallback motion-reduce ">
  1193.  
  1194.      <div class="social-sharing-icons" data-permalink="https://fabulous1.easy.co/products/online-seo">
  1195.        <div class="sharing-icons-label"><small>Share it on</small></div>
  1196.  
  1197.        <a target="_blank" href="//www.facebook.com/sharer.php?u=https://fabulous1.easy.co/products/online-seo" class="share-icon-button">
  1198.          
  1199.  
  1200.  
  1201.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook "
  1202.    viewBox="0 0 18 18">
  1203.      <path fill="currentColor"
  1204.        d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z">
  1205.      </path>
  1206.    </svg>
  1207.  
  1208.  
  1209.  
  1210.        </a>
  1211.  
  1212.        <a target="_blank" href="//twitter.com/share?text=online seo&amp;url=https://fabulous1.easy.co/products/online-seo" class="share-icon-button">
  1213.          
  1214.  
  1215.  
  1216.    <svg class="icon icon-twitter " viewBox="0 0 22 22" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  1217.      <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  1218.      <path d="M3 3l11.733 16h4.267l-11.733 -16z" />
  1219.      <path d="M3 19l6.768 -6.768m2.46 -2.46l6.772 -6.772" />
  1220.    </svg>
  1221.  
  1222.  
  1223.  
  1224.        </a>
  1225.  
  1226.        
  1227.  
  1228.          <a target="_blank" href="//pinterest.com/pin/create/button/?url=https://fabulous1.easy.co/products/online-seo&amp;media=/assets/images/products/no_image.png&amp;description=online seo" class="share-icon-button">
  1229.            
  1230.  
  1231.  
  1232.  <svg class="icon icon-pinterest " xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><g id="Layer_1" data-name="Layer 1"><circle cx="512" cy="512" r="450" fill="transparent"/><path d="M536,962H488.77a23.77,23.77,0,0,0-3.39-.71,432.14,432.14,0,0,1-73.45-10.48c-9-2.07-18-4.52-26.93-6.8a7.6,7.6,0,0,1,.35-1.33c.6-1,1.23-2,1.85-3,18.19-29.57,34.11-60.23,43.17-93.95,7.74-28.83,14.9-57.82,22.3-86.74,2.91-11.38,5.76-22.77,8.77-34.64,2.49,3.55,4.48,6.77,6.83,9.69,15.78,19.58,36.68,31.35,60.16,39,25.41,8.3,51.34,8.07,77.41,4.11C653.11,770,693.24,748.7,726.79,715c32.57-32.73,54.13-72.14,68.33-115.76,12-37,17.81-75.08,19.08-114,1-30.16-1.94-59.73-11.72-88.36C777.38,323.39,728.1,271.81,658,239.82c-45.31-20.67-93.27-28.06-142.89-26.25a391.16,391.16,0,0,0-79.34,10.59c-54.59,13.42-103.37,38.08-143.29,78-61.1,61-91.39,134.14-83.34,221.41,2.3,25,8.13,49.08,18.84,71.86,15.12,32.14,37.78,56.78,71,70.8,11.87,5,20.67.54,23.82-12,2.91-11.56,5.5-23.21,8.88-34.63,2.72-9.19,1.2-16.84-5.15-24-22.84-25.84-31.36-56.83-30.88-90.48A238.71,238.71,0,0,1,300,462.16c10.93-55.27,39.09-99.84,85.3-132.46,33.39-23.56,71-35.54,111.53-38.54,30.47-2.26,60.5,0,89.89,8.75,27.38,8.16,51.78,21.59,71.77,42.17,31.12,32,44.38,71.35,45.61,115.25a383.11,383.11,0,0,1-3.59,61.18c-4.24,32-12.09,63-25.45,92.47-11.37,25.09-26,48-47.45,65.79-23.66,19.61-50.51,28.9-81.43,23.69-34-5.75-57.66-34-57.56-68.44,0-13.46,4.16-26.09,7.8-38.78,8.67-30.19,18-60.2,26.45-90.46,5.26-18.82,9.13-38,6.91-57.8-1.58-14.1-5.77-27.31-15.4-38-16.55-18.4-37.68-22.29-60.75-17-23.26,5.3-39.56,20.36-51.58,40.26-15,24.89-20.26,52.22-19.2,81a179.06,179.06,0,0,0,13.3,62.7,9.39,9.39,0,0,1,.07,5.31c-17.12,72.65-33.92,145.37-51.64,217.87-9.08,37.15-14.72,74.52-13.67,112.8.13,4.55,0,9.11,0,14.05-1.62-.67-3.06-1.22-4.46-1.86A452,452,0,0,1,103.27,700.4,441.83,441.83,0,0,1,63.54,547.58c-.41-5.44-1-10.86-1.54-16.29V492.71c.51-5.3,1.13-10.58,1.52-15.89A436.78,436.78,0,0,1,84,373,451.34,451.34,0,0,1,368.54,85.49a439.38,439.38,0,0,1,108.28-22c5.31-.39,10.59-1,15.89-1.52h38.58c1.64.28,3.26.65,4.9.81,14.34,1.42,28.77,2.2,43,4.3a439.69,439.69,0,0,1,140.52,45.62c57.3,29.93,106.14,70.19,146,121.07Q949,340.12,960.52,474.86c.4,4.64,1,9.27,1.48,13.91v46.46a22.06,22.06,0,0,0-.7,3.36,426.12,426.12,0,0,1-10.51,74.23C930,702,886.41,778.26,819.48,840.65c-75.94,70.81-166,110.69-269.55,119.84C545.29,960.91,540.65,961.49,536,962Z" fill="currentColor"/></g></svg>
  1233.  
  1234.  
  1235.  
  1236.          </a>
  1237.  
  1238.        
  1239.        
  1240.        <a target="_blank" href="//social-plugins.line.me/lineit/share?url=https://fabulous1.easy.co/products/online-seo" class="share-icon-button">
  1241.          
  1242.  
  1243.  
  1244.    <svg class="icon icon-line " xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
  1245.      <g id="Layer_1" data-name="Layer 1"><circle cx="512" cy="512" r="450" fill="currentColor"/>
  1246.        <g id="TYPE_A" data-name="TYPE A">
  1247.          <path d="M811.32,485c0-133.94-134.27-242.9-299.32-242.9S212.68,351,212.68,485c0,120.07,106.48,220.63,250.32,239.65,9.75,2.1,23,6.42,26.37,14.76,3,7.56,2,19.42,1,27.06,0,0-3.51,21.12-4.27,25.63-1.3,7.56-6,29.59,25.93,16.13s172.38-101.5,235.18-173.78h0c43.38-47.57,64.16-95.85,64.16-149.45" fill="#fff"/>
  1248.          <path d="M451.18,420.26h-21a5.84,5.84,0,0,0-5.84,5.82V556.5a5.84,5.84,0,0,0,5.84,5.82h21A5.83,5.83,0,0,0,457,556.5V426.08a5.83,5.83,0,0,0-5.83-5.82" fill="currentColor"/>
  1249.          <path d="M595.69,420.26h-21a5.83,5.83,0,0,0-5.83,5.82v77.48L509.1,422.85a5.39,5.39,0,0,0-.45-.59l0,0a4,4,0,0,0-.35-.36l-.11-.1a3.88,3.88,0,0,0-.31-.26l-.15-.12-.3-.21-.18-.1-.31-.17-.18-.09-.34-.15-.19-.06c-.11-.05-.23-.08-.34-.12l-.21-.05-.33-.07-.25,0a3,3,0,0,0-.31,0l-.3,0H483.26a5.83,5.83,0,0,0-5.83,5.82V556.5a5.83,5.83,0,0,0,5.83,5.82h21a5.83,5.83,0,0,0,5.83-5.82V479l59.85,80.82a5.9,5.9,0,0,0,1.47,1.44l.07,0c.11.08.23.15.35.22l.17.09.28.14.28.12.18.06.39.13.09,0a5.58,5.58,0,0,0,1.49.2h21a5.83,5.83,0,0,0,5.84-5.82V426.08a5.83,5.83,0,0,0-5.84-5.82" fill="currentColor"/>
  1250.          <path d="M400.57,529.66H343.52V426.08a5.81,5.81,0,0,0-5.82-5.82h-21a5.82,5.82,0,0,0-5.83,5.82V556.49h0a5.75,5.75,0,0,0,1.63,4,.34.34,0,0,0,.08.09l.09.08a5.75,5.75,0,0,0,4,1.63h83.88a5.82,5.82,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83" fill="currentColor"/>
  1251.          <path d="M711.64,452.91a5.81,5.81,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83H627.76a5.79,5.79,0,0,0-4,1.64l-.06.06-.1.11a5.8,5.8,0,0,0-1.61,4h0v130.4h0a5.75,5.75,0,0,0,1.63,4,.34.34,0,0,0,.08.09l.08.08a5.78,5.78,0,0,0,4,1.63h83.88a5.82,5.82,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83h-57v-22h57a5.82,5.82,0,0,0,5.82-5.84v-21a5.82,5.82,0,0,0-5.82-5.83h-57v-22Z" fill="currentColor"/>
  1252.        </g>
  1253.      </g>
  1254.    </svg>
  1255.  
  1256.  
  1257.  
  1258.        </a>
  1259.  
  1260.        
  1261.      </div>
  1262.  
  1263.      <div class="share-button_copy-wrapper">
  1264.        <div class="field">
  1265.          <span id="ShareMessage-id" class="share-button__message hidden" role="status">
  1266.          </span>
  1267.          <input type="text"
  1268.                class="field__input"
  1269.                id="url"
  1270.                value="https://fabulous1.easy.co/products/online-seo"
  1271.                placeholder="Link"
  1272.                onclick="this.select();"
  1273.                readonly
  1274.          >
  1275.          <label class="field__label" for="url">Link</label>
  1276.        </div>
  1277.        <button class="share-button__close hidden no-js-hidden">
  1278.          
  1279.  
  1280.  
  1281.    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
  1282.  
  1283.  
  1284.  
  1285.          <span class="visually-hidden">general.share.close</span>
  1286.        </button>
  1287.        <button class="share-button__copy no-js-hidden">
  1288.          
  1289.  
  1290.  
  1291.    <svg class="icon icon-clipboard " width="11" height="13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 11 13">
  1292.      <path fill-rule="evenodd" clip-rule="evenodd" d="M2 1a1 1 0 011-1h7a1 1 0 011 1v9a1 1 0 01-1 1V1H2zM1 2a1 1 0 00-1 1v9a1 1 0 001 1h7a1 1 0 001-1V3a1 1 0 00-1-1H1zm0 10V3h7v9H1z" fill="currentColor"/>
  1293.    </svg>
  1294.  
  1295.  
  1296.  
  1297.          <span class="visually-hidden">general.share.copy_to_clipboard</span>
  1298.        </button>
  1299.      </div>
  1300.      
  1301.    </div>
  1302.    <div class="modal-overlay float-bottom-modal-overlay large-up-hide"></div>
  1303.  </details>
  1304. </share-button>
  1305. <script src="https://themes.easystore.co/63057/assets/share.js?t=1752564255" defer="defer"></script>
  1306.  
  1307.  
  1308.  
  1309.          </div>
  1310.  
  1311.        
  1312.        </div>
  1313.  
  1314.        <link href="/assets/css/promotion.css?v2.92" rel="stylesheet" type="text/css" media="screen" />
  1315. <style>
  1316. .sf_promo-ribbon{
  1317.  color: #4089e4;
  1318.  background-color: #4089e4
  1319. }
  1320. .sf_promo-ribbon-text,
  1321. .sf_promo-ribbon-text span{
  1322.  color: #fff;
  1323.  color: #fff;
  1324. }
  1325.  
  1326. </style>
  1327.  
  1328.  
  1329.  <div id="promotion-section" class="sf_promo-container">
  1330.    <div id="sf_promo-container" >
  1331.    </div>
  1332.    <div class="text-center">
  1333.      <button id="get-more-promotion" class="btn btn--secondary hide" onclick="getPromotionList(true)">View More</button>
  1334.    </div>
  1335.  </div>
  1336.  <div class="text-center">
  1337.    <button id="view-more-promotion" class="btn btn--secondary hide" onclick="expandPromoSection()">View More</button>
  1338.  </div>
  1339.  
  1340.  
  1341. <script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>$ {{amount}} </span>";</script>
  1342. <script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
  1343.  
  1344. <script>
  1345.  
  1346.  var param = {limit:5, page:1};
  1347.  
  1348.  function getPromotionList(load_more){
  1349.  
  1350.    var element = document.getElementById("sf_promo-container"),
  1351.        promo_section = document.getElementById("promotion-section"),
  1352.        promo_btn = document.getElementById("get-more-promotion"),
  1353.        view_more_btn = document.getElementById("view-more-promotion"),
  1354.        view_more_tag_btn = document.getElementById("sf_promo-view-more-tag"),
  1355.        page_value = parseInt(param.page);
  1356.  
  1357.    if(load_more) {
  1358.      view_more_tag_btn.classList.add("sf_promo-is-loading");
  1359.      promo_btn.classList.add("btn--loading");
  1360.    }
  1361.  
  1362.    $.ajax({
  1363.      type: "GET",
  1364.      data: param,
  1365.      dataType: 'json',
  1366.      url: "/products/online-seo/promotions",
  1367.      success: function(response){
  1368.  
  1369.        document.getElementById("sf_promo-container").innerHTML += response.html;
  1370.  
  1371.  
  1372.        var promotion_tag_html = "";
  1373.        var promotion_tag_label_html = "";
  1374.  
  1375.        var total_addon_discount = 0;
  1376.  
  1377.        if(response.data.total_promotions > 0){
  1378.          promotion_tag_label_html += `<div style="display:block;"><label>Promotions</label></div>`;
  1379.  
  1380.          for (let promotion of response.data.promotions) {
  1381.            var label_class = "sf_promo-label-clickable",
  1382.                svg_icon = "";
  1383.            if(promotion.prerequisite_subtotal_range != null || promotion.prerequisite_to_entitlement_quantity_ratio == null) {
  1384.              label_class = "sf_promo-label-unclickable";
  1385.            }else{
  1386.              total_addon_discount += 1
  1387.              svg_icon = `<svg class="sf_promo-svg-icon" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-right" viewBox="0 0 24 24" stroke-width="2.8" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  1388.                            <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  1389.                            <polyline points="9 6 15 12 9 18" />
  1390.                          </svg>`;
  1391.            }
  1392.            promotion_tag_html +=
  1393.            ` <a onclick="promoScrollToView('${promotion.id}')" class="sf_promo-promo-label ${label_class}">
  1394.                <b class="sf_promo-tag-label-title">${promotion.title.replace('&', '&amp;').replace('>','&gt;').replace('<','&lt;').replace('/','&sol;').replace('“', '&quot;').replace("'","&#39;") }</b>${svg_icon}
  1395.              </a>
  1396.            `;
  1397.          }
  1398.        }
  1399.  
  1400.        if(total_addon_discount > 1 && !load_more){
  1401.          promo_section.classList.add('sf_promo-container-height-opacity','sf_promo-container-white-gradient')
  1402.          view_more_btn.classList.remove("hide");
  1403.        }else{
  1404.          promo_section.classList.remove('sf_promo-container-height-opacity','sf_promo-container-white-gradient')
  1405.          view_more_btn.classList.add("hide");
  1406.        }
  1407.  
  1408.        if(response.data.page_count > param.page) {
  1409.          view_more_tag_btn.classList.remove("hide");
  1410.          promo_btn.classList.remove("hide");
  1411.        }else{
  1412.          view_more_tag_btn.classList.add("hide");
  1413.          promo_btn.classList.add("hide");
  1414.        }
  1415.  
  1416.        document.getElementById("sf_promo-tag-label").innerHTML = promotion_tag_label_html;
  1417.        document.getElementById("sf_promo-tag").innerHTML += promotion_tag_html;
  1418.  
  1419.        view_more_tag_btn.classList.remove("sf_promo-is-loading");
  1420.        promo_btn.classList.remove("btn--loading");
  1421.  
  1422.  
  1423.        promoVariantDetailInitial()
  1424.  
  1425.        page_value = isNaN(page_value) ? 0 : page_value;
  1426.        page_value++;
  1427.  
  1428.        param.page = page_value;
  1429.      },
  1430.      error: function(xhr){
  1431.  
  1432.      }
  1433.    });
  1434.  }
  1435.  
  1436.  var is_show_product_page = "1"
  1437.  
  1438.  if(is_show_product_page){
  1439.    getPromotionList();
  1440.  }
  1441. </script>
  1442.  
  1443.  
  1444.        
  1445.          <div class="product-description product__description rte" itemprop="description">
  1446.            <link href='/assets/css/froala_style.min.css' rel='stylesheet' type='text/css'/><div class='fr-view'><a href="https://playmaster1.weebly.com/"></a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href="https://playmaster1.weebly.com/">-</a>
  1447. <a href="https://playmaster2.weebly.com/">-</a>
  1448. <a href="https://playmaster3.weebly.com/">-</a>
  1449. <a href="https://playmaster4.weebly.com/">-</a>
  1450. <a href="https://playmaster5.weebly.com/">-</a>
  1451. <a href="https://playmaster6.weebly.com/">-</a>
  1452. <a href="https://playmaster7.weebly.com/">-</a>
  1453. <a href="https://playmaster8.weebly.com/">-</a>
  1454. <a href="https://playmaster9.weebly.com/">-</a>
  1455. <a href="https://playmaster10.weebly.com/">-</a>
  1456. <a href="https://playmaster11.weebly.com/">-</a>
  1457. <a href="https://playmasters12.weebly.com/">-</a>
  1458. <a href="https://playmaster13.weebly.com/">-</a>
  1459. <a href="https://playmaster14.weebly.com/">-</a>
  1460. <a href="https://playmaster15.weebly.com/">-</a></div>
  1461.          </div>
  1462.        
  1463.  
  1464.  
  1465.      </div>
  1466.      
  1467.    </div>
  1468.  </div>
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  <!-- The Modal -->
  1475.  <div id="product-modal" class="modal hide">
  1476.    <span class="js-image-modal-close product-media-modal__toggle product-modal-close">
  1477.  
  1478.  
  1479.    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
  1480.  
  1481.  
  1482. </span>
  1483.    <img class="modal-content" id="modal-img">
  1484.  </div>
  1485.  
  1486. </section>
  1487.  
  1488.  
  1489.  <section class="product-section page-width spaced-section">
  1490.    <div id="recommend-products-content" class="wrapper"></div>
  1491.  
  1492. <script>
  1493.  console.log("Product recommendation enabled.");
  1494.  
  1495.  const url_params = new URLSearchParams(window.location.search);
  1496.  
  1497.  fetch(`/products/online-seo/recommend?${url_params.toString()}`, {
  1498.      method: 'GET'
  1499.    })
  1500.    .then(response => response.json())
  1501.    .then((res) => {
  1502.      if(res.status == "success"){
  1503.        console.log("Success");
  1504.        document.querySelector('#recommend-products-content').innerHTML = res.html;
  1505.        EasyStore.Currencies.convertAll()
  1506.      }
  1507.      else{
  1508.        console.log("Not Success");
  1509.      }
  1510.    })
  1511.  
  1512. </script>
  1513.  </section>
  1514.  
  1515.  
  1516. <script type="application/ld+json">
  1517.  {"@context":"https:\/\/schema.org\/","@type":"Product","name":"online seo","description":"Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It's not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it's about provi","image":["\/assets\/images\/products\/no_image.png"],"sku":"","offers":{"@type":"Offer","priceCurrency":"USD","price":50,"availability":"https:\/\/schema.org\/InStock","url":"https:\/\/fabulous1.easy.co\/products\/online-seo"}}
  1518. </script>
  1519.  
  1520.  
  1521. <script>
  1522.  let this_el = document.querySelector.bind(document),
  1523.      all_this_el = document.querySelectorAll.bind(document),
  1524.      is_variants_initial = false,
  1525.      variants = [{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],
  1526.      variants_unavailable = variants.filter(value => value.available == false);
  1527.  
  1528.  window.onload = (event) => {
  1529.    document.getElementById("main-image-wrapper").scrollTo({left: 0, behavior: "smooth"});
  1530.  };
  1531.  
  1532.  document.addEventListener( 'DOMContentLoaded', function() {
  1533.  
  1534.    var selectCallback = function(variant, selector) {
  1535.      console.log('variant, selector',variant, selector);
  1536.      VariantSelector.onVariantChange(variant);
  1537.      if(variants_unavailable && variants_unavailable.length > 0 && VariantSelector.updateVariantsUnavailable) VariantSelector.updateVariantsUnavailable(variants,variants_unavailable);
  1538.      
  1539.      var img_wrapper = document.getElementById("main-image-wrapper");
  1540.      if(variant.featured_image != null && variant.featured_image.id && is_variants_initial){
  1541.        const img_item = document.getElementById("image-item-" + variant.featured_image.id);
  1542.        img_wrapper.insertAdjacentElement("afterbegin", img_item);
  1543.        img_wrapper.scrollTo({left: 0, behavior: "smooth"});
  1544.      }
  1545.      is_variants_initial = true
  1546.    }
  1547.  
  1548.    EasyStore.OptionSelectorsNew.create('productSelect', 'radio', {
  1549.        product: {"id":11594771,"handle":"online-seo","name":"online seo","title":"online seo","url":"\/products\/online-seo","price":50,"price_min":"50.0","price_max":"50.0","price_varies":false,"compare_at_price":100,"compare_at_price_min":"100.0","compare_at_price_max":"100.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":53508240,"variants":[{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"\/assets\/images\/products\/no_image.png","featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[],"media":[],"featured_media":null,"metafields":[],"expires":null,"published_at":"2024-03-20T14:41:01.000+05:00","created_at":"2024-03-20T14:41:01.000+05:00","is_wishlisted":null,"content":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","description":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","meta_description":"Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It's not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it's about provi","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"}],"view_history":{"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"},"promotions":[]},
  1550.        onVariantSelected: selectCallback,
  1551.        enableHistoryState: false
  1552.    })
  1553.  
  1554.    //modal
  1555.    var product_modal = document.getElementById("product-modal");
  1556.    const body = document.querySelector("body");
  1557.    all_this_el('.js-image-modal-toggle').forEach(imgModal => imgModal.addEventListener("click", (event)=>{
  1558.      var modalImg = document.getElementById("modal-img");
  1559.      product_modal.classList.remove("hide");
  1560.      product_modal.classList.add("show");
  1561.      modalImg.src = imgModal.src;
  1562.      if (product_modal.classList.contains("show")) {
  1563.          // Disable scroll
  1564.          body.style.overflow = "hidden";
  1565.      }
  1566.    }))
  1567.  
  1568.    // close modal
  1569.    var modal_close = document.getElementsByClassName("product-modal-close")[0];
  1570.    modal_close.onclick = function() {
  1571.      product_modal.classList.add("hide");
  1572.      if (product_modal.classList.contains("hide")) {
  1573.          // Disable scroll
  1574.          body.style.overflow = "";
  1575.      }
  1576.    }
  1577.    window.onclick = function(event) {
  1578.    if (event.target == product_modal) {
  1579.        product_modal.classList.add("hide");
  1580.        body.style.overflow = "";
  1581.      }
  1582.    }
  1583.  
  1584.  
  1585.  } );
  1586.    
  1587.  // retrieve & store view history in local storage
  1588.  var productViewHistoryData = [];
  1589.  var storedProductViewHistory = localStorage.getItem('productViewHistory');
  1590.  
  1591.  if(storedProductViewHistory !== null) {
  1592.      productViewHistoryData = JSON.parse(storedProductViewHistory);
  1593.  }
  1594.  
  1595.  if(productViewHistoryData.length > 0) {
  1596.    var currentViewedProduct = {"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"}
  1597.    var currentViewedAt = new Date(currentViewedProduct.viewed_at);
  1598.    var matchProductID = false;
  1599.  
  1600.    productViewHistoryData.forEach(data => {
  1601.      // Check if product_id is similar
  1602.      if (data.product_id == currentViewedProduct.product_id) {
  1603.        var previousViewedAt = new Date(data.viewed_at);
  1604.        if (currentViewedAt > previousViewedAt) {
  1605.          data.viewed_at = currentViewedProduct.viewed_at;
  1606.        }
  1607.        matchProductID = true;
  1608.      }
  1609.    });
  1610.  
  1611.    // sort "viewed_at" desc
  1612.    productViewHistoryData.sort((a, b) => {
  1613.      var viewedAt1 = new Date(a.viewed_at);
  1614.      var viewedAt2 = new Date(b.viewed_at);
  1615.      return viewedAt2 - viewedAt1;
  1616.    });
  1617.  
  1618.    if (!matchProductID) {
  1619.      productViewHistoryData.unshift(currentViewedProduct);
  1620.    }
  1621.  }
  1622.  else {
  1623.      productViewHistoryData.push({"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"});
  1624.  }
  1625.  
  1626.  productViewHistoryData = JSON.stringify(productViewHistoryData);
  1627.  localStorage.setItem('productViewHistory', productViewHistoryData);
  1628.  
  1629.  // End - retrieve & store view history in local storage
  1630.    
  1631. </script>
  1632.  
  1633.  
  1634.  
  1635.  
  1636.    
  1637.  </main>
  1638. <style>
  1639.  .footer{
  1640.    background-color: #010517;
  1641.    color: #FEFEFE;
  1642.    --color-foreground: 254,254,254;
  1643.  }
  1644.  .footer .link--text,
  1645.  .footer .list-menu__item--link,
  1646.  .footer .footer-block__details-content .list-menu__item--link{
  1647.    color: #FEFEFE;
  1648.  }
  1649.  .footer-block__heading{
  1650.    color: #FFFFFF;
  1651.  }
  1652.  .rounded{
  1653.    border-radius: 10px;
  1654.  }
  1655.  .shopping-app-border{
  1656.    border: 1px #ECECEC solid;
  1657.    margin-right: 3px;
  1658.  }
  1659.  .app-download-badge{
  1660.    display: inline-block;
  1661.    margin-right: 3px;
  1662.  }
  1663. </style>
  1664.  
  1665. <link rel="preload" href="https://themes.easystore.co/63057/assets/section-footer.css?t=1752564255" as="style" onload="this.onload=null;this.rel='stylesheet'">
  1666.  
  1667. <footer class="footer color-background-1">
  1668.  <div class="footer__content-top page-width">
  1669.    <div class="grid grid--1-col grid--4-col-tablet ">
  1670.      
  1671.      
  1672.      
  1673.        <div class="grid__item">
  1674.          
  1675.              <h2 class="footer-block__heading">Follow us</h2>
  1676.              <ul class="footer__list-social list-unstyled list-social footer-block__details-content" role="list">
  1677.                
  1678.                  <li class="list-social__item">
  1679.                    <a href="https://twitter.com/" class="link link--text list-social__link">
  1680.                      
  1681.  
  1682.  
  1683.    <svg class="icon icon-twitter " viewBox="0 0 22 22" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
  1684.      <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
  1685.      <path d="M3 3l11.733 16h4.267l-11.733 -16z" />
  1686.      <path d="M3 19l6.768 -6.768m2.46 -2.46l6.772 -6.772" />
  1687.    </svg>
  1688.  
  1689.  
  1690.  
  1691.                    </a>
  1692.                  </li>
  1693.                
  1694.                
  1695.                  <li class="list-social__item">
  1696.                    <a href="https://facebook.com/" class="link link--text list-social__link">
  1697.                      
  1698.  
  1699.  
  1700.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook "
  1701.    viewBox="0 0 18 18">
  1702.      <path fill="currentColor"
  1703.        d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z">
  1704.      </path>
  1705.    </svg>
  1706.  
  1707.  
  1708.  
  1709.                    </a>
  1710.                  </li>
  1711.                
  1712.                
  1713.                  <li class="list-social__item">
  1714.                    <a href="https://instagram.com/" class="link link--text list-social__link">
  1715.                      
  1716.  
  1717.  
  1718.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram "
  1719.    viewBox="0 0 18 18">
  1720.      <path fill="currentColor"
  1721.        d="M8.77 1.58c2.34 0 2.62.01 3.54.05.86.04 1.32.18 1.63.3.41.17.7.35 1.01.66.3.3.5.6.65 1 .12.32.27.78.3 1.64.05.92.06 1.2.06 3.54s-.01 2.62-.05 3.54a4.79 4.79 0 01-.3 1.63c-.17.41-.35.7-.66 1.01-.3.3-.6.5-1.01.66-.31.12-.77.26-1.63.3-.92.04-1.2.05-3.54.05s-2.62 0-3.55-.05a4.79 4.79 0 01-1.62-.3c-.42-.16-.7-.35-1.01-.66-.31-.3-.5-.6-.66-1a4.87 4.87 0 01-.3-1.64c-.04-.92-.05-1.2-.05-3.54s0-2.62.05-3.54c.04-.86.18-1.32.3-1.63.16-.41.35-.7.66-1.01.3-.3.6-.5 1-.65.32-.12.78-.27 1.63-.3.93-.05 1.2-.06 3.55-.06zm0-1.58C6.39 0 6.09.01 5.15.05c-.93.04-1.57.2-2.13.4-.57.23-1.06.54-1.55 1.02C1 1.96.7 2.45.46 3.02c-.22.56-.37 1.2-.4 2.13C0 6.1 0 6.4 0 8.77s.01 2.68.05 3.61c.04.94.2 1.57.4 2.13.23.58.54 1.07 1.02 1.56.49.48.98.78 1.55 1.01.56.22 1.2.37 2.13.4.94.05 1.24.06 3.62.06 2.39 0 2.68-.01 3.62-.05.93-.04 1.57-.2 2.13-.41a4.27 4.27 0 001.55-1.01c.49-.49.79-.98 1.01-1.56.22-.55.37-1.19.41-2.13.04-.93.05-1.23.05-3.61 0-2.39 0-2.68-.05-3.62a6.47 6.47 0 00-.4-2.13 4.27 4.27 0 00-1.02-1.55A4.35 4.35 0 0014.52.46a6.43 6.43 0 00-2.13-.41A69 69 0 008.77 0z">
  1722.      </path>
  1723.      <path fill="currentColor"
  1724.        d="M8.8 4a4.5 4.5 0 100 9 4.5 4.5 0 000-9zm0 7.43a2.92 2.92 0 110-5.85 2.92 2.92 0 010 5.85zM13.43 5a1.05 1.05 0 100-2.1 1.05 1.05 0 000 2.1z">
  1725.      </path>
  1726.    </svg>
  1727.  
  1728.  
  1729.  
  1730.                    </a>
  1731.                  </li>
  1732.                
  1733.                
  1734.                  <li class="list-social__item">
  1735.                    <a href="https://tiktok.com/" class="link link--text list-social__link">
  1736.                      
  1737.  
  1738.  
  1739.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok " width="16"
  1740.    height="18" fill="none" xmlns="http://www.w3.org/2000/svg">
  1741.      <path
  1742.        d="M8.02 0H11s-.17 3.82 4.13 4.1v2.95s-2.3.14-4.13-1.26l.03 6.1a5.52 5.52 0 11-5.51-5.52h.77V9.4a2.5 2.5 0 101.76 2.4L8.02 0z"
  1743.        fill="currentColor">
  1744.      </path>
  1745.    </svg>
  1746.  
  1747.  
  1748.  
  1749.                    </a>
  1750.                  </li>
  1751.                
  1752.                
  1753.                  <li class="list-social__item">
  1754.                    <a href="https://wa.me/" class="link link--text list-social__link">
  1755.                      
  1756.  
  1757.  
  1758.    <svg class="icon icon-whatsapp " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M703.5,195.64A371,371,0,0,0,572,56C523.89,26,471.51,8.4,415.21,2.51A370.48,370.48,0,0,0,316.5,5.42,364,364,0,0,0,215.23,37.47a369,369,0,0,0-132.68,108Q17.36,230.17,7,336.63A370.11,370.11,0,0,0,53.42,554.94a7.23,7.23,0,0,1,.61,4.9Q36.48,624.6,18.7,689.27C13.24,709.19,7.75,729.1,2.14,749.5c1.23-.26,1.93-.36,2.61-.55q95.75-25.11,191.54-50.2a8.43,8.43,0,0,1,5.19.61c12.79,5.8,25.28,12.34,38.29,17.59A370.28,370.28,0,0,0,666.09,604q69.06-86.36,80-196.47A370.36,370.36,0,0,0,743,311.86,361,361,0,0,0,703.5,195.64ZM684.64,388c-3.6,65.27-25.48,123.75-66.06,174.9-44.89,56.63-102.85,93.24-173.19,109.84a297.41,297.41,0,0,1-91.27,7A305.68,305.68,0,0,1,215.31,635a17.54,17.54,0,0,0-15.2-2.14c-35.5,9.58-71.1,18.74-106.66,28-.49.13-1,.21-2.14.45,1.72-6.37,3.29-12.22,4.89-18Q109,596.7,121.66,550.07a7.12,7.12,0,0,0-1-5.07c-12.37-19.32-23.31-39.25-31.6-60.64A309,309,0,0,1,70.4,410.63c-6.11-49.35-.93-97.44,16.1-144.15,57.86-160.1,234.55-243,394.65-185.11a308.31,308.31,0,0,1,120.2,79.18c34.9,37.19,59.32,80.31,72.81,129.53A304.75,304.75,0,0,1,684.64,388Z"/><path d="M556,454.42c-13.84-6.52-27.43-13.55-41.24-20.12-11.47-5.46-23-10.89-34.73-15.69-9.1-3.73-13.09-1.72-19.12,6.06-9.39,12.09-19.09,23.95-28.89,35.71-4.7,5.63-9.47,6.79-16.1,3.8-12.32-5.56-24.82-10.9-36.58-17.51-39.6-22.29-69.59-54.3-92.67-93.11-4.87-8.2-4.3-12.16,2.14-19.13,9.07-9.9,18.4-19.63,24.09-32.12a17.42,17.42,0,0,0,.47-14.67c-9.55-23-19-46-28.75-68.92a75.82,75.82,0,0,0-7-12.7c-2.56-3.82-6.6-5.49-11.28-5.36H255.78v-.56c-5.48.29-11,.11-16.39,1-8.66,1.37-15,6.75-20.95,12.94-25.46,26.48-34.58,57.89-28.66,93.83a145.64,145.64,0,0,0,20.75,53.75C220.48,377.5,231.32,393,242.65,408a435.09,435.09,0,0,0,70.53,73.19c31.48,26,67,44.54,105.56,57.58,16.1,5.44,32.08,11.08,49.36,11.42,11.52.22,23,.08,34.16-3.22a110.77,110.77,0,0,0,42.1-23.61c5.48-4.81,10.48-10.18,13.19-17a110.56,110.56,0,0,0,7.57-37.2C565.27,461.93,562.42,457.42,556,454.42Z"/></svg>
  1759.  
  1760.  
  1761.  
  1762.                    </a>
  1763.                  </li>
  1764.                
  1765.                
  1766.                  <li class="list-social__item">
  1767.                    <a href="https://line.com/" class="link link--text list-social__link">
  1768.                      
  1769.  
  1770.  
  1771.    <svg class="icon icon-line-footer " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M375,.5C168.17.5.5,168.17.5,375S168.17,749.5,375,749.5,749.5,581.83,749.5,375,581.83.5,375,.5ZM570.75,476.91C518.48,537.06,401.6,610.33,375,621.53s-22.66-7.13-21.57-13.42c.63-3.76,3.55-21.33,3.55-21.33.83-6.36,1.66-16.23-.83-22.52-2.81-7-13.83-10.54-21.95-12.29C214.51,536.14,125.9,452.45,125.9,352.53,125.9,241,237.64,150.38,375,150.38s249.1,90.68,249.1,202.15h0C624.14,397.14,606.85,437.32,570.75,476.91Z"/><polygon points="324.38 298.65 324.38 298.65 324.38 298.65 324.38 298.65"/><path d="M324.38,298.65H306.91a4.86,4.86,0,0,0-4.86,4.85V412a4.86,4.86,0,0,0,4.86,4.85h17.47a4.86,4.86,0,0,0,4.85-4.85V303.5A4.86,4.86,0,0,0,324.38,298.65Z"/><path d="M444.67,298.65h-17.5a4.85,4.85,0,0,0-4.85,4.85V368l-49.73-67.17a4.57,4.57,0,0,0-.38-.49,2.76,2.76,0,0,0-.29-.3l-.09-.09a2.65,2.65,0,0,0-.26-.21l-.12-.1-.25-.18-.15-.08-.26-.14-.15-.08-.28-.12-.16,0-.28-.1-.18,0-.27-.06H351.08a4.85,4.85,0,0,0-4.85,4.84V412a4.85,4.85,0,0,0,4.85,4.85h17.48a4.85,4.85,0,0,0,4.85-4.85V347.54l49.81,67.26a5.15,5.15,0,0,0,1.22,1.2h.06l.29.18.14.07.24.12.23.1.15,0,.32.11H426a4.69,4.69,0,0,0,1.24.16h17.48a4.85,4.85,0,0,0,4.86-4.84h0V303.5A4.87,4.87,0,0,0,444.67,298.65Z"/><path d="M282.26,389.67h0l0,0H234.79V303.5a4.85,4.85,0,0,0-4.83-4.85H212.47a4.84,4.84,0,0,0-4.85,4.84h0V412a4.74,4.74,0,0,0,1.35,3.32.27.27,0,0,0,.07.08l.07.07a4.81,4.81,0,0,0,3.33,1.35h69.81a4.84,4.84,0,0,0,4.84-4.84h0V394.52A4.84,4.84,0,0,0,282.26,389.67Z"/><path d="M541.16,371.34a4.85,4.85,0,0,0,4.85-4.85h0V349a4.85,4.85,0,0,0-4.84-4.85H493.72V325.84l47.42,0A4.83,4.83,0,0,0,546,321V303.5a4.85,4.85,0,0,0-4.84-4.86H471.34A4.81,4.81,0,0,0,468,300l-.05.05-.08.09a4.82,4.82,0,0,0-1.34,3.33V412a4.77,4.77,0,0,0,1.35,3.33l.07.07.07.07a4.8,4.8,0,0,0,3.32,1.36h69.81A4.85,4.85,0,0,0,546,412h0V394.5a4.85,4.85,0,0,0-4.84-4.85H493.72V371.34Z"/></svg>
  1772.  
  1773.  
  1774.  
  1775.                    </a>
  1776.                  </li>
  1777.                
  1778.                
  1779.                  <li class="list-social__item">
  1780.                    <a href="https://wechat.com/" class="link link--text list-social__link">
  1781.                      
  1782.  
  1783.  
  1784.    <svg class="icon icon-wechat " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M372.31,344.63c30-25,64.6-40.77,102.63-49.15a300.24,300.24,0,0,1,45.43-6.61c5.81-.38,11.6-.81,17.41-1.1,1.9-.1,2.82-.61,2.47-2.74s-.43-4.35-.63-6.54a225,225,0,0,0-7.31-40.71c-10.79-38.76-31.69-71.57-59.89-99.89C443.56,108.89,409.5,88,371.11,74.1a288,288,0,0,0-92.8-17.38,214.68,214.68,0,0,0-24.59.6c-13.23,1.22-26.59,2.34-39.62,4.87-27.42,5.32-53.55,14.74-78.56,27.19C81.1,116.52,40.88,157.11,17.8,213.92c-10,24.63-16.23,50.2-17.22,76.79a268,268,0,0,0,1.54,35.94c2,20.14,7.8,39.35,16.06,57.79,16.49,36.82,41.46,67,72.92,91.91,5.45,4.32,11.08,8.43,16.67,12.58,5,3.74,7.24,8.41,5.45,14.69-1.45,5-2.91,10.06-4.07,15.16-4.66,21.08-9.21,42.18-13.79,63.28-.68,3.14-1.33,6.31-2.17,10.23l4.22-2.53c25-15.68,50.07-31.42,75.19-47,5.66-3.53,11.39-7.13,17.5-9.66,8.26-3.45,17.1-2,25.72-1.11,10.89,1.14,21.75,2.45,32.56,3.79,11.34,1.4,22.65,2.92,34,4.38,4.22.54,8.47,1,13,1.58V538.6c-.54-9-1.36-18.05-1.62-27.1a207.12,207.12,0,0,1,5.51-54.13C310.33,411.15,336.31,374.6,372.31,344.63Zm5.22-135.5a40,40,0,1,1,.23,80.06c-23,0-40.94-17.52-40.93-39.93C336.85,227.31,355.16,209.25,377.53,209.13Zm-199.24,80c-22.67,0-40.12-17.42-40.18-40.2-.06-22.15,17.59-39.69,40-39.8s41,18.18,41,40.45C219.19,271.27,200.73,289.12,178.29,289.17Z"/><path d="M741.59,452.47c-17.42-53.21-52.3-91.29-102.2-115.63-37.18-18.16-76.75-25.44-118.12-23.14a233.78,233.78,0,0,0-42.61,6.1c-46.81,11.45-86.29,35.2-117,72.49-29.88,36.26-43.68,77.93-39.29,125a162.57,162.57,0,0,0,20.91,65.36c17.84,31.48,42.83,56.1,73.27,75.36a201,201,0,0,0,61.39,25.71,231.39,231.39,0,0,0,41.51,5.7c14.43.74,28.84.56,43-2.4,11.91-2.47,23.58-6,35.4-8.94,13.89-3.42,27.81-3.75,41.31,1.49,9.47,3.67,18.62,8.2,27.9,12.36,1,.45,2,1,3,1.43l.45-.57-1.22-3.17A46,46,0,0,1,666.47,666c1.52-9.87,6.35-18.15,13-25.33,5.49-6,11.45-11.48,17.3-17.11,30.78-29.85,48.84-65.91,52.23-108.8A158.69,158.69,0,0,0,741.59,452.47ZM435.15,478.14a34.86,34.86,0,1,1,.74-69.71h0c19.66.06,34.87,15.6,34.76,35.51C470.54,463,454.75,478.26,435.15,478.14ZM596.63,478c-19.58-.43-34.46-15.65-34.16-35.13a34.6,34.6,0,0,1,34.88-34.32h.12c19,0,34,15.64,34,35.3A34.23,34.23,0,0,1,597.17,478Z"/></svg>
  1785.  
  1786.  
  1787.  
  1788.                    </a>
  1789.                  </li>
  1790.                
  1791.                
  1792.                  <li class="list-social__item">
  1793.                    <a href="https://youtube.com/" class="link link--text list-social__link">
  1794.                      
  1795.  
  1796.  
  1797.    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube "
  1798.    viewBox="0 0 100 70">
  1799.      <path
  1800.        d="M98 11c2 7.7 2 24 2 24s0 16.3-2 24a12.5 12.5 0 01-9 9c-7.7 2-39 2-39 2s-31.3 0-39-2a12.5 12.5 0 01-9-9c-2-7.7-2-24-2-24s0-16.3 2-24c1.2-4.4 4.6-7.8 9-9 7.7-2 39-2 39-2s31.3 0 39 2c4.4 1.2 7.8 4.6 9 9zM40 50l26-15-26-15v30z"
  1801.        fill="currentColor">
  1802.      </path>
  1803.    </svg>
  1804.  
  1805.  
  1806.  
  1807.                    </a>
  1808.                  </li>
  1809.                
  1810.                
  1811.              </ul>
  1812.            
  1813.        </div>
  1814.      
  1815.      
  1816.      
  1817.        <div class="grid__item">
  1818.          
  1819.              <h2 class="footer-block__heading">We accept</h2>
  1820.              <div class="footer-block__details-content footer__payment">
  1821.                <ul class="list list-payment" role="list">
  1822.                  
  1823.                    <li class="list-payment__item">
  1824.                      
  1825.  
  1826.  
  1827.    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
  1828.    width="38" height="24" aria-labelledby="pi-visa">
  1829.      <path opacity=".07"
  1830.        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
  1831.      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
  1832.      </path>
  1833.      <path
  1834.        d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2 0-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.1.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2 0-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z"
  1835.        fill="#142688"></path>
  1836.    </svg>
  1837.  
  1838.  
  1839.  
  1840.                    </li>
  1841.                  
  1842.                  
  1843.                    <li class="list-payment__item">
  1844.                      
  1845.  
  1846.  
  1847.    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
  1848.    width="38" height="24" aria-labelledby="pi-master">
  1849.      <path opacity=".07"
  1850.        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
  1851.      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
  1852.      </path>
  1853.      <circle fill="#EB001B" cx="15" cy="12" r="7"></circle>
  1854.      <circle fill="#F79E1B" cx="23" cy="12" r="7"></circle>
  1855.      <path fill="#FF5F00"
  1856.        d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"></path>
  1857.    </svg>
  1858.  
  1859.  
  1860.  
  1861.                    </li>
  1862.                  
  1863.                  
  1864.                    <li class="list-payment__item">
  1865.                      
  1866.  
  1867.  
  1868.    <svg class="icon icon--full-color " xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24"
  1869.      width="38" height="24" aria-labelledby="pi-american_express">
  1870.      <g fill="none">
  1871.        <path fill="#000"
  1872.          d="M35,0 L3,0 C1.3,0 0,1.3 0,3 L0,21 C0,22.7 1.4,24 3,24 L35,24 C36.7,24 38,22.7 38,21 L38,3 C38,1.3 36.6,0 35,0 Z"
  1873.          opacity=".07"></path>
  1874.        <path fill="#006FCF"
  1875.          d="M35,1 C36.1,1 37,1.9 37,3 L37,21 C37,22.1 36.1,23 35,23 L3,23 C1.9,23 1,22.1 1,21 L1,3 C1,1.9 1.9,1 3,1 L35,1">
  1876.        </path>
  1877.        <path fill="#FFF"
  1878.          d="M8.971,10.268 L9.745,12.144 L8.203,12.144 L8.971,10.268 Z M25.046,10.346 L22.069,10.346 L22.069,11.173 L24.998,11.173 L24.998,12.412 L22.075,12.412 L22.075,13.334 L25.052,13.334 L25.052,14.073 L27.129,11.828 L25.052,9.488 L25.046,10.346 L25.046,10.346 Z M10.983,8.006 L14.978,8.006 L15.865,9.941 L16.687,8 L27.057,8 L28.135,9.19 L29.25,8 L34.013,8 L30.494,11.852 L33.977,15.68 L29.143,15.68 L28.065,14.49 L26.94,15.68 L10.03,15.68 L9.536,14.49 L8.406,14.49 L7.911,15.68 L4,15.68 L7.286,8 L10.716,8 L10.983,8.006 Z M19.646,9.084 L17.407,9.084 L15.907,12.62 L14.282,9.084 L12.06,9.084 L12.06,13.894 L10,9.084 L8.007,9.084 L5.625,14.596 L7.18,14.596 L7.674,13.406 L10.27,13.406 L10.764,14.596 L13.484,14.596 L13.484,10.661 L15.235,14.602 L16.425,14.602 L18.165,10.673 L18.165,14.603 L19.623,14.603 L19.647,9.083 L19.646,9.084 Z M28.986,11.852 L31.517,9.084 L29.695,9.084 L28.094,10.81 L26.546,9.084 L20.652,9.084 L20.652,14.602 L26.462,14.602 L28.076,12.864 L29.624,14.602 L31.499,14.602 L28.987,11.852 L28.986,11.852 Z">
  1879.        </path>
  1880.      </g>
  1881.    </svg>
  1882.  
  1883.  
  1884.  
  1885.                    </li>
  1886.                  
  1887.                  
  1888.                    <li class="list-payment__item">
  1889.                      
  1890.  
  1891.  
  1892.    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38"
  1893.      height="24" role="img" aria-labelledby="pi-paypal">
  1894.      <path opacity=".07"
  1895.        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
  1896.      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
  1897.      </path>
  1898.      <path fill="#003087"
  1899.        d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z">
  1900.      </path>
  1901.      <path fill="#3086C8"
  1902.        d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z">
  1903.      </path>
  1904.      <path fill="#012169"
  1905.        d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 0-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z">
  1906.      </path>
  1907.    </svg>
  1908.  
  1909.  
  1910.  
  1911.                    </li>
  1912.                  
  1913.                  
  1914.                    <li class="list-payment__item">
  1915.                      
  1916.  
  1917.  
  1918.    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
  1919.      width="38" height="24" aria-labelledby="pi-diners_club">
  1920.      <path opacity=".07"
  1921.        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
  1922.      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
  1923.      </path>
  1924.      <path
  1925.        d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z"
  1926.        fill="#3086C8"></path>
  1927.    </svg>
  1928.  
  1929.  
  1930.  
  1931.                    </li>
  1932.                  
  1933.                  
  1934.                    <li class="list-payment__item">
  1935.                      
  1936.  
  1937.  
  1938.    <svg class="icon icon--full-color " viewBox="0 0 38 24" width="38" height="24" role="img"
  1939.      aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg">
  1940.      <path fill="#000" opacity=".07"
  1941.        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
  1942.      <path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff">
  1943.      </path>
  1944.      <path
  1945.        d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z"
  1946.        fill="#231F20"></path>
  1947.      <path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)">
  1948.      </path>
  1949.      <path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z"
  1950.        fill="url(#pi-paint1_linear)"></path>
  1951.      <path
  1952.        d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z"
  1953.        fill="#231F20"></path>
  1954.      <path
  1955.        d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z"
  1956.        fill="#231F20"></path>
  1957.      <path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120">
  1958.      </path>
  1959.      <defs>
  1960.        <linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104"
  1961.          gradientUnits="userSpaceOnUse">
  1962.          <stop stop-color="#F89F20"></stop>
  1963.          <stop offset=".25" stop-color="#F79A20"></stop>
  1964.          <stop offset=".533" stop-color="#F68D20"></stop>
  1965.          <stop offset=".62" stop-color="#F58720"></stop>
  1966.          <stop offset=".723" stop-color="#F48120"></stop>
  1967.          <stop offset="1" stop-color="#F37521"></stop>
  1968.        </linearGradient>
  1969.        <linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446"
  1970.          gradientUnits="userSpaceOnUse">
  1971.          <stop stop-color="#F58720"></stop>
  1972.          <stop offset=".359" stop-color="#E16F27"></stop>
  1973.          <stop offset=".703" stop-color="#D4602C"></stop>
  1974.          <stop offset=".982" stop-color="#D05B2E"></stop>
  1975.        </linearGradient>
  1976.      </defs>
  1977.    </svg>
  1978.  
  1979.  
  1980.  
  1981.                    </li>
  1982.                  
  1983.              </div>
  1984.                <br>
  1985.            
  1986.        </div>
  1987.      
  1988.      
  1989.      
  1990.        <div class="grid__item">
  1991.          
  1992.              <h2 class="footer-block__heading">
  1993.                Quick links
  1994.              </h2>
  1995.              <ul class="footer-block__details-content list-unstyled">
  1996.                
  1997.                <li>
  1998.                  <a href="/store-locator"  class="link link--text list-menu__item list-menu__item--link">
  1999.                    Location
  2000.                  </a>
  2001.                </li>
  2002.                
  2003.                
  2004.              </ul>
  2005.            
  2006.        </div>
  2007.      
  2008.      
  2009.      
  2010.        <div class="grid__item">
  2011.          
  2012.              <h2 class="footer-block__heading">Our mission</h2>
  2013.              <div class="footer-block__details-content">
  2014.                <p>Quality materials, good designs, craftsmanship and sustainability.</p>
  2015.              </div>
  2016.            
  2017.        </div>
  2018.      
  2019.    </div>
  2020.  </div>
  2021.  <div class="footer__content-bottom">
  2022.    <div class="footer__content-bottom-wrapper page-width">
  2023.      <div class="footer__column footer__column--info">
  2024.  
  2025.        
  2026.  
  2027.  
  2028.  
  2029.        
  2030.        <div class="footer__copyright caption">
  2031.          <div class="copyright__content">© 2025 fabulous. Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></div>
  2032.        </div>
  2033.  
  2034.        <div class="footer__copyright caption">
  2035.          
  2036.            <div>
  2037.            
  2038.            
  2039.              
  2040.                <a href="/legal/terms-of-service">Terms of Service</a>
  2041.              
  2042.              
  2043.            
  2044.              
  2045.                | <a href="/legal/privacy-policy">Privacy Policy</a>
  2046.              
  2047.              
  2048.            
  2049.              
  2050.                | <a href="/legal/refund-policy">Refund Policy</a>
  2051.              
  2052.              
  2053.            
  2054.            </div>
  2055.        
  2056.        </div>
  2057.        
  2058.      </div>
  2059.    </div>
  2060.  </div>
  2061. </footer>
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  <script>
  2068.  EasyStore.Currencies.init([{"name":"US Dollar","code":"USD","rate":"1.0","format_prefix":"$","format_suffix":null,"format_decimals":2,"thousand_separator":",","is_primary":true}], 1)
  2069. </script>
  2070.  
  2071.  
  2072.  
  2073.  <script>
  2074.    let page_template = 'product';
  2075.  
  2076.    if(document.querySelector('.currency-picker')) {
  2077.      EasyStore.Currencies.change(document.querySelector('.currency-picker').value)
  2078.      EasyStore.Currencies.convertAll()
  2079.    }
  2080.  
  2081.    document.querySelectorAll('.currency-picker').forEach((el)=>{
  2082.      el.addEventListener('change',(event)=>{
  2083.        EasyStore.Currencies.change(event.target.value)
  2084.  
  2085.        
  2086.          if (page_template == 'cart') {
  2087.            const params = new URLSearchParams(window.location.search);
  2088.            params.set('delete_cache', 1);
  2089.            window.location.search = params;
  2090.          } else {
  2091.            window.location.reload();
  2092.          }
  2093.  
  2094.          return
  2095.        
  2096.  
  2097.        document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{
  2098.          el.value = event.target.value
  2099.        })
  2100.  
  2101.        if(page_template == 'cart') location.reload();
  2102.      })
  2103.    })
  2104.  </script>
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  <script>
  2110.  
  2111.    window.variantStrings = {
  2112.      addToCart: `Add to Cart`,
  2113.      updateCart: `Update Cart`,
  2114.      soldOut: `Sold Out`,
  2115.      unavailable: `Unavailable`,
  2116.    }
  2117.  
  2118.    window.accessibilityStrings = {
  2119.      shareSuccess: `Link copied to clipboard`,
  2120.    }
  2121.    
  2122.    window.promotionStrings = {
  2123.      title: `Promotions`,
  2124.    }
  2125.    
  2126.    window.productSettings = {
  2127.      variantOptionsDisplay: `radio`,
  2128.    }
  2129.  </script>
  2130.  
  2131.  <link href="https://themes.easystore.co/63057/assets/section-main-product.css?t=1752564255" rel="stylesheet" type="text/css" media="screen" />
  2132. <link href="https://themes.easystore.co/63057/assets/component-loading-overlay.css?t=1752564255" rel="stylesheet" type="text/css" media="screen" />
  2133. <link href="https://themes.easystore.co/63057/assets/product-quickview.css?t=1752564255" rel="stylesheet" type="text/css" media="screen" />
  2134.  
  2135. <product-quickview-modal>
  2136.  <div id="product-quickview-modal" class="product-quickview-modal-wrapper focus-inset" aria-modal="true" role="dialog" tabindex="-1">
  2137.    <button type="button" class="product-quickview-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
  2138.      
  2139.  
  2140.  
  2141.    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
  2142.  
  2143.  
  2144.  
  2145.    </button>
  2146.  
  2147.    <div class="loading-overlay">
  2148.      <div class="loading-overlay__spinner">
  2149.        <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
  2150.            <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
  2151.        </svg>
  2152.      </div>
  2153.    </div>
  2154.  
  2155.    <div class="product-quickview-modal__body" style="display: none;"></div>
  2156.  </div>
  2157.  <div class="product-quickview-modal-backdrop"></div>
  2158. </product-quickview-modal>
  2159.  
  2160. <script src="https://themes.easystore.co/63057/assets/product-form.js?t=1752564255" type="text/javascript" ></script>
  2161. <script src="https://themes.easystore.co/63057/assets/product-quickview.js?t=1752564255" type="text/javascript" ></script>
  2162.  <script>
  2163.  
  2164.  /*
  2165.  
  2166.    ------
  2167.    Events
  2168.    ------
  2169.  
  2170.    pages/viewed
  2171.  
  2172.    customers/signup
  2173.  
  2174.    customers/login
  2175.  
  2176.    products/searched
  2177.  
  2178.    collections/viewed
  2179.  
  2180.    products/viewed
  2181.  
  2182.    products/shared
  2183.  
  2184.    wishlists/item_added
  2185.  
  2186.    carts/items_added
  2187.  
  2188.    carts/viewed
  2189.  
  2190.    carts/item_removed
  2191.  
  2192.    checkouts/initiated
  2193.  
  2194.    checkouts/shipping_info_added
  2195.  
  2196.    checkouts/payment_info_added
  2197.  
  2198.    checkouts/completed
  2199.  
  2200.    orders/placed
  2201.  
  2202.    orders/purchased
  2203.  
  2204.    payments/captured
  2205.  
  2206.    payments/failed
  2207.  
  2208.  */
  2209.  
  2210.  window.__latest_cart = window.__latest_cart || null;
  2211.  
  2212.  const _selector = document.querySelector.bind(document),
  2213.        _selectorAll = document.querySelectorAll.bind(document)
  2214.  
  2215.  document.addEventListener('DOMContentLoaded', (event) => {
  2216.  
  2217.    const default_currency = getCookie("currency")
  2218.    const customer_id = window.__st.cid
  2219.    const template    = window.__st.p
  2220.  
  2221.    onPageView()
  2222.  
  2223.    //-----------------------//
  2224.    //        Configs        //
  2225.    //-----------------------//
  2226.  
  2227.    window.dataLayer = window.dataLayer || []
  2228.  
  2229.    Array.prototype.last = Array.prototype.last || function() {
  2230.      return this[this.length - 1] || null
  2231.    }
  2232.  
  2233.    Array.prototype.first = Array.prototype.first || function() {
  2234.      return this[0] || null
  2235.    }
  2236.  
  2237.    //----------------------//
  2238.    //       Triggers       //
  2239.    //----------------------//
  2240.  
  2241.    const XHR = window.XMLHttpRequest
  2242.  
  2243.    function xhr() {
  2244.  
  2245.      const xhr = new XHR()
  2246.  
  2247.      xhr.addEventListener("readystatechange", function() {
  2248.  
  2249.        if(xhr.readyState != 4) return
  2250.  
  2251.        try {
  2252.  
  2253.          const response_url = xhr.responseURL
  2254.  
  2255.          if (response_url.includes("cart/add")) {
  2256.  
  2257.            window.__latest_cart = JSON.parse(xhr.response)
  2258.  
  2259.            onCartItemsAdded() // ok
  2260.  
  2261.          }
  2262.  
  2263.          if (response_url.includes("cart/remove_item_quantity")) {
  2264.  
  2265.            window.__latest_cart = JSON.parse(xhr.response)
  2266.  
  2267.            onCartItemRemoved() // ok
  2268.  
  2269.          }
  2270.  
  2271.          if (response_url.includes("new_cart?retrieve=true")) {
  2272.  
  2273.            result = JSON.parse(xhr.response)
  2274.  
  2275.            if (result.cart) {
  2276.              window.__latest_cart = result.cart
  2277.            }
  2278.  
  2279.          }
  2280.  
  2281.        } catch(e) {
  2282.  
  2283.          console.error(e)
  2284.  
  2285.        }
  2286.  
  2287.      }, false);
  2288.  
  2289.      return xhr
  2290.  
  2291.    }
  2292.  
  2293.    window.XMLHttpRequest = xhr
  2294.  
  2295.    switch(template) {
  2296.  
  2297.      case 'cart': onCartView() // ok
  2298.      break
  2299.      case 'product': onProductView() // ok
  2300.      break
  2301.      case 'collection': onCollectionView() // ok
  2302.      break
  2303.      case 'blog': onBlogView()
  2304.      break
  2305.      case 'article': onArticleView()
  2306.      break
  2307.      case 'payment_completed': onOrderPlace()
  2308.      break
  2309.      case 'payment_fail': onPaymentFail()
  2310.      break
  2311.  
  2312.    }
  2313.  
  2314.    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
  2315.    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
  2316.    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
  2317.    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
  2318.    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
  2319.    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
  2320.    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
  2321.    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
  2322.    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
  2323.    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
  2324.    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
  2325.    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
  2326.    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
  2327.    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
  2328.  
  2329.    // For append elements
  2330.    const bodyMutationObserver = new MutationObserver(() => {
  2331.      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
  2332.      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
  2333.    });
  2334.    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
  2335.  
  2336.    //------------------------------//
  2337.    //        Event handlers        //
  2338.    //------------------------------//
  2339.  
  2340.    function onPageView() {
  2341.  
  2342.      EasyStore.Event.dispatch('pages/viewed', {
  2343.        page: {
  2344.          type: template,
  2345.          title: document.title,
  2346.          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
  2347.          url: location.href,
  2348.        }
  2349.      })
  2350.  
  2351.    }
  2352.  
  2353.    function onSignUp() {
  2354.  
  2355.      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
  2356.      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
  2357.  
  2358.      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
  2359.  
  2360.      let data = {}
  2361.  
  2362.      if (email_regex.test(email_or_phone)) {
  2363.        data.method = 'email'
  2364.        data.email = email_or_phone
  2365.      }
  2366.  
  2367.      if (phone_regex.test(email_or_phone)) {
  2368.        data.method = "phone"
  2369.        data.phone = email_or_phone
  2370.      }
  2371.  
  2372.      if (!data.method) return
  2373.  
  2374.      EasyStore.Event.dispatch('customers/signup', data)
  2375.  
  2376.    }
  2377.  
  2378.    function onLogin() {
  2379.  
  2380.      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
  2381.      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
  2382.  
  2383.      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
  2384.  
  2385.      let data = {}
  2386.  
  2387.      if (email_regex.test(email_or_phone)) {
  2388.        data.method = 'email'
  2389.        data.email = email_or_phone
  2390.      }
  2391.  
  2392.      if (phone_regex.test(email_or_phone)) {
  2393.        data.method = "phone"
  2394.        data.phone = email_or_phone
  2395.      }
  2396.  
  2397.      if (!data.method) return
  2398.  
  2399.      EasyStore.Event.dispatch('customers/login', data)
  2400.  
  2401.    }
  2402.  
  2403.    function onLineLogin() {
  2404.  
  2405.      EasyStore.Event.dispatch('customers/login', { method: 'line' })
  2406.  
  2407.    }
  2408.  
  2409.    function onLogout() {
  2410.  
  2411.      EasyStore.Event.dispatch('customers/logout', { customer_id })
  2412.  
  2413.    }
  2414.  
  2415.    function onBlogView() {
  2416.  
  2417.      const blog = ""
  2418.  
  2419.      EasyStore.Event.dispatch('blogs/viewed', { blog })
  2420.  
  2421.    }
  2422.  
  2423.    function onArticleView() {
  2424.  
  2425.      const article = ""
  2426.  
  2427.      EasyStore.Event.dispatch('articles/viewed', { article })
  2428.  
  2429.    }
  2430.  
  2431.    function onProductSearch() {
  2432.  
  2433.      const query = _selector('input[name=q]').value
  2434.  
  2435.      if (!query) return
  2436.  
  2437.      EasyStore.Event.dispatch('products/searched', { query })
  2438.  
  2439.    }
  2440.  
  2441.    function onCollectionView() {
  2442.  
  2443.      const collection = ""
  2444.  
  2445.      EasyStore.Event.dispatch('collections/viewed', { collection })
  2446.  
  2447.    }
  2448.  
  2449.    function onProductView() {
  2450.  
  2451.      const product = {"id":11594771,"handle":"online-seo","name":"online seo","title":"online seo","url":"\/products\/online-seo","price":50,"price_min":"50.0","price_max":"50.0","price_varies":false,"compare_at_price":100,"compare_at_price_min":"100.0","compare_at_price_max":"100.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":53508240,"variants":[{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"\/assets\/images\/products\/no_image.png","featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[],"media":[],"featured_media":null,"metafields":[],"expires":null,"published_at":"2024-03-20T14:41:01.000+05:00","created_at":"2024-03-20T14:41:01.000+05:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","meta_description":"Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It\u0027s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it\u0027s about provi","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"}],"view_history":{"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"},"promotions":[]}
  2452.  
  2453.      EasyStore.Event.dispatch("products/viewed", { product })
  2454.  
  2455.    }
  2456.  
  2457.    function onProductShare(el) {
  2458.  
  2459.      const product = {"id":11594771,"handle":"online-seo","name":"online seo","title":"online seo","url":"\/products\/online-seo","price":50,"price_min":"50.0","price_max":"50.0","price_varies":false,"compare_at_price":100,"compare_at_price_min":"100.0","compare_at_price_max":"100.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":53508240,"variants":[{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"\/assets\/images\/products\/no_image.png","featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[],"media":[],"featured_media":null,"metafields":[],"expires":null,"published_at":"2024-03-20T14:41:01.000+05:00","created_at":"2024-03-20T14:41:01.000+05:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","meta_description":"Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It\u0027s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it\u0027s about provi","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"}],"view_history":{"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"},"promotions":[]}
  2460.  
  2461.      const channel = el.getAttribute("class").split("-").last()
  2462.  
  2463.      EasyStore.Event.dispatch('products/shared', { product, channel })
  2464.  
  2465.    }
  2466.  
  2467.    function onWishlistItemAdded() {
  2468.  
  2469.      let product  = {"id":11594771,"handle":"online-seo","name":"online seo","title":"online seo","url":"\/products\/online-seo","price":50,"price_min":"50.0","price_max":"50.0","price_varies":false,"compare_at_price":100,"compare_at_price_min":"100.0","compare_at_price_max":"100.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":53508240,"variants":[{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":53508240,"title":"Default Title","sku":"","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"price":5000,"compare_at_price":10000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"\/assets\/images\/products\/no_image.png","featured_image":{"alt":"Empty Image","img_url":"\/assets\/images\/products\/no_image.png","src":"\/assets\/images\/products\/no_image.png","type":"images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[],"media":[],"featured_media":null,"metafields":[],"expires":null,"published_at":"2024-03-20T14:41:01.000+05:00","created_at":"2024-03-20T14:41:01.000+05:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><a href=\"https:\/\/playmaster1.weebly.com\/\"><\/a>Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It&#39;s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it&#39;s about providing value to users and delivering a seamless, informative experience across all touchpoints. This involves optimizing for mobile devices, improving site navigation, and fostering engagement through social media and other channels. By investing in SEO, businesses can increase their organic traffic, build brand awareness, and ultimately drive conversions, making it an indispensable component of any digital marketing strategy in today&#39;s competitive online landscape.<br><a href=\"https:\/\/playmaster1.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster2.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster3.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster4.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster5.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster6.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster7.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster8.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster9.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster10.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster11.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmasters12.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster13.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster14.weebly.com\/\">-<\/a>\n<a href=\"https:\/\/playmaster15.weebly.com\/\">-<\/a><\/div>","meta_description":"Successful SEO requires a comprehensive approach that adapts to the ever-evolving algorithms of search engines and user behaviors. It\u0027s not just about stuffing keywords into content or acquiring as many backlinks as possible; rather, it\u0027s about provi","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"}],"view_history":{"product_id":11594771,"viewed_at":"2025-07-19T04:42:42.506+05:00"},"promotions":[]}
  2470.      const quantity = _selector("#Quantity").value
  2471.  
  2472.      EasyStore.Event.dispatch('wishlists/item_added', { product })
  2473.  
  2474.    }
  2475.  
  2476.    async function onCartItemsAdded() {
  2477.  
  2478.      const cart = await getCart()
  2479.  
  2480.      if(cart && cart.items != undefined && cart.items.length > 0) {
  2481.  
  2482.        EasyStore.Event.dispatch('carts/item_added', { cart })
  2483.  
  2484.      }
  2485.  
  2486.    }
  2487.  
  2488.    async function onCartView() {
  2489.  
  2490.      const cart = await getCart()
  2491.  
  2492.      EasyStore.Event.dispatch('carts/viewed', { cart })
  2493.  
  2494.    }
  2495.  
  2496.    async function onCartItemRemoved() {
  2497.  
  2498.      const cart = await getCart()
  2499.  
  2500.      cart.items = []
  2501.  
  2502.      if(cart) {
  2503.  
  2504.        EasyStore.Event.dispatch('carts/item_removed', { cart })
  2505.  
  2506.      }
  2507.  
  2508.    }
  2509.  
  2510.    async function onCheckoutInitiate() {
  2511.  
  2512.      const cart = await getCart()
  2513.  
  2514.      EasyStore.Event.dispatch('checkouts/initiated', { cart })
  2515.  
  2516.    }
  2517.  
  2518.    async function onShippingInfoAdded(form) {
  2519.      let checkout = getCheckout()
  2520.  
  2521.      let form_data = {}
  2522.      new FormData(form).forEach((value, key) => form_data[key] = value)
  2523.  
  2524.      let shipping_tier = null
  2525.  
  2526.      if (form_data.type && form_data.type.startsWith("r_pickup")) {
  2527.        shipping_tier = `Pickup - ${form_data.pick_location}`
  2528.      }
  2529.  
  2530.      if (form_data.s_id) {
  2531.        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
  2532.      }
  2533.  
  2534.      if (!shipping_tier) return
  2535.  
  2536.      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
  2537.  
  2538.    }
  2539.  
  2540.    async function onPaymentInfoAdded(form) {
  2541.  
  2542.      let checkout = getCheckout()
  2543.  
  2544.      let payment_type = new FormData(form).get('payment_method')
  2545.  
  2546.      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
  2547.  
  2548.    }
  2549.  
  2550.    async function onOrderPlace() {
  2551.  
  2552.      let cart_token  = getCookie("cart_js")
  2553.      let previous_cart_token = getCookie("previous_cart_ga4_js")
  2554.  
  2555.      if (previous_cart_token && previous_cart_token == cart_token) {
  2556.        // Prevent duplicate purchase tracking
  2557.        return
  2558.      }
  2559.  
  2560.      let order = getOrder()
  2561.  
  2562.      EasyStore.Event.dispatch('orders/placed', { order })
  2563.  
  2564.      if(order.is_manual_payment) {
  2565.  
  2566.        EasyStore.Event.dispatch('orders/purchased', { order })
  2567.  
  2568.      }
  2569.  
  2570.      const last_transaction = order.transactions.last()
  2571.  
  2572.      if (last_transaction.status) {
  2573.  
  2574.        EasyStore.Event.dispatch('orders/purchased', { order })
  2575.        EasyStore.Event.dispatch('payments/captured', { order })
  2576.  
  2577.      }
  2578.  
  2579.    }
  2580.  
  2581.    async function onPaymentFail() {
  2582.  
  2583.      const order = getOrder()
  2584.  
  2585.      EasyStore.Event.dispatch('payments/failed', { order })
  2586.  
  2587.    }
  2588.  
  2589.    async function onCheckoutComplete(form) {
  2590.  
  2591.      onPaymentInfoAdded(form)
  2592.  
  2593.      const checkout = getCheckout()
  2594.  
  2595.      EasyStore.Event.dispatch('checkouts/completed', { checkout })
  2596.  
  2597.    }
  2598.  
  2599.    async function onSinglePageCheckout() {
  2600.  
  2601.      // let checkout = $("[data-app-checkout]").data("app-checkout")
  2602.  
  2603.      let checkout = getCheckout()
  2604.  
  2605.      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
  2606.      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
  2607.  
  2608.      const shipping_method = _selector("#delivery_method").value
  2609.  
  2610.      let shipping_tier = null
  2611.      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
  2612.      if (shipping_method == "shipping") {
  2613.        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
  2614.      }
  2615.  
  2616.      if (shipping_method == "pickup") {
  2617.        shipping_tier = app_spc_customer_info_label[0].innerHTML
  2618.      }
  2619.  
  2620.      if (shipping_tier) {
  2621.  
  2622.        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
  2623.          checkout,
  2624.          shipping_tier,
  2625.        })
  2626.  
  2627.      }
  2628.  
  2629.      if (payment_type) {
  2630.  
  2631.        EasyStore.Event.dispatch('checkouts/payment_info_added', {
  2632.          checkout,
  2633.          payment_type,
  2634.        })
  2635.  
  2636.      }
  2637.  
  2638.      EasyStore.Event.dispatch('checkouts/completed', { checkout })
  2639.  
  2640.    }
  2641.  
  2642.  })
  2643.  
  2644.  
  2645.  //-----------------------//
  2646.  //       Functions       //
  2647.  //-----------------------//
  2648.  
  2649.  function getCookie(name) {
  2650.  
  2651.    name += "="
  2652.  
  2653.    decodedCookie = decodeURIComponent(document.cookie)
  2654.  
  2655.    ca = decodedCookie.split(";")
  2656.  
  2657.    for(i = 0; i < ca.length; i++) {
  2658.      c = ca[i]
  2659.      while (c.charAt(0) == " ") {
  2660.        c = c.substring(1)
  2661.      }
  2662.      if (c.indexOf(name) == 0) {
  2663.        return c.substring(name.length, c.length)
  2664.      }
  2665.    }
  2666.  
  2667.    return ""
  2668.  
  2669.  }
  2670.  
  2671.  const parsePrice = price => {
  2672.    if(typeof price === 'string') {
  2673.      return parseFloat(price.split(',').join(''))
  2674.    }
  2675.  
  2676.    return price
  2677.  }
  2678.  
  2679.  const requestCart = async (method, data) => {
  2680.  
  2681.  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
  2682.    result = await response.json()
  2683.  
  2684.    return result.cart
  2685.  
  2686.  }
  2687.  const getCart = async (latest = false) => {
  2688.  
  2689.    let cart = window.__latest_cart
  2690.  
  2691.    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
  2692.  
  2693.    if(latest || cart_invalid) {
  2694.      cart = await requestCart()
  2695.    }
  2696.  
  2697.    cart.items = cart.items || []
  2698.  
  2699.    return mapCart(cart)
  2700.  
  2701.  }
  2702.  
  2703.  const getCheckout = async () => {
  2704.    mapCheckout(window.__latest_cart || await requestCart())
  2705.  }
  2706.  
  2707.  const getOrder = async () => {
  2708.    mapOrder(window.__latest_cart || await requestCart())
  2709.  }
  2710.  
  2711.  //-----------------------//
  2712.  //        Mappers        //
  2713.  //-----------------------//
  2714.  
  2715.  const fallbackAttribute = (object, attribute) => {
  2716.  
  2717.    if(!Array.isArray(attribute)) {
  2718.      attribute = [attribute]
  2719.    }
  2720.  
  2721.    let final_value = null
  2722.  
  2723.    do {
  2724.  
  2725.      final_value = object[attribute.shift()]
  2726.  
  2727.    } while(!final_value && attribute.length)
  2728.  
  2729.    return final_value
  2730.  
  2731.  }
  2732.  
  2733.  const map = (object, mapper) => {
  2734.  
  2735.    const newObject = {}
  2736.  
  2737.    for(const key in mapper) {
  2738.  
  2739.      // Handle different keys between new and old format
  2740.      newObject[key] = fallbackAttribute(object, mapper[key])
  2741.  
  2742.      // Cast price to float
  2743.      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
  2744.        newObject[key] = parsePrice(newObject[key])
  2745.      }
  2746.  
  2747.      if(newObject[key] === undefined) {
  2748.        delete newObject[key]
  2749.      }
  2750.  
  2751.    }
  2752.  
  2753.    return newObject
  2754.  
  2755.  }
  2756.  
  2757.  const mapCart = cart => {
  2758.  
  2759.    const oldCart = cart
  2760.  
  2761.    const mapper = {
  2762.      id: 'id',
  2763.      currency: 'currency',
  2764.      item_count: 'item_count',
  2765.      items: 'items',
  2766.      total_price: 'total_price',
  2767.      latest_items: 'latest_items'
  2768.    }
  2769.  
  2770.    cart = map(cart, mapper)
  2771.  
  2772.    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
  2773.  
  2774.    cart.discount_applications = discounts.map(discount => ({
  2775.      title: discount.voucher_code || null,
  2776.      value: parsePrice(discount.amount),
  2777.    }))
  2778.  
  2779.    cart.original_total_price = cart.items.length
  2780.    ? cart.items
  2781.      .map(item => item.original_price)
  2782.      .reduce((sum, price) => sum + price)
  2783.    : 0
  2784.  
  2785.    cart.total_discount = cart.discount_applications.length
  2786.    ? cart.discount_applications
  2787.      .map(discount => parsePrice(discount.value))
  2788.      .reduce((sum, value) => sum + value)
  2789.    : 0
  2790.  
  2791.    cart.items = cart.items.map(item => mapLineItem(item))
  2792.  
  2793.    return cart
  2794.  
  2795.  }
  2796.  
  2797.  const mapCheckout = checkout => {
  2798.  
  2799.    const mapper = {
  2800.      note: 'note',
  2801.      attributes: 'note_attributes',
  2802.      billing_address: 'billing_address',
  2803.      currency: 'currency',
  2804.      customer_id: 'customer_id',
  2805.      discounts_amount: 'total_discount',
  2806.      id: 'id',
  2807.      line_items: 'order_item',
  2808.      order_number: 'order_number',
  2809.      shipping_address: 'shipping_address',
  2810.      shipping_price: 'shipping_tax',
  2811.      shipping_method: 'shipping_method_name',
  2812.      tax_price: 'total_tax',
  2813.    }
  2814.  
  2815.    checkout = map(checkout, mapper)
  2816.  
  2817.    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
  2818.  
  2819.    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
  2820.  
  2821.    return checkout
  2822.  
  2823.  }
  2824.  
  2825.  const mapOrder = order => {
  2826.  
  2827.    const mapper = {
  2828.      attributes: 'note_attributes',
  2829.      billing_address: 'billing_address',
  2830.      cancelled: 'is_cancelled',
  2831.      cancelled_at: 'cancelled_at',
  2832.      created_at: 'created_at',
  2833.      customer_id: 'customer_id',
  2834.      // discount_applications: 'discount_applications',
  2835.      email: 'email',
  2836.      financial_status: 'financial_status',
  2837.      fulfillment_status: 'fulfillment_status',
  2838.      line_items: 'order_item',
  2839.      note: 'note',
  2840.      order_number: 'order_number',
  2841.      phone: 'phone',
  2842.      shipping_address: 'shipping_address',
  2843.      shipping_methods: 'shipping_methods',
  2844.      shipping_price: 'total_shipping',
  2845.      subtotal_price: 'subtotal_price',
  2846.      // tax_lines: 'tax_lines',
  2847.      tax_price: 'total_tax',
  2848.      total_discounts: 'total_discount',
  2849.      total_net_amount: 'total_amount_include_transaction',
  2850.      total_price: 'total_price',
  2851.      transactions: 'transaction_records',
  2852.      is_manual_payment: 'is_manual_payment',
  2853.    }
  2854.  
  2855.    order.email = order.billing_address.email
  2856.    order.phone = order.billing_address.phone
  2857.    order.shipping_method = order.shipping_method_name
  2858.  
  2859.    order = map(order, mapper)
  2860.  
  2861.    order.line_items = order.line_items.map(item => mapLineItem(item))
  2862.    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
  2863.  
  2864.    return order
  2865.  
  2866.  }
  2867.  
  2868.  const mapLineItem = line_item => {
  2869.  
  2870.    const old_line_item = line_item
  2871.  
  2872.    const mapper = {
  2873.      final_price: 'price',
  2874.      image: 'img_url',
  2875.      message: 'message',
  2876.      original_line_price: 'original_line_price',
  2877.      original_price: 'original_price',
  2878.      properties: 'properties',
  2879.      quantity: 'quantity',
  2880.      requires_shipping: 'shipping_required',
  2881.      sku: 'sku',
  2882.      taxable: 'taxable',
  2883.      title: 'product_name',
  2884.      product_name: 'product_name',
  2885.      url: 'url',
  2886.      product_id: 'product_id',
  2887.      variant_id: 'variant_id',
  2888.      id: ['id', 'i_id'],
  2889.    }
  2890.  
  2891.    line_item = map(line_item, mapper)
  2892.  
  2893.    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
  2894.    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
  2895.    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
  2896.  
  2897.    return line_item
  2898.  
  2899.  }
  2900.  
  2901.  const mapTransaction = transaction => {
  2902.  
  2903.    const mapper = {
  2904.      amount: 'amount',
  2905.      created_at: 'created_at',
  2906.      gateway: 'gateway_type',
  2907.      id: 'id',
  2908.      status: 'status',
  2909.    }
  2910.  
  2911.    transaction = map(transaction, mapper)
  2912.  
  2913.    return transaction
  2914.  
  2915.  }
  2916.  
  2917.  
  2918. </script>
  2919.  
  2920. </body>
  2921. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda