<!DOCTYPE html>
<html lang="en" class="MainHtml">

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Error 404</title>
  <meta name="description" content="Error 404" />
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="icon" href="https://cdn.revcent.com/img/favicon.png">


  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/vendor/bootstrap.min.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/vendor/slick.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/vendor/slick-theme.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/sal.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/feather.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/fontawesome-5/css/all.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/euclid-circulara.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/swiper.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/magnify.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/odometer.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/animation.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/bootstrap-select.min.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/jquery-ui.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/magnigy-popup.min.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/plugins/plyr.css">
  <link rel="stylesheet" href="https://cdn.revcent.com/css/plugins/sweetalert/sweetalert.css" type="text/css" />
  <link rel="stylesheet" href="https://cdn.revcent.com/public-new/css/style.css">
  <style>
    html {
      --gutterWidth: 16px;
      --scrollbarWidth: 0px;
      --windowWidth: calc(100vw - var(--scrollbarWidth));
      --layoutWidth: calc(var(--windowWidth) - var(--gutterWidth)*2);
      --layoutWidthMax: 1080px;
      --viewWidthSmall: 375;
      --viewWidthMedium: 600;
      --viewWidthLarge: 1112;
      --viewportScale: calc(var(--windowWidth)/var(--viewWidthLarge));
      --paddingTop: 160px;
      --paddingBottom: 160px;
      --colPadNone: 0;
      --colPadSmall: 8px;
      --colPadNormal: 16px;
      --colPadMedium: 16px;
      --colPadLarge: 16px;
      --colPadXLarge: 16px;
      --rowGap: 8px;
      --navSignupBg: #b966e721;
      --navSignupColor: #b966e7;
      --navSignupBgH: #b966e7;
      --navSignupColorH: #ffffff;
      --shadow-blue: 0px 6px 34px rgb(119 138 255 / 18%);
      --shadow-12: 0px 18px 36px -12px rgba(0, 0, 0, 0.1), 0px 30px 45px -30px rgba(50, 50, 93, 0.25)
    }


    @media (min-width:768px) {
      html {
        --colPadMedium: 32px;
        --colPadLarge: 64px;
        --colPadXLarge: 64px;
      }
    }

    @media (min-width:991px) {
      html {
        --colPadXLarge: 112px;
      }
    }

    @media (min-width:1112px) {
      html {
        --layoutWidth: var(--layoutWidthMax);
        --gutterWidth: calc(var(--windowWidth)/2 - var(--layoutWidth)/2)
      }
    }
  </style>

  <style>
    :root {
      --color-body: #474a51;
      --largeHeroLWidthMax: 1080px;
      --largeHeroLWidth: var(--largeHeroLWidthMax);
      --largeHeroGWidth: calc(var(--windowWidth)/2 - var(--largeHeroLWidth)/2);
      --largeHeroOffsetX: var(--largeHeroGWidth);
      --largeHeroTransformX: calc(var(--largeHeroGWidth)*0.8);
      --largeHeroPaddingTop: calc(116*1px);
      --largeHeroGHeight: calc(100% + var(--largeHeroPaddingTop) + var(--largeHeroTransformX)*0.212);
    }
  </style>

  <style>
    .Section {
      --sectAngleSin: var(--angleNormalSin);
      --sectAngle: 0;
      --sectPaddingSmallMax: 110;
      --sectPaddingXSmallMax: 72;
      --sectPaddingMin: 72;
      --sectPaddingMax: var(--sectPaddingNormalMax);
      --sectPaddingTopMax: var(--sectPaddingMax);
      --sectPaddingBottomMax: var(--sectPaddingMax);
      --sectionMarginBottom: 0;
      --sectAngleHeight: calc(var(--windowWidth)*var(--sectAngleSin));
      --sectAnglePaddingBaseMin: 100;
      --sectAnglePaddingBaseMax: var(--sectPaddingMax);
      --sectAnglePaddingTopBaseMax: var(--sectAnglePaddingBaseMax);
      --sectAnglePaddingBottomBaseMax: var(--sectAnglePaddingBaseMax);
      --sectAngleMaxHeight: none;
      --sectionOverflow: hidden;
      --sectionTransformOrigin: 100% 0;
      --sectionBackgroundOverflow: visible;
      position: relative;
      z-index: 1;
      margin-bottom: var(--sectionMarginBottom);
      color: var(--textColor);
      scroll-margin-top: calc(var(--fNvHeight) + var(--fNvSpacing) - var(--sectPaddingTop))
    }


    .Section {
      --sectPaddingNormalMax: 128
    }


    .Sect--hasStickyNav {
      --sectionOverflow: visible
    }

    .Sect--hasBorderTop .Sect__background {
      border-top: 1px solid rgba(230, 235, 241, .52)
    }

    .Sect--paddingSmall {
      --sectPaddingMax: var(--sectPaddingSmallMax)
    }

    .Sect--paddingXSmall {
      --sectPaddingMax: var(--sectPaddingXSmallMax)
    }

    .Section {
      --sectAnglePaddingTopBase: calc(var(--sectAnglePaddingBaseMin)*1px + (var(--sectAnglePaddingTopBaseMax) - var(--sectAnglePaddingBaseMin))*(var(--windowWidth)/737 - 0.50882px));
      --sectAnglePaddingBottomBase: calc(var(--sectAnglePaddingBaseMin)*1px + (var(--sectAnglePaddingBottomBaseMax) - var(--sectAnglePaddingBaseMin))*(var(--windowWidth)/737 - 0.50882px));
      --sectPaddingTopGutterWidth: var(--gutterWidth);
      --sectAnglePaddingTop: calc(var(--sectAngleHeight) - var(--sectAngleSin)*var(--sectPaddingTopGutterWidth) + var(--sectAnglePaddingTopBase));
      --sectAnglePaddingBottom: calc(var(--sectAngleHeight) - var(--sectAngleSin)*var(--gutterWidth) + var(--sectAnglePaddingBottomBase));
      --sectPaddingTop: calc(var(--sectPaddingMin)*1px + (var(--sectPaddingTopMax) - var(--sectPaddingMin))*(var(--windowWidth)/737 - 0.50882px));
      --sectPaddingBottom: calc(var(--sectPaddingMin)*1px + (var(--sectPaddingBottomMax) - var(--sectPaddingMin))*(var(--windowWidth)/737 - 0.50882px));
    }

    @media (max-width:375px) {
      .Section {
        --sectAnglePaddingTopBase: calc(var(--sectAnglePaddingBaseMin)*1px);
        --sectAnglePaddingBottomBase: calc(var(--sectAnglePaddingBaseMin)*1px);
        --sectPaddingTop: calc(var(--sectPaddingMin)*1px);
        --sectPaddingBottom: calc(var(--sectPaddingMin)*1px)
      }
    }

    @media (min-width:1112px) {
      .Section {
        --sectAnglePaddingTopBase: calc(var(--sectAnglePaddingTopBaseMax)*1px);
        --sectAnglePaddingBottomBase: calc(var(--sectAnglePaddingBottomBaseMax)*1px);
        --sectPaddingTop: calc(var(--sectPaddingTopMax)*1px);
        --sectPaddingBottom: calc(var(--sectPaddingBottomMax)*1px)
      }
    }

    .Sect__background {
      position: relative;
      height: 100%;
      max-height: var(--sectAngleMaxHeight);
      width: 100%;
      top: 0;
      left: 0;
      transform-origin: var(--sectionTransformOrigin);
      transform: skewY(var(--sectAngle));
      background: var(--backgroundColor);
      overflow: hidden
    }

    .Sect__background--isTransparent {
      background: hsla(0, 0%, 100%, .2);
      -webkit-backdrop-filter: blur(7px);
      backdrop-filter: blur(7px)
    }

    .Sect__masked {
      overflow: var(--sectionOverflow)
    }

    .Sect__container {
      position: relative;
      z-index: 1;
      display: flex;
      justify-content: center;
      min-height: var(--sectionMinHeight)
    }

    .Sect__layoutContainer {
      width: 100%;
      margin: 0 var(--colPadNormal)
    }

    .Sect__layout {
      padding: var(--sectPaddingTop) 0 var(--sectPaddingBottom)
    }

    .Sect--angleTop {
      --sectPaddingTop: var(--sectAnglePaddingTop);
      --sectAngle: var(--angleNormal)
    }

    .Sect--angleBottom {
      --sectionTransformOrigin: 0 0
    }

    .Sect--angleBoth,
    .Sect--angleBottom {
      --sectPaddingBottom: var(--sectAnglePaddingBottom);
      --sectionMarginBottom: calc(var(--sectAngleHeight)*-1)
    }

    .Sect--angleBoth {
      --sectPaddingTop: var(--sectAnglePaddingTop);
      --sectAngle: var(--angleNormal)
    }

    .Sect--bleed3 {
      --sectPaddingBottom: 0
    }

    .Sect__backgroundMask {
      position: absolute;
      width: 100%;
      height: 100%;
      overflow: var(--sectionBackgroundOverflow)
    }

    .Sect--paddingTopNone {
      --sectPaddingTop: 0
    }

    .Sect--paddingBottomNone {
      --sectPaddingBottom: 0
    }
  </style>
  <style>
    .MainHtml {
      --filterShadowMedium: 0px 3px 11.5px -3.5px rgba(50, 50, 93, 0.25), 0px 3.8px 7.5px -3.7px rgba(0, 0, 0, 0.1);
      --scrollbarOffset: 10px;
      --angleNormal: -6deg;
      --angleStrong: -12deg;
      --angleNormalSin: 0.106;
      --angleStrongSin: 0.212;
      --fNvHeight: 60px;
      --fNvSpacing: 48px;
      color-scheme: only light
    }

    .MainHtml *,
    .MainHtml :after,
    .MainHtml :before {
      box-sizing: border-box;
    }



    .MainHtml[data-loading] {
      overflow-x: hidden
    }

    .MainHtml[data-loading] :after,
    .MainHtml[data-loading] :before,
    .MainHtml[data-loading] :not([data-transition-in]) {
      transition: none !important
    }

    .MainBody {
      margin: 0;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    .SiteFooterSection {
      --sectionBackgroundOverflow: hidden;
    }

    .SiteFooterSection {
      z-index: 2;
    }
  </style>

  <style>
    .MainHtml {
      --heroImgShadow: rgba(50, 50, 93, 0.25);
    }

    .Page-Theme-0 {
      --blendBackground: #d6d6d6;
      --blendIntersection: #d6d6d6;
      --blendForeground: #d6d6d6;
      --pageThemeBg: #fdfafd;
      --pageThemeLink: #800080;
      --pageThemeLinkH: #800080;
      --badgeColor: #6b6b6b;
      --badgeBackground: #bfbfbf21;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #9400FF;
      --pageThemeSectionLinkH: #9400FF;
      --pageThemeSectionLinkHBg: #80008021;
      --navSignupBg: #f1ddff;
      --navSignupColor: #192335;
      --navSignupBgH: #9400FF;
      --navSignupColorH: #ffffff;
    }

    .Page-Theme-1 {
      --blendBackground: #9400ff;
      --blendIntersection: #9400ff;
      --blendForeground: #9400ff;
      --pageThemeBg: #fdfafd;
      --pageThemeLink: #9400ff;
      --pageThemeLinkH: #c068ff;
      --pageThemeLinkDark: #b959ff;
      --badgeColor: #af1eff;
      --badgeBackground: #b966e721;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #9400FF;
      --pageThemeSectionLinkH: #9400FF;
      --pageThemeSectionLinkHBg: #80008021;
      --navSignupBg: #f1ddff;
      --navSignupColor: #192335;
      --navSignupBgH: #9400FF;
      --navSignupColorH: #ffffff;
      --heroImgShadow: rgba(148, 0, 255, 0.5);
    }

    .Page-Theme-2 {
      --blendBackground: #ff2171;
      --blendIntersection: #ff2171;
      --blendForeground: #ff2171;
      --pageThemeBg: #fffafc;
      --pageThemeLink: #FF2171;
      --pageThemeLinkH: #ff679e;
      --badgeColor: #FF2171;
      --badgeBackground: #ffebf2;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #ff0f80;
      --pageThemeSectionLinkH: #ff0f80;
      --pageThemeSectionLinkHBg: #ffeaf2;
      --navSignupBg: #ff217121;
      --navSignupColor: #192335;
      --navSignupBgH: #FF2171;
      --navSignupColorH: #ffffff;
      --heroImgShadow: rgba(255, 16, 127, 0.5);
    }

    .Page-Theme-3 {
      --blendBackground: #ff3802;
      --blendIntersection: #ff3802;
      --blendForeground: #ff3802;
      --pageThemeBg: #fffcfb;
      --pageThemeLink: #e75703;
      --pageThemeLinkH: #e75703;
      --badgeColor: #ff7300;
      --badgeBackground: #ff39010f;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #ff3802;
      --pageThemeSectionLinkH: #ff3802;
      --pageThemeSectionLinkHBg: #ffd89d85;
      --navSignupBg: #ffd89d85;
      --navSignupColor: #192335;
      --navSignupBgH: #ff3802;
      --navSignupColorH: #ffffff;
      --heroImgShadow: rgba(255, 57, 1, 0.5);
    }

    .Page-Theme-4 {
      --blendBackground: #00c918;
      --blendIntersection: #00c918;
      --blendForeground: #00c918;
      --pageThemeBg: #fbfffc;
      --pageThemeLink: #00ab14;
      --pageThemeLinkH: #00ab14;
      --badgeColor: #00c918;
      --badgeBackground: #eafff2;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #00c918;
      --pageThemeSectionLinkH: #119b44;
      --pageThemeSectionLinkHBg: #c5ffdb;
      --navSignupBg: #daffe8;
      --navSignupColor: #192335;
      --navSignupBgH: #14bf53;
      --navSignupColorH: #ffffff;
      --heroImgShadow: rgba(4, 201, 25, 0.5);
    }

    .Page-Theme-5 {
      --blendBackground: #1b8bff;
      --blendIntersection: #1b8bff;
      --blendForeground: #1b8bff;
      --pageThemeBg: #fbfdff;
      --pageThemeLink: #082d7a;
      --pageThemeLinkH: #082d7a;
      --pageThemeLinkDark: #1b8bff;
      --badgeColor: #082d7a;
      --badgeBackground: #c3f5ff;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #1b8bff;
      --pageThemeSectionLinkH: #082d7a;
      --pageThemeSectionLinkHBg: #c3f5ff;
      --navSignupBg: #1a8bff2b;
      --navSignupColor: #192335;
      --navSignupBgH: #1b8bff;
      --navSignupColorH: #ffffff;
      --heroImgShadow: rgba(26, 139, 255, 0.5);
    }

    .Page-Theme-6 {
      --blendBackground: #930077;
      --blendIntersection: #930077;
      --blendForeground: #930077;
      --pageThemeBg: #fffbfe;
      --pageThemeLink: #930077;
      --pageThemeLinkH: #930077;
      --badgeColor: #930077;
      --badgeBackground: #fff0fc;
      --pageThemeSectionLink: #fff;
      --pageThemeSectionLinkBg: #930077;
      --pageThemeSectionLinkH: #930077;
      --pageThemeSectionLinkHBg: #fff;
      --navSignupBg: #ffeafb;
      --navSignupColor: #192335;
      --navSignupBgH: #930077;
      --navSignupColorH: #fff;
      --heroImgShadow: rgba(147, 0, 119, 0.5);
    }


    .hero-img.page-theme-hero-img {
      box-shadow: 0 50px 100px -20px rgba(50, 50, 93, 0.25), 0 30px 60px -30px rgba(50, 50, 93, 0.25)
    }

    .bg-color-page-theme {
      background-color: var(--pageThemeBg) !important;
    }

    a.bg-page-theme-nav-signup {
      background: var(--navSignupBg) !important;
      color: var(--navSignupColor) !important;
    }

    a.bg-page-theme-nav-signup:hover,
    a.bg-page-theme-nav-signup:focus {
      background: var(--navSignupBgH) !important;
      color: var(--navSignupColorH) !important;
    }


    a.page-theme-link {
      color: var(--pageThemeLink);
    }

    a.page-theme-link.dark-link {
      color: var(--pageThemeLinkDark);
    }

    a.page-theme-link:hover,
    a.page-theme-link:focus {
      color: var(--pageThemeLinkH);
    }

    .page-theme-section-link {
      background: var(--pageThemeSectionLinkBg) !important;
      color: var(--pageThemeSectionLink) !important;
    }

    a.page-theme-section-link:hover,
    button.page-theme-section-link:hover {
      background: var(--pageThemeSectionLinkHBg) !important;
      color: var(--pageThemeSectionLinkH) !important;
    }


    .rbt-badge-6.page-theme-badge {
      background: var(--badgeBackground) !important;
      color: var(--badgeColor) !important;
    }

    .SeparatorSlant {
      --slantInset: 0px;
      --slantWidth: var(--gutterWidth);
      --slantMinWidth: 80px;
      --slantHeight: 40px;
      --slantIntersectionTop: calc(var(--slantSetHeight) - var(--slantHeight));
      --slantIntersectionInset: 0px;
      --slantIntersectionWidth: var(--gutterWidth);
      --slantIntersectionBackground: var(--blendIntersection);
      --slantMaxInset: calc(var(--layoutWidth)/2);
      --slantStartMax: calc(var(--layoutWidth) + var(--gutterWidth));
      --slantStart: calc(var(--slantStartMax) - var(--slantInset) + var(--slantBorderOffset));
      --slantBorderOffset: 0px;
      right: var(--slantStart);
      width: calc(var(--slantWidth) + var(--slantInset) - var(--slantBorderOffset)*2);
      position: absolute;
      height: var(--slantHeight);
      background: var(--slantColor);
      overflow: hidden;
    }

    .SeparatorSlantSet {
      --slantSetHeight: 72px;
      --slantSetAlignCenterOffset: -40px;
      --slantSetSubpixelOffset: 0;
      --slantSetAngle: var(--angleNormal);
      position: absolute;
      height: var(--slantSetHeight);
      width: 100%;
      transform: skewY(var(--slantSetAngle)) translateY(var(--slantSetSubpixelOffset));
      overflow: hidden;
    }



    .SeparatorSlant__intersection {
      position: absolute;
      top: var(--slantIntersectionTop);
      height: var(--slantHeight);
      transform: translateY(-0.25px);
      background: var(--slantIntersectionBackground);
      left: calc(var(--slantWidth) - var(--slantIntersectionWidth));
      width: calc(var(--slantIntersectionWidth) + var(--slantIntersectionInset));
    }

    .SeparatorSlantSet--alignCenter {
      top: var(--slantSetAlignCenterOffset);
    }

    .SeparatorSlantSet--alignEnd {
      top: calc(var(--slantSetHeight)*-1);
    }

    .SeparatorSlant--insetNormal {
      --slantInset: calc(var(--slantMaxInset)*0.25);
    }

    .SeparatorSlant--accentNone:first-of-type {
      --slantColor: var(--blendBackground);
    }

    .SeparatorSlant--widthNormal {
      --slantWidth: 160px;
    }

    .SeparatorSlantSet--BottomLeft .SeparatorSlant.SeparatorSlant--accentNone {
      --slantColor: var(--blendForeground);
    }

    .SeparatorSlantSet--BottomLeft .SeparatorSlant {
      top: var(--slantIntersectionTop);
    }

    .SeparatorSlant--insetSmall {
      --slantInset: calc(var(--slantMaxInset)*0.125);
    }

    .SeparatorSlant:nth-of-type(3) {
      --slantColor: transparent;
    }

    .SeparatorSlant--intersectionInsetSmall {
      --slantIntersectionInset: calc(var(--slantMaxInset)*0.25);
    }

    .SeparatorSlant--intersectionWidthNormal {
      --slantIntersectionWidth: 160px;
    }

    .SeparatorSlantSet--BottomRight .SeparatorSlant__intersection,
    .SeparatorSlantSet--TopRight .SeparatorSlant__intersection {
      left: auto;
      right: calc(var(--slantWidth) - var(--slantIntersectionWidth));
    }


    .SeparatorSlantSet--TopRight {
      --slantSetSubpixelOffset: -0.35px;
      top: 0;
      right: 0;
      transform-origin: 100% 0;
    }

    .SeparatorSlantSet--TopLeft {
      top: 0;
      left: 0;
      transform-origin: 100% 0;
    }

    .SeparatorSlantSet--BottomLeft {
      left: 0;
      bottom: 0;
      transform-origin: 0 100%;
    }


    .SeparatorSlantSet--BottomRight .SeparatorSlant,
    .SeparatorSlantSet--TopRight .SeparatorSlant {
      right: auto;
      left: var(--slantStart);
    }
  </style>

  <style>
    .rbt-btn:hover {
      background-color: var(--color-primary);
      color: var(--color-white);
      transform: translate3d(0, -2px, 0);
      box-shadow: var(--shadow-7);
    }

    .rbt-btn.btn-white {
      box-shadow: none;
    }

    .rbt-btn.btn-white:hover {
      box-shadow: var(--shadow-7);
      background: var(--color-white);
      color: var(--color-heading);
    }


    .rbt-header.rbt-transparent-header {
      max-width: 1450px;
      margin-left: auto;
      margin-right: auto;
    }

    .bg-violet-opacity-2 {
      background: rgba(226, 213, 252, 0.8) !important;
      color: var(--color-violet) !important;
    }

    a.text-link:hover {
      cursor: pointer;
    }

    .quick-access>li.account-access {
      padding-left: 10px;
      margin-left: 20px;
      margin-right: 20px;
      position: relative;
    }

    .rbt-header .logo a img {
      max-height: 21px;
    }

    .rbt-banner-1 {
      background: var(--gradient-2) !important;
      background: linear-gradient(180deg, #f4e9fd87 0%, #FFFFFF 100%) !important;
    }

    .rbt-banner-1.variation-2 .content,
    .rbt-banner-1.variation-2 .content .inner .title,
    .rbt-banner-1.variation-2 .content .inner .description {
      padding-right: 0%;
    }

    .product-hero .content,
    .product-hero .content .inner .title,
    .product-hero .content .inner .description {
      padding-right: 0%;
    }


    .quick-access>li.account-access:first-child::after {
      background: none;
    }

    .height-450 {
      height: 450px;
    }

    .height-350 {
      height: 350px;
    }

    .height-250 {
      height: 250px;
    }

    .height-450,
    .height-350,
    .height-250 {
      display: flex;
      align-items: center;
    }

    .rbt-section-gap-2.simple-page,
    .rbt-section-gap.simple-page {
      padding-top: 0px;
      margin-top: -20px
    }

    @media only screen and (max-width: 1199px) {

      .height-450,
      .height-350,
      .height-250 {
        height: auto
      }
    }

    @media only screen and (min-width: 1199px) {
      .rbt-section-gap-2.simple-page {
        padding-top: 0px;
        /* margin-top: -90px */
      }
    }

    .rbt-section-gap-2 {
      padding: 60px 0;
    }

    a.a-no-link:hover {
      cursor: default;
    }

    .form-group input:focus {
      outline: none;
    }

    .form-group input:focus-visible {
      border-color: #efefef;
      outline: none;
    }

    .form-group.focused label {
      color: var(--color-gray);
    }

    .form-group span.focus-border {
      background-color: var(--color-gray);
    }

    .quick-access>li.account-access::after {
      background: none !important;
    }



    .inner-skew-angle {
      position: absolute;
      height: 100px;
      width: 100%;
      transform: skewY(-6deg) translateY(0);
      overflow: hidden;
    }

    .product-separator-skew .inner-skew-angle {
      transform: skewY(var(--angleNormal)) translateY(0);
    }



    .large-hero h1 span.hero-title-1,
    .large-hero h1 span.hero-title-2 {
      color: #fff;
      text-shadow: 1px 1px #00000052;
    }

    .large-hero .large-hero-inner,
    .product-hero .product-hero-inner {
      top: 0px;
    }

    @media only screen and (min-width: 991px) {

      .large-hero .second-col {
        top: 40px;
        margin-bottom: 30px;
      }

      .bg-color-light-blue {
        background-color: #f0f2ff;
      }
    }

    @media only screen and (max-width: 991px) {

      .large-hero .second-col,
      .product-hero .second-col {
        top: 100px;
        height: 100%;
      }
    }

    .large-hero.height-750,
    .product-hero.height-750 {
      height: 850px;
      display: flex;
      align-items: center;
    }

    @media only screen and (min-width: 991px) {
      .large-hero.height-750.register-hero {
        height: 1250px;
        display: flex;
        align-items: center;
      }

      .large-hero.height-750.pricing-hero {
        height: 950px;
        display: flex;
        align-items: center;
      }

      .large-hero.height-750.contact-hero {
        height: 950px;
        display: flex;
        align-items: center;
      }
    }

    @media only screen and (max-width: 991px) {

      .large-hero.height-750,
      .product-hero.height-750 {
        height: auto;
      }
    }

    .large-hero.rbt-banner-area.rbt-banner-1 {
      background: none !important;
    }

    @media only screen and (min-width: 768px) and (max-width: 991px) {
      .product-hero {
        padding: 0 60px;
        padding-top: 100px;
        padding-bottom: 100px;
      }
    }

    @media only screen and (min-width: 1200px) {

      .large-hero.rbt-banner-1.variation-2 .content .inner h1.title,
      .large-hero.rbt-banner-large-hero .content .inner h1.title,
      .product-hero .content .inner h1.title,
      .product-hero-inner h1.title {
        line-height: .95;
      }
    }



    #hero-background-wrapper {
      position: absolute;
      top: auto;
      left: calc(var(--largeHeroOffsetX)*-1);
      left: 0;
      width: var(--windowWidth);
      height: var(--largeHeroGHeight);
      transform-origin: var(--largeHeroTransformX) 100%;
      transform: skewY(-12deg);
      overflow: hidden;
    }

    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li>a,
    .white-hero-nav .quick-access>li>a {
      color: #fff !important;
      text-shadow: 1px 1px #00000036;
    }

    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li>a:hover,
    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li>a:focus,
    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li>a:active,
    .white-hero-nav .quick-access>li>a:hover {
      color: #fff !important;
      opacity: .6;
    }

    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li:hover>a,
    .white-hero-nav .rbt-header .mainmenu-nav .mainmenu>li.active>a {
      color: #fff !important;
      opacity: .6;
    }

    .large-hero .large-hero-inner.inner .sub-description,
    .product-hero .product-hero-inner.inner .sub-description {
      max-width: 80%;
    }

    .large-hero.rbt-banner-1 .content .inner .title,
    .large-hero.rbt-banner-large-hero .content .inner .title,
    .product-hero.rbt-banner-1 .content .inner .title {
      letter-spacing: -0.03em;
      color: #000;
    }

    .large-hero .large-hero-inner.inner .sub-description .hero-quote {
      max-width: 80%;
      color: #5a5a5a !important;
    }

    @media only screen and (min-width: 1200px) {
      .product-hero .about-style-1 .thumbnail-wrapper .thumbnail.image-1 {
        left: 200px;
        top: 0px;
      }

    }

    @media only screen and (max-width: 767px) {

      .large-hero .large-hero-inner.inner .sub-description,
      .product-hero .product-hero-inner.inner .sub-description {
        color: #000;
        max-width: 100%;
        background-color: #ffffffc4;
        padding: 10px;
        border-radius: 5px;
        text-align: center;
      }

      .large-hero .large-hero-inner.inner .sub-description .hero-quote {
        max-width: 100%;
      }

      .rbt-banner-1.variation-2 .content .inner .description {
        font-size: 24px;
      }

      .product-hero .content .inner .description {
        font-size: 24px;
      }

      .product-hero {
        padding: 0 15px;
        padding-top: 90px;
        padding-bottom: 50px;
      }

      .product-hero .image-1 {
        left: 0px;
        top: 20px;
      }
    }

    @media only screen and (max-width: 991px) {

      .large-hero.rbt-banner-1 .content .inner .title,
      .large-hero.rbt-banner-large-hero .content .inner .title {
        font-size: 65px;
        margin-left: -1px;
        line-height: 1;
      }

      .product-hero .content .inner .title {
        font-size: 40px;
      }

      .product-hero-inner h1.title {
        font-size: 40px;
        margin-left: -3px;
      }
    }

    @media only screen and (min-width: 992px) and (max-width: 1199px) {

      .large-hero.rbt-banner-1 .content .inner .title,
      .large-hero.rbt-banner-large-hero .content .inner .title {
        font-size: 90px;
        margin-left: -5px;
      }

      .product-hero .content .inner .title {
        font-size: 50px;
      }

      .product-hero-inner h1.title {
        font-size: 50px;
        margin-left: -3px;
      }
    }

    @media only screen and (min-width: 1200px) {

      .large-hero.rbt-banner-1 .content .inner .title,
      .large-hero.rbt-banner-large-hero .content .inner .title {
        font-size: 130px;
        margin-left: -10px;
      }

      .product-hero .content .inner .title {
        font-size: 60px;
      }

      .product-hero-inner h1.title {
        font-size: 75px;
        margin-left: -5px;
      }
    }

    @media only screen and (max-width: 991px) {
      .hero-small-mb {
        margin-bottom: 100px;
      }
    }

    .small-shadow {
      box-shadow: 0px 1px 4px rgb(215 216 222 / 97%);
    }

    .rbt-card.small-shadow {
      box-shadow: 0px 1px 4px rgb(215 216 222 / 97%);
    }

    .rbt-card.white-bordered {
      border: 3px solid #fff;
      border-radius: 8px;
    }

    .rbt-card.white-bordered-large {
      border: 4px solid #fff;
      border-radius: 10px;
    }

    .card-top-white-bordered {
      border-top: 3px solid #ffffff;
    }

    .card-top-grey-bordered {
      border-top: 3px solid #737373;
    }

    .rbt-card.thin-border {
      border: 2px solid #fff;
    }

    .rbt-card.thinner-border {
      border: 1px solid #fff;
    }

    .advance-pricing .pricing-middle {
      height: 100%;
      background: var(--color-lighter);
      padding: 60px 50px;
      border-radius: 0px;
    }

    .advance-pricing .price-wrapper .price-amount {
      font-size: 60px;
      text-align: center;
      display: block;
      color: var(--color-heading);
      font-weight: 700;
      line-height: 1;
    }

    .advance-pricing .price-wrapper .price-amount sup {
      font-size: 16px;
      top: -34px;
    }

    .advance-pricing .main-title {
      margin-bottom: 10px;
    }

    .rbt-contact-form.contact-form-style-1.semi-trans-hero-bg {
      background: #ffffffe8;
    }

    .rbt-contact-form.contact-form-style-1.semi-trans-hero-outline {
      outline: 10px solid #ffffff21;
    }

    .rbt-round-btn::after {
      background: #f6f6f64f;
    }

    .popup-mobile-menu .inner-wrapper .inner-top .close-button {
      height: 25px;
    }

    .popup-mobile-menu .inner-wrapper .inner-top .logo a img {
      max-height: 20px;
    }

    p {
      color: #425466;
    }

    .page-hero-wrapper {
      position: absolute;
      bottom: 0;
      left: 0;
      top: 0;
      width: 100%;
      height: 450px;
      transform-origin: 0 100%;
      transform: skewY(var(--angleNormal));
      will-change: transform;
      z-index: 0;
    }

    .page-hero-canvas {
      position: relative;
      display: block;
      width: inherit;
      height: 100%;
    }

    .hero-thumbnail .small {
      font-size: .75em;
    }

    .section-separator-wrapper {
      position: absolute;
      bottom: 0;
      left: 0;
      width: 100%;
      transform-origin: 0 100%;
      transform: skewY(var(--angleNormal));
      will-change: transform;
      z-index: 0;
    }

    .section-separator-wrapper.skew-flat {
      transform: skewY(0);
    }

    .section-separator-wrapper.section-separator-250 {
      height: 250px;
    }

    .section-separator-wrapper.section-separator-300 {
      height: 300px;
    }

    .section-separator-wrapper.section-separator-400 {
      height: 400px;
    }

    .section-separator-wrapper.section-separator-500 {
      height: 500px;
    }

    .section-separator-wrapper.section-separator-10 {
      height: 10px;
    }

    .section-separator-canvas {
      position: absolute;
      display: block;
      width: inherit;
      height: 100%;
    }

    .gradient-canvas {
      image-rendering: pixelated;
    }

    @media only screen and (max-width: 787px) {}

    @media only screen and (max-width: 991px) {}


    @media only screen and (min-width: 992px) and (max-width: 1199px) {}

    @media only screen and (min-width: 1200px) {}


    .rbt-btn.btn-secondary:hover {
      background-color: var(--color-secondary);
    }

    .rbt-btn.btn-violet:hover {
      background: var(--color-violet);
    }

    .rbt-card-nav a:hover,
    .rbt-card-nav a:focus,
    .rbt-card-nav a:active {
      text-decoration: none;
      outline: none;
      color: var(--pageThemeLink);
    }

    .text-strong {
      font-weight: 600;
    }

    .rbt-badge-card.large-badge {
      padding: 3px 10px;
      font-size: 14px;
    }

    .v-align-super {
      vertical-align: super;
    }

    div.developer-example-wrap {
      border: 1px solid #ffffff26;
      border-radius: 14px;
    }

    .thumbnail-wrapper .thumbnail.outlined-img img {
      outline: 10px solid #ffffff21;
    }

    .developer-example-wrap pre {
      border-radius: 14px;
    }

    .thumbnail-wrapper .thumbnail img.hero-img {
      border-radius: 6px;
    }

    .thumbnail-wrapper.inner-thumbnail {
      padding: 4px;
      border-radius: 6px;
      overflow: hidden;
    }

    .thumbnail-wrapper.inner-thumbnail .thumbnail {
      border-radius: 6px;
      overflow: hidden;
    }

    @media only screen and (max-width: 991px) {
      .row.extra-padding.extra-padding-y .mt--20 {
        margin-top: 20px;
      }
    }

    @media only screen and (min-width: 992px) {
      .row.extra-padding {
        --bs-gutter-x: 5rem;
      }

      .row.extra-padding.extra-padding-y {
        --bs-gutter-y: 5rem;
      }

      .row.extra-padding.extra-padding-y .mt--20 {
        margin-top: var(--bs-gutter-y) !important;
      }
    }

    span.title-numeral {
      font-size: 30px;
      font-weight: 600;
      color: #ffffff;
      line-height: 1.26;
    }

    div.title-numeral-wrap {
      position: absolute;
      margin-top: 0px;
      margin-left: -55px;
      height: 40px;
      width: 40px;
      border-radius: 50px;
      background: #616161;
      text-align: center;
    }



    div.title-numeral-wrap-v2 span.title-numeral {
      font-size: 25px;
      font-weight: 600;
      color: #ffffff;
      line-height: 1.17;
      color: var(--color-secondary) !important;
    }

    div.title-numeral-wrap-v2 {
      position: absolute;
      margin-top: 4px;
      margin-left: -45px;
      height: 30px;
      width: 30px;
      border-radius: 30px;
      background: #8000806e;
      text-align: center;
      background: var(--secondary-opacity) !important;
    }

    @media (min-width: 992px) {
      div.row.row-extra-padding>[class^="col-"] {
        padding-right: 40px;
      }
    }

    .rbt-card-body.card-body-padded {
      padding: 40px;
    }

    .rbt-card.card-nopadded,
    .rbt-card.card-nopadded .rbt-card-body {
      padding: 0px;
    }

    .rbt-card-col-1 {
      padding: 70px;
      padding-top: 30px;
      padding-bottom: 30px;
      z-index: 1;
    }

    .card-gradient {
      height: 100%;
      opacity: .26;
    }

    .card-gradient-wrap {
      height: 100%;
      /* position: relative; */
    }

    .card-gradient-overlay {
      height: 100%;
      position: relative;
      background: linear-gradient(90deg, rgb(255 255 255) 0%, rgb(255 255 255 / 92%) 56%, rgb(255 255 255 / 20%) 100%);
    }

    .card-gradient-overlay-vertical {
      height: 100%;
      position: relative;
      background: linear-gradient(0deg, rgb(255 255 255) 0%, rgb(255 255 255 / 92%) 56%, rgb(255 255 255 / 20%) 100%);
    }

    .card-gradient-wrap .card-icon {
      position: absolute;
      font-size: 100px;
    }

    .bg-card-color-white-bordered {
      background: var(--color-white);
      background-color: var(--color-white) !important;
      border-radius: 4px;
    }

    .tab-button-style-2 li a.active {
      color: var(--color-violet);
    }

    .tab-button-style-2 li a::after {
      background-color: var(--color-violet);
    }

    ul.tab-button-style-2 li a:hover,
    ul.tab-button-style-2 li a:focus,
    ul.tab-button-style-2 li a:active {
      color: var(--pageThemeLink);
    }

    .advance-tab-button-1 .tab-button-list .tab-button {
      padding: 25px 25px;
    }
  </style>

  <style>
    .lifespan-lg-wrap .advance-tab-button-1 .tab-button-list .tab-button::after {
      border-left: 20px solid var(--color-lighter);
    }

    .lifespan-lg-wrap .advance-tab-button-1 .tab-button-list .tab-button::before {
      background: var(--color-lighter);
      box-shadow: none;
    }

    .does-it-all-tab-content {
      padding: 30px;
      border-radius: 10px;
    }
  </style>

  <style>
    .bg-rose-opacity {
      background: #f6a1e430 !important;
      color: #a90087 !important;
    }

    .color-rose {
      color: #a90087 !important;
    }


    .color-coral-dark {
      color: #f26e42 !important;
    }

    .color-orange {
      color: #ff3901 !important;
    }

    .color-blue {
      color: #005cb7 !important;
    }

    .color-blue-dark {
      color: #004f9e !important;
    }
    .color-info-dark {
      color: #00aacc !important;
    }

    .color-green {
      color: #139135 !important;
    }
    .color-secondary-dark {
      color: #8627ba !important;
    }

    .color-pink-dark {
      color: #e03b71 !important;
    }

    .color-hot-pink {
      color: #ff2171 !important;
    }

    .bg-color-violet-opacity-light {
      background: #80008005 !important;
    }

    .bg-color-hot-pink {
      background-color: #ff2171 !important;
    }

    .color-purple {
      color: #6e00be !important;
    }

    .bg-color-purple {
      background-color: #6e00be !important;
    }

    .bg-color-purple-1 {
      background: #aa7ae90a !important;
    }

    .bg-color-purple-2 {
      background: #aa7ae913 !important;
    }

    .bg-color-purple-3 {
      background: #aa7ae924 !important;
    }

    .bg-color-purple-4 {
      background: #aa7ae930 !important;
    }


    .bg-color-purple-5 {
      background: #b966e7 !important;
    }

    .bg-color-purple-6 {
      background: #ab45e3 !important;
    }

    .bg-color-purple-7 {
      background: #a427e9 !important;
    }

    .bg-color-orange {
      background-color: #ff3802 !important;
    }

    .bg-color-orange-1 {
      background: #ff380208 !important;
    }

    .bg-color-orange-2 {
      background: #ff380213 !important;
    }

    .bg-color-orange-3 {
      background: #ff380220 !important;
    }

    .bg-color-orange-4 {
      background: #ff38022b !important;
    }

    .bg-color-orange-5l {
      background: #ff6c2e !important;
    }

    .bg-color-orange-5 {
      background: #ff5f1c !important;
    }

    .bg-color-orange-6 {
      background: #ff4d01 !important;
    }

    .bg-color-orange-7 {
      background: #ff3901 !important;
    }


    .bg-color-pink {
      background-color: #ff2171 !important;
    }

    .bg-color-pink-1 {
      background: #ff217108 !important;
    }

    .bg-color-pink-2 {
      background: #ff217113 !important;
    }

    .bg-color-pink-3 {
      background: #ff217124 !important;
    }

    .bg-color-pink-4 {
      background: #ff217130 !important;
    }


    .bg-color-pink-5 {
      background: #f93491 !important;
    }

    .bg-color-pink-6 {
      background: #ff278d !important;
    }

    .bg-color-pink-7 {
      background: #ff0f80 !important;
    }

    .bg-color-pink-8 {
      background: #fa0074 !important;
    }

    .bg-color-blue {
      background-color: #1a8bff !important;
    }

    .bg-color-blue-1 {
      background: #1a8bff08 !important;
    }

    .bg-color-blue-2 {
      background: #1a8bff13 !important;
    }

    .bg-color-blue-3 {
      background: #1a8bff24 !important;
    }

    .bg-color-blue-4 {
      background: #1a8bff30 !important;
    }


    .bg-color-blue-5l {
      background: #007eff !important;
    }

    .bg-color-blue-5 {
      background: #0076ee !important;
    }

    .bg-color-blue-6 {
      background: #006bd6 !important;
    }

    .bg-color-blue-7 {
      background: #005cb7 !important;
    }

    .bg-color-woo-purple {
      background: #7f54b2 !important;
    }

    .bg-color-woo-purple-light {
      background: #7f54b21a !important;
    }

    .bg-color-dark-purple-1 {
      background: #980ee4 !important;
    }

    .bg-color-dark-purple-2 {
      background: #8805d0 !important;
    }

    .bg-color-dark-purple-3 {
      background: #6b00a5 !important;
    }

    .bg-color-dark-purple-4 {
      background: #580088 !important;
    }

    .bg-color-pink-1 {
      background: #db709312 !important;
    }

    .bg-color-light-xl {
      background-color: #fafcff !important;
    }


    .bg-color-google-blue {
      background-color: #4285F4 !important;
    }

    .bg-color-google-green {
      background-color: #0F9D58 !important;
    }

    .bg-color-dark-green {
      background-color: #1a9139 !important;
    }

    .bg-color-google-red {
      background-color: #DB4437 !important;
    }

    .bg-color-google-yellow {
      background-color: #F4B400 !important;
    }

    .bg-color-white-light-opacity {
      background-color: #ffffff0d !important;
    }

    .bg-color-white-light-xl-opacity {
      background-color: #ffffff05 !important;
    }

    .bg-color-white-xl-opacity {
      background-color: #ffffff03 !important;
    }

    .bg-color-white-opacity-more {
        background-color: #ffffffe3 !important;
    }

    .bg-color-transparent {
        background-color: transparent!important;
    }
    .rbt-badge-6.bg-color-gray {
      color: #fff !important;
      background-color: #8e979b !important;
    }

    .color-bright-lime {
      color: #b0ff14 !important;
    }

    .color-bright-aqua {
      color: #07ffb9 !important;
    }

    .badge.numbering-badge {
      padding: 0.35em 0.6em;
    }

    @media (min-width:991px) {
      .numbered-badge-wrap .badge.numbering-badge {
        vertical-align: sub;
        margin-left: -12px;
      }
    }

    .numbered-badge-wrap .badge.numbering-badge {
      font-size: .9em !important;
    }

    .h5-badge {
      font-size: .67em;
      vertical-align: text-top;
      margin-right: 5px;
    }

    .card-light-purple-bg {
      box-shadow: none;
      background-color: #80008008;
    }

    .bg-color-light {
      background-color: #f6f9fc !important;
    }

    .bg-color-gray-med {
      background-color: #e6e8f1 !important;
    }

    .bg-color-gray-med-xl {
      background-color: #eef0f8 !important;
    }

    .mw--90 {
      max-width: 90%;
    }

    .mw--80 {
      max-width: 80%;
    }

    .padded-thumbnail {
      padding: 20px;
      background-color: #fff;
      border-radius: 6px;
    }

    .padded-thumbnail img {
      max-height: 500px;
    }

    .popup-mobile-menu .mainmenu li a:hover,
    .popup-mobile-menu .mainmenu li a:focus,
    .popup-mobile-menu .mainmenu li a:active {
      color: #9d2fef;
    }

    .Sect--Dark li.list-item.color-white {
      color: #f0f0f0 !important;
    }

    span.helv-font {
      font-family: "Helvetica Neue", sans-serif;
    }

    /* .hljs.highlight-code.language-plaintext {
      color: #4dd0e1;
    } */

    div.developer-example-wrap {
      border: 1px solid #ffffff26;
      border-radius: 14px;
    }

    #functions-container-wrap .margin-view-overlays,
    #functions-container-wrap .lines-content.monaco-editor-background {
      background-color: #021012 !important;
    }

    #functions-container-wrap .developer-example-wrap,
    .developer-example-wrap pre.highlight-code.language-cpp.hljs,
    #functions-container-wrap .monaco-editor.no-user-select.mac.showUnused.showDeprecated.vs-dark,
    #functions-container-wrap .monaco-editor .overflow-guard {
      border-radius: 14px;
    }


    .hljs {
      background: #021012 !important;
    }

    section.svg-section svg {
      margin-bottom: -1px;
    }

    section.svg-section svg {
      position: relative;
      z-index: 1;
    }

    .no-shadow {
      box-shadow: none !important;
    }

    .rbt-default-tab.tab-dark-bg {}

    .rbt-default-tab.tab-dark-bg .tab-button .tabs__tab .nav-link {
      color: var(--color-white);
      /* background: var(--color-gray); */
    }

    .rbt-default-tab.tab-dark-bg .tab-button .tabs__tab .nav-link.active {
      color: var(--color-heading);
      background: var(--color-lighter);
      border-color: transparent;
    }

    .rbt-default-tab.tab-dark-bg div.tab-content {
      padding: 30px;
      border-bottom-left-radius: .25rem;
      border-bottom-right-radius: .25rem;
    }

    .rbt-badge-super {
      background: var(--color-gray-light);
      padding: 4px 7px;
      font-size: 11px;
      display: inline-block;
      vertical-align: super;
      height: 22px;
      align-items: center;
      border-radius: var(--radius-small);
      justify-content: center;
      width: max-content;
    }

    .rbt-badge-default {
      font-size: 14px;
      line-height: 15px;
      font-weight: 500;
      margin-bottom: 15px;
      display: inline-block;
      padding: 10px 20px;
      border-radius: 100px;
      text-transform: uppercase;
      display: inline-block;
      background: #0c0c0c0a;
      color: var(--color-body);
    }

    .row.hero-btn-row .bg-secondary-opacity {
      color: #8d11d2 !important;
    }

    .row.hero-btn-row a.bg-secondary-opacity:hover,
    .row.hero-btn-row button.bg-secondary-opacity:hover {
      background: #a631e7 !important;
      color: var(--color-white) !important;
    }

    .row.hero-btn-row .bg-pink-opacity {
      background: #d733aa21 !important;
      color: #e3259f !important;
    }

    .row.hero-btn-row a.bg-pink-opacity:hover,
    .row.hero-btn-row button.bg-pink-opacity:hover {
      background: #d52186 !important;
      color: var(--color-white) !important;
    }

    .rbt-card.bg-color-text-white h4,
    .rbt-card.bg-color-text-white h5,
    .rbt-card.bg-color-text-white h6,
    .rbt-card.bg-color-text-white p,
    .rbt-card.bg-color-text-white ul li.list-item,
    .rbt-card.bg-color-text-white ol li.list-item {
      color: white !important;
    }

    .tab-content.bg-color-text-white h4,
    .tab-content.bg-color-text-white h5,
    .tab-content.bg-color-text-white h6,
    .tab-content.bg-color-text-white p,
    .tab-content.bg-color-text-white ul li.list-item,
    .tab-content.bg-color-text-white ol li.list-item {
      color: white !important;
    }

    .rbt-card.shadow-blue,
    .thumbnail.shadow-blue {
      box-shadow: var(--shadow-blue);
    }

    .rbt-card.shadow-12,
    .thumbnail.shadow-12 {
      box-shadow: var(--shadow-12);
    }

    .shadow-13 {
      box-shadow: 0 50px 100px -20px rgba(50, 50, 93, 0.25), 0 30px 60px -30px rgba(0, 0, 0, 0.3) !important;
    }

    .shadow-14 {
      box-shadow: 0 50px 100px -20px rgba(50, 50, 93, 0.25), 0 30px 60px -30px rgba(50, 50, 93, 0.25) !important;
    }

    .rbt-default-tab .rainbow-tab-content {
      background: var(--color-light);
      padding: 40px;
    }

    .rbt-default-tab .tab-button .tabs__tab .nav-link.active {
      background: var(--color-light);
      border-color: transparent;
    }

    .border-radius--30 {
      border-radius: 30px !important;
    }

    .border-radius--20 {
      border-radius: 20px !important;
    }

    .border-radius--15 {
      border-radius: 15px !important;
    }

    .border-radius--10 {
      border-radius: 10px !important;
    }

    .hero-terminal-simulator {
      opacity: .9
    }

    .terminal-font {
      font-family: "Courier 10 Pitch", Courier, monospace;
    }

    .terminal-font i {
      color: #7a7a7a !important;
      font-size: .775em;
    }

    .terminal-console-green,
    .terminal-font .terminal-console-green i {
      color: #3EB75E !important
    }

    .terminal-console-blue,
    .terminal-font .terminal-console-blue i {
      color: #579bec !important;
    }

    span.terminal-console-pink {
      color: #ff2171;
    }

    .hero-box-shadow {
      box-shadow: 0 50px 100px -20px rgba(50, 50, 93, 0.25), 0 30px 60px -30px rgba(50, 50, 93, 0.25);
    }

    #hero-ui-display {
      cursor: default !important;
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      -khtml-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none;
    }

    p.italic,
    span.italic {
      font-style: italic;
    }

    .rbt-default-tab .tab-button.white-nav .tabs__tab .nav-link.active {
      background: #fff;
      color: var(--color-heading);
      border-color: transparent;
    }

    .rbt-default-tab .tab-button.blue-trans-nav .tabs__tab .nav-link.active {
      background: #1a8bff13;
      border-color: transparent;
    }
  </style>

  <style>
    .Typewriter__cursor {
      display: none;
    }

    .hero-terminal-simulator {
      --terminalHeroBorderRadius: 10px;
      --terminalHeaderBorderRadius: 10px;
      --terminalHeroBgColor: #e8e8e8;
      border-radius: var(--terminalHeroBorderRadius);
      overflow: hidden;
      box-shadow: 0 20px 80px -20px rgba(50, 50, 93, 0.85), 0 10px 30px -20px rgba(50, 50, 93, 0.45);
    }

    .hero-terminal-simulator {
      opacity: 1;
    }

    .terminal-hero-card {
      border-top-left-radius: 0px;
      border-top-right-radius: 0px;
      /* opacity: .95; */
      padding: 20px;
    }

    .terminal-hero-header {
      height: 40px;
      background: var(--terminalHeroBgColor);
    }

    .terminal-mac-buttons {
      position: relative;
      top: -3px;
      left: 15px;
    }

    .mac-button {
      font-size: 13px;
    }

    .mac-button-close {
      color: #FF5D5A
    }

    .mac-button-minimize {
      color: #f5c350
    }

    .mac-button-maximize {
      color: #65cd57
    }
  </style>

  <style>
    .sect-thumbnail-main {
      position: relative;
      --sectImgScale: scale(1.7);
    }

    .sect-thumbnail-main.scale-less {
      --sectImgScale: scale(1.503);
    }

    .sect-thumbnail-main.scale-none {
      --sectImgScale: scale(1);
    }

    .sect-thumbnail-main.fade-white {
      --mgmtFadeBgColor: #ffffff;
    }

    .sect-thumbnail-main.fade-light {
      --mgmtFadeBgColor: #f6f9fc;
    }

    .sect-thumbnail-main.fade-light-xl {
      --mgmtFadeBgColor: #fafcff;
    }

    .sect-thumbnail-main.fade-gray {
      --mgmtFadeBgColor: #a0a9ac;
    }

    .sect-thumbnail-main.fade-gray-lighter {
      --mgmtFadeBgColor: #ebebeb;
    }

    .sect-thumbnail-main.fade-darker {
      --mgmtFadeBgColor: #192335;
    }

    .sect-thumbnail-main.fade-blue-1 {
      --mgmtFadeBgColor: #ecf2fa;
    }

    .sect-thumbnail-main.fade-lighter {
      --mgmtFadeBgColor: var(--color-lighter)
    }

    .sect-thumbnail-main.fade-page-theme {
      --mgmtFadeBgColor: var(--pageThemeBg)
    }

    .sect-thumbnail-wrapper {
      height: 350px;
      overflow: hidden;
      padding: 30px 30px 0px 30px;
      margin-top: -100px;
    }


    .sect-img {
      /* border-radius: 10px; */
    }

    .sect-img:not(.no-transform) {
      -moz-transform: var(--sectImgScale);
      -webkit-transform: var(--sectImgScale);
      transform: var(--sectImgScale);
      transform-origin: top left;
    }

    .sect-thumbnail {
      box-shadow: 0px 10px 30px -10px #47479b38, 0 10px 30px -10px #3f3f7338;
      border-radius: 10px;
      background: #fff;
      overflow: hidden;
      border: 0;
      height: 100%;
    }

    .sect-thumbnail:not(.no-border) {
      border: 15px solid #fff;
    }

    .sect-thumbnail.no-background {
      background: none;
    }

    .sect-thumbnail-fade {
      height: 70px;
      width: 100%;
      bottom: 0px;
      position: absolute;
      background: linear-gradient(to bottom, transparent, var(--mgmtFadeBgColor));
    }



    .sect-thumbnail-main.sect-thumbnail-cornered {
      position: absolute;
      bottom: -10px;
    }

    .sect-thumbnail-cornered .sect-thumbnail-wrapper {
      overflow: hidden;
      padding: 0;
      margin-top: 0px;
    }




    .manage-cards-row .sect-thumbnail-wrapper {
      height: 220px;
    }

    .sect-thumbnail-cornered .sect-img {
      border-radius: 0px;
      opacity: 1;
    }

    .sect-thumbnail-cornered .sect-img:not(.no-transform) {
      -moz-transform: var(--sectImgScale);
      -webkit-transform: var(--sectImgScale);
      transform: var(--sectImgScale);
      transform-origin: top left;
    }

    .sect-thumbnail-cornered .sect-thumbnail:not(.no-mask) {
      box-shadow: none;
      border-radius: 0px;
      border-top-left-radius: 10px;
      mask-image: linear-gradient(to left, transparent, var(--mgmtFadeBgColor) 30%);
      -webkit-mask-image: linear-gradient(to left, transparent, var(--mgmtFadeBgColor) 30%);
    }

    .sect-thumbnail-cornered .sect-thumbnail {
      border-top-right-radius: 0;
    }




    .tabs-bordered {
      --tabsBorderColor: #000;
      --tabsBorderRadius: 6px;
    }

    .tabs-bordered.rbt-default-tab .tab-button.white-nav .tabs__tab .nav-link.active {
      border-left: 1px solid var(--tabsBorderColor);
      border-right: 1px solid var(--tabsBorderColor);
      border-top: 1px solid var(--tabsBorderColor);
    }

    .tabs-bordered.rbt-default-tab .tab-button.white-nav .tabs__tab .nav-link:not(.active) {
      border-bottom: 1px solid var(--tabsBorderColor);
    }

    .tabs-bordered.rbt-default-tab .rainbow-tab-content {
      border-left: 1px solid var(--tabsBorderColor);
      border-right: 1px solid var(--tabsBorderColor);
      border-bottom: 1px solid var(--tabsBorderColor);
      border-bottom-left-radius: var(--tabsBorderRadius);
      border-bottom-right-radius: var(--tabsBorderRadius);
    }


    @media only screen and (min-width: 992px) {
      .card-left-content-col {
        border-left: 3px solid #fff;
      }

      .rbt-card.card-left-img .card-left-img-col .sect-thumbnail,
      .rbt-card.card-left-img .card-left-img-col .sect-img {
        border-radius: 0px;
      }
    }


    @media only screen and (min-width: 992px) {
      .sd--60 {
        bottom: -60px;
      }

      .sd--80 {
        bottom: -80px;
      }

      .sd--100 {
        bottom: -100px;
      }
    }

    .rbt-card.card-top-img,
    .rbt-card.card-top-img .card-body,
    .rbt-card.card-left-img,
    .rbt-card.card-left-img .card-body {
      padding: 0;
    }

    .rbt-card.card-top-img .card-top-img-col,
    .rbt-card.card-left-img .card-left-img-col {
      padding-left: 0;
      padding-right: 0;
    }


    .rbt-card.card-top-img .card-top-img-col .sect-thumbnail-wrapper,
    .rbt-card.card-left-img .card-left-img-col .sect-thumbnail-wrapper {
      padding: 0px;
      margin-top: 0px;
      height: 250px;
      overflow: hidden;
    }

    .rbt-card.card-top-img .card-top-img-col .sect-thumbnail-wrapper.short {
      height: 210px;
    }

    .rbt-card.card-top-img .card-top-img-col .sect-thumbnail-wrapper.tall {
      height: auto;
      max-height: 330px;
      min-height: 250px;
    }

    .rbt-card.card-top-img .card-top-img-col .sect-thumbnail {
      margin-left: 10%;
      margin-top: 10%
    }

    .rbt-card.card-top-img .card-top-img-col .sect-img {
      padding: 20px;
    }

    .card-top-content-wrap,
    .card-left-content-wrap {
      padding: 30px;
    }

    .card-top-text-wrap {
      padding: 40px;
    }

    .rbt-card.card-top-img .card-top-img-col .sect-thumbnail-fade,
    .rbt-card.card-left-img .card-left-img-col .sect-thumbnail-fade {
      opacity: .5;
    }


    .ml--10p {
      margin-left: 10%;
    }

    .mr--10p {
      margin-right: 10%;
    }

    .mlt--0 {
      margin-left: 0% !important;
      margin-top: 0% !important;
    }

    .op--9 {
      opacity: .9 !important;
    }

    .op--8 {
      opacity: .8 !important;
    }

    .op--7 {
      opacity: .7 !important;
    }

    .op--6 {
      opacity: .6 !important;
    }

    .op--5 {
      opacity: .5 !important;
    }

    .op--4 {
      opacity: .4 !important;
    }

    .op--3 {
      opacity: .3 !important;
    }

    .op--2 {
      opacity: .2 !important;
    }

    .op--1 {
      opacity: .1 !important;
    }

    .bg-color-lighter-d {
      background-color: #e1e4e8 !important;
    }

    .sect-thumbnail-wrapper.inner-box-shadow {
      box-shadow: var(--shadow-1);
    }

    .bg-gradient-white-blue {
      background: linear-gradient(rgb(255, 255, 255) 0%, rgb(250 252 255) 100%) !important;
    }

    .bg-gradient-white-purple {
      background: linear-gradient(rgb(255, 255, 255) 0%, rgb(247 239 255) 100%) !important;
    }

    .no-bottom-radius {
      border-bottom-left-radius: 0;
      border-bottom-right-radius: 0;
    }

    .btn-lg.btn-outline-secondary:focus {
      color: #fff;
    }
  </style>
  <style>
    .duo-image-wrap {
      position: relative;
    }

    .duo-image-wrap .thumbnail-wrapper {
      position: relative;
      display: flex;
      flex-wrap: wrap;
    }

    .duo-image-wrap .thumbnail-wrapper .thumbnail img {
      max-height: 450px;
      background-color: #fff;
      padding: 0px;
    }


    .duo-image-wrap img {
      object-fit: cover;
    }

    .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 {
      position: relative;
    }

    .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
      position: absolute;
      top: 0;
    }
  </style>
  <style>
    @media only screen and (min-width: 992px) {

      .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
        left: 0;
      }

      .row.duo-image-dormant-customer {
        margin-bottom: 250px;
      }

      .row.duo-image-soft-decline {
        margin-bottom: 300px;
      }

      .row.duo-image-renewal-sms {
        margin-bottom: 80px;
      }

      .duo-image-dormant-customer .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 {
        left: 200px;
        top: -50px;
      }

      .duo-image-dormant-customer .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 img {
        max-height: 550px;
      }


      .duo-image-dormant-customer .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
        top: 10px;
      }

      .duo-image-dormant-customer .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 img {
        max-height: 475px;
      }

      .duo-image-soft-decline .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 {
        left: 50px;
        top: -70px;
      }

      .duo-image-soft-decline .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 img {}

      .duo-image-soft-decline .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
        top: 130px;
      }

      .duo-image-soft-decline .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 img {
        max-height: 300px;
      }

      .duo-image-renewal-sms .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 {
        left: 320px;
        top: -20px;
      }

      .duo-image-renewal-sms .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {}
    }

    @media only screen and (max-width: 991px) {

      .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
        right: 0;
      }

      .duo-image-wrap .thumbnail-wrapper .thumbnail img {
        background-color: #fff;
        padding: 0px;
      }

      .duo-image-wrap .thumbnail-wrapper .thumbnail.image-1 img {
        max-height: 350px;
      }

      .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 img {
        max-height: 300px;
        max-width: 60vw;
      }

      .duo-image-wrap .thumbnail-wrapper .thumbnail.image-2 {
        top: 100px;
      }


      .row.duo-image-dormant-customer {
        margin-bottom: 150px;
      }

      .row.duo-image-soft-decline {
        margin-bottom: 150px;
      }

      .row.duo-image-soft-decline {
        margin-bottom: 150px;
      }

      .row.duo-image-renewal-sms {
        margin-bottom: 100px;
      }
    }



    .gradient-canvas-overlay-wrap {
      height: 100%;
      width: 100%;
      position: absolute;
      right: 0;
      top: 0;
      --overlayPercent: 50%;
    }

    .gradient-canvas-overlay {
      height: 100%;
    }

    .overlay--50 {
      --overlayPercent: 50%;
    }

    .overlay--40 {
      --overlayPercent: 40%;
    }

    .overlay--30 {
      --overlayPercent: 30%;
    }

    .overlay--20 {
      --overlayPercent: 20%;
    }

    .overlay--10 {
      --overlayPercent: 10%;
    }

    .overlay-white {
      background: linear-gradient(#fff var(--overlayPercent), transparent);
    }

    .overlay-light {
      background: linear-gradient(#f6f9fc 30%, transparent);
    }

    .overlay-light-xl {
      background: linear-gradient(#fafcff 30%, transparent);
    }

    .overlay-lighter {
      background: linear-gradient(#F2F5F9 30%, transparent);
    }

    .overlay-purple {
      background: linear-gradient(#fbf9ff 40%, transparent);
    }
  </style>
</head>

<body class="">
    

    <main class="rbt-main-wrapper">


        <div class="rbt-banner-area rbt-banner-1 variation-2 height-450">
            <div class="container">
                <div class="row text-center">
                    <div class="col-lg-12">
                        <div class="content">
                            <div class="inner">
                                <h1 class="title">Error 404</h1>
                                <p class="">The requested page could not be found.</p>
                                <p class=""><a href="/" class="rbt-btn bg-primary-opacity">Home Page</a></p>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-4">
                        <div class="content">

                        </div>
                    </div>
                </div>
            </div>
        </div>

        

    </main>

    <!-- End Page Wrapper Area -->
    <div class="rbt-progress-parent d-none">
        <svg class="rbt-back-circle svg-inner" width="100%" height="100%" viewBox="-1 -1 102 102">
            <path d="M50,1 a49,49 0 0,1 0,98 a49,49 0 0,1 0,-98" />
        </svg>
    </div>

    <script src="https://cdn.revcent.com/public-new/js/vendor/modernizr.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/jquery.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/bootstrap.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/sal.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/swiper.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/magnify.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/jquery-appear.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/odometer.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/backtotop.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/isotop.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/imageloaded.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/wow.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/waypoint.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/easypie.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/text-type.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/jquery-one-page-nav.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/bootstrap-select.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/jquery-ui.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/magnify-popup.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/paralax-scroll.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/paralax.min.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/countdown.js"></script>
    <script src="https://cdn.revcent.com/public-new/js/vendor/plyr.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/lodash/lodash.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/sweetalert/sweetalert.min.js"></script>

    <script src="https://cdn.revcent.com/js/plugins/validation/jquery.validate.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/validation/additional-methods.min.js"></script>
    <script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLibLoaded&render=explicit" async defer></script>
    <script src="https://cdn.revcent.com/js/plugins/anim-gradient/anim-gradient.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/highlightjs/highlight-2.min.js"></script>
    <script src="https://cdn.revcent.com/js/plugins/typeit/typeit.js"></script>




    <script>
      let registerRequestRecaptchaWidget;
      let contactModalRecaptchaWidget;
      recaptchaLibLoaded=function() {
        let recaptcha_site_key='6LcDsNUUAAAAAIpsHmkuI7Renzt8xNAl7HHItOou';
        if($('#recaptcha_contact_modal').length>0) {
          contactModalRecaptchaWidget=grecaptcha.render('recaptcha_contact_modal',{
            'sitekey': recaptcha_site_key
          });
        }
        if($('#recaptcha_register_request').length>0) {
          registerRequestRecaptchaWidget=grecaptcha.render('recaptcha_register_request',{
            'sitekey': recaptcha_site_key
          });
        }
      };

      $(document).ready(function() {
        $(document).on('mouseenter','.advanced-tab-button-nav .nav-link:not(.active)',function(a) {
          $(this).tab('show');
        });
        $('.lobtn').click(function() {
          $.ajax({
            type: 'POST',
            url: '/auth/logout',
            dataType: "json",
            success: function(x) {
              window.location.replace('/');
            }
          });
        });
      });
    </script>

    <script>
      // $('.page-theme-link.small').hover(function() {
      //   $(this).children('i.far.fa-angle-right.small').addClass('ml--5');
      // },
      //   function() {
      //     $(this).children('i.far.fa-angle-right.small').removeClass('ml--5');
      //   });
    </script>
    <script>
      let hero_palette=[
        ['#521262','#6639a6','#3490de','#6fe7dd'], //0
        ['#f8ecfd','#c264fe','#a82ffc','#7a08fa'], //purple 1
        ['#d9faff','#00bbf0','#005792','#00204a'], //ice 2
        ['#fc85ae','#9e579d','#574b90','#303a52'], //city night 3
        ['#abedd8','#46cdcf','#3d84a8','#48466d'], //sea foam 4
        ['#d2ecf9','#1891ac','#1f5f8b','#253b6e'], //ocean 5
        ['#ffbd39','#e61c5d','#930077','#3a0088'], //dark fruit 6
        ['#ff165d','#ff9a00','#ebedb4','#3ec1d3'], //fruit 7
        ['#ffde7d','#f6416c','#f8f3d4','#00b8a9'], //light melon 8
        ['#eaeaea','#ff2e63','#252a34','#08d9d6'], //peppermint 9
        ['#64379f','#9854cb','#ddacf5','#33a8b5'], // 10
        ['#5f59f7','#6592fd','#44c2fd','#8c61ff'], // 11
        ['#a7dbd8','#e0e4cc','#f38630','#fa6900'], // 12
        ['#0dceda','#6ef3d6','#c6fce5','#ebfffa'], //13
        ['#7e6bc4','#c79ecf','#d6c8ff','#fef0ff'], //14
        ['#d988bc','#ffa8b8','#ffd2a5','#ffffc1'], //15
        ['#8a00d4','#d527b7','#f782c2','#f9c46b'], //16
        ['#556270','#4ecdc4','#c7f464','#ff6b6b'], //17
        ['#bce784','#5dd39e','#348aa7','#525174'], //18
        ['#ff9de2','#8c82fc','#b693fe','#7effdb'], //19
        ['#8971d0','#7dace4','#95e8d7','#adf7d1'], //20
        ['#fff5a5','#ffaa64','#ff8264','#ff6464'], //21
        ['#a7ff83','#17b978','#086972','#071a52'], //22
        ['#2f9296','#46b7b9','#87dfd6','#dff5f2'], //23
        ['#74f9ff','#e8ffe8','#a6fff2','#00e0ff'], //24
        ['#d7fbe8','#62d2a2','#9df3c4','#1fab89'], //25
        ['#F0FF42','#82CD47','#54B435','#379237'],//26
        ['#F49D1A','#009FBD','#210062','#77037B'], //27
        ['#13bf53','#38E54D','#9CFF2E','#FDFF00'], //28
        ['#07e3d1','#7203ad','#C70A80','#ffe100'], //29
        ['#FFBE0B','#70d6ff','#FF006E','#8338EC'], //30
        ['#92bff0','#57cdff','#1b8bff','#0061c9'], //31
        ['#fff75e','#ffe94e','#ffda3d','#fdc43f'], //32
        ['#E60965','#F94892','#FFA1C9','#E80F88'], //33
        ['#a200ff','#7e00c7','#b940ff','#8b3aba'], //34
        ['#930077','#7f2381','#6a3287','#eb1ec5'], //35
      ];

      let page_theme_gradients={
        '1': 1,
        '2': 33,
        '3': 21,
        '4': 28,
        '5': 31,
        '6': 35,
        '7': 33
      };

      if($('.gradient-canvas').length>0&&(typeof $('.gradient-canvas').attr('data-palettenum')!=='undefined'||typeof $('body.MainBody').attr('data-pagetheme')!=='undefined'||typeof $('.rbt-main-wrapper').attr('data-palettearray')!=='undefined')) {
        $('.gradient-canvas').each(function() {
          let angle=0;
          let palette_array;
          let amplitude=320;
          let static=false;
          let indiv_grad=$(this);
          if(typeof $('body.MainBody').attr('data-pagetheme')!=='undefined'&&$(this).parent('.gradient-canvas-wrapper').hasClass('section-separator-250')&&typeof page_theme_gradients?.[$('body.MainBody').attr('data-pagetheme')]!=='undefined') {
            palette_array=hero_palette[page_theme_gradients[$('body.MainBody').attr('data-pagetheme')]];
          } else if(typeof $(this).attr('data-palettearray')!=='undefined') {
            palette_array=JSON.parse($(this).attr('data-palettearray'));
          } else {
            palette_array=hero_palette[parseInt($(this).attr('data-palettenum'))];
          }
          if(typeof $(this).attr('data-gradamp')!=='undefined'&&parseInt($(this).attr('data-gradamp'))>0) {
            amplitude=parseInt($(this).attr('data-gradamp'));
          }
          if(typeof $(this).attr('data-gradangle')!=='undefined'&&parseInt($(this).attr('data-gradangle'))>0) {
            angle=parseInt($(this).attr('data-gradangle'));
          }

          if(typeof $(this).attr('data-gradstatic')!=='undefined'&&$(this).attr('data-gradstatic')==='true') {
            static=true;
          }
          if(typeof $(this).attr('data-gradshuffle')!=='undefined'&&$(this).attr('data-gradshuffle')==='true') {
            palette_array=palette_array
              .map(value => ({value,sort: Math.random()}))
              .sort((a,b) => a.sort-b.sort)
              .map(({value}) => value)
          }



          indiv_grad.gradient({
            colors: palette_array,
            angle,
            amplitude,
            static,
            density: [.06, .16]
          });
        });
      }
    </script>


    <script>


      (function(window,document,$,undefined) {
        'use strict';

        let siteConf={
          i: function(e) {
            siteConf.d();
            siteConf.methods();
          },

          d: function(e) {
            this._window=$(window),
              this._document=$(document),
              this._body=$('body'),
              this._html=$('html'),
              this.sideNav=$('.rbt-search-dropdown')
          },
          methods: function(e) {
            siteConf._clickDoc();
            siteConf.popupMobileMenu();
          },
          _clickDoc: function() {
            var inputblur,inputFocus,openSideNav,closeSideNav;
            inputblur=function(e) {
              if(!$(this).val()) {
                $(this).parent('.form-group').removeClass('focused');
              }
            };
            inputFocus=function(e) {
              $(this).parents('.form-group').addClass('focused');
            };
            openSideNav=function(e) {
              e.preventDefault();
              siteConf.sideNav.addClass('active');
              $('.search-trigger-active').addClass('open');
              siteConf._html.addClass('side-nav-opened');
            };

            closeSideNav=function(e) {
              if(!$('.rbt-search-dropdown, .rbt-search-dropdown *:not(".search-trigger-active, .search-trigger-active *")').is(e.target)) {
                siteConf.sideNav.removeClass('active');
                $('.search-trigger-active').removeClass('open');
                siteConf._html.removeClass('side-nav-opened');
              }
            };
            siteConf._document
              .on('blur','input,textarea,select',inputblur)
              .on('focus','input:not([type="radio"]),input:not([type="checkbox"]),textarea,select',inputFocus)
              .on('click','.search-trigger-active',openSideNav)
              .on('click','.side-nav-opened',closeSideNav)
          },




          popupMobileMenu: function(e) {
            $('.hamberger-button').on('click',function(e) {
              $('.popup-mobile-menu').addClass('active');
            });

            $('.close-button').on('click',function(e) {
              $('.popup-mobile-menu').removeClass('active');
              $('.popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a').siblings('.submenu, .rbt-megamenu').removeClass('active').slideUp('400');
              $('.popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a').removeClass('open')
            });

            $('.popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a').on('click',function(e) {
              e.preventDefault();
              $(this).siblings('.submenu, .rbt-megamenu').toggleClass('active').slideToggle('400');
              $(this).toggleClass('open')
            })

            $('.popup-mobile-menu, .popup-mobile-menu .mainmenu.onepagenav li a').on('click',function(e) {
              e.target===this&&$('.popup-mobile-menu').removeClass('active')&&$('.popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a').siblings('.submenu, .rbt-megamenu').removeClass('active').slideUp('400')&&$('.popup-mobile-menu .mainmenu .has-dropdown > a, .popup-mobile-menu .mainmenu .with-megamenu > a').removeClass('open');
            });
          }
        }
        siteConf.i();


      })(window,document,jQuery);
      
    </script><script type="text/javascript">
</script>

</body>


</html>