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

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Privacy Policy - RevCent</title>
  <meta name="description" content="RevCent privacy policy." />
  <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="MainBody Page-Theme-1">
  <div class="white-hero-navx">
    <!-- Start Header Area -->
    <header class="rbt-header rbt-header-1 rbt-transparent-header">
        <div class="rbt-sticky-placeholder"></div>
        <div class="rbt-header-wrapper header-space-betwween header-sticky">
            <div class="container-fluid">
                <div class="mainbar-row rbt-navigation-center align-items-center">
                    <div class="header-left rbt-header-content">
                        <div class="header-info">
                            <div class="logo">
                                <a href="/">

    
                                    <img src="https://cdn.revcent.com/img/revcent-logo-black.png" alt="RevCent Logo">
                                </a>
                            </div>
                        </div>
                    </div>

                    <div class="rbt-main-navigation d-none d-xl-block">
                        <nav class="mainmenu-nav">
                            <ul class="mainmenu">

                                <li class="with-megamenu has-menu-child-item position-static">
                                    <a class="a-no-link">Product <i class="feather-chevron-down d-none"></i></a>
                                    <div class="triangle-border-top-nav triangle-border-top-nav-grey"></div>
                                    <!-- Start Mega Menu  -->
                                    <div class="rbt-megamenu grid-item-3 advanced-tab-button-wrapper" style="margin-left:0">
                                        <div class="wrapper">


                                            <div class="row g-5">
                                                <div class="col-lg-4 col-md-12 col-sm-12 col-12 mt_md--30 mt_sm--30 order-2 order-lg-1 advanced-tab-button-content-col-1">
                                                    <div class="advance-tab-button advance-tab-button-1">
                                                        <ul class="nav nav-tabs tab-button-list advanced-tab-button-nav" id="myTab" role="tablist">
                                                            <li class="nav-item" role="presentation">
                                                                <a href="#" class="nav-link tab-button active" id="payments-tab" data-bs-toggle="tab" data-bs-target="#payments" role="tab" aria-controls="payments" aria-selected="true">
                                                                    <div class="tab">
                                                                        <h4 class="title">Payments</h4>
                                                                        <p class="description">Accept payments and increase revenue.</p>
                                                                    </div>
                                                                </a>
                                                            </li>

                                                            <li class="nav-item" role="presentation">
                                                                <a href="#" class="nav-link tab-button" id="manage-tab" data-bs-toggle="tab" data-bs-target="#manage" role="tab" aria-controls="manage" aria-selected="false">
                                                                    <div class="tab">
                                                                        <h4 class="title">Manage</h4>
                                                                        <p class="description">Manage mulitple aspects of your business.</p>
                                                                    </div>
                                                                </a>
                                                            </li>
                                                            <li class="nav-item" role="presentation">
                                                                <a href="#" class="nav-link tab-button" id="track-report-tab" data-bs-toggle="tab" data-bs-target="#track-report" role="tab" aria-controls="track-report" aria-selected="true">
                                                                    <div class="tab">
                                                                        <h4 class="title">Track & Report</h4>
                                                                        <p class="description">Conversion tracking and reporting.</p>
                                                                    </div>
                                                                </a>
                                                            </li>
                                                            <li class="nav-item" role="presentation">
                                                                <a href="#" class="nav-link tab-button" id="tools-tab" data-bs-toggle="tab" data-bs-target="#tools" role="tab" aria-controls="tools" aria-selected="false">
                                                                    <div class="tab">
                                                                        <h4 class="title">Tools</h4>
                                                                        <p class="description">Advanced capabilities and features.</p>
                                                                    </div>
                                                                </a>
                                                            </li>
                                                        </ul>
                                                    </div>
                                                </div>
                                                <div class="col-lg-8 col-md-12 col-sm-12 col-12 order-1 order-lg-2  advanced-tab-button-content-col-2">
                                                    <div class="tab-content advanced-tab-button-content">
                                                        <div class="tab-pane advance-tab-content-1 active show" id="payments" role="tabpanel" aria-labelledby="payments-tab">
                                                            <div class="row">
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/payments/credit-card">
                                                                                <strong>Credit Card</strong>
                                                                                <br>
                                                                                <span>The ultimate credit card payment suite</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/payment-profiles">
                                                                                <strong>Payment Routing</strong>
                                                                                <br>
                                                                                <span>Dynamically route payments</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/revenue-recovery">
                                                                                <strong>Recovery Recovery</strong>
                                                                                <br>
                                                                                <span>Automatically recover lost revenue</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/chargeback-management">
                                                                                <strong>Chargebacks</strong>
                                                                                <br>
                                                                                <span>Integrated chargeback management</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/payments/anti-fraud">
                                                                                <strong>Anti Fraud</strong>
                                                                                <br>
                                                                                <span>Prevent fraud with Sentinel, our in-house anti-fraud tool</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/alternative">
                                                                                <strong>Third Party</strong>
                                                                                <br>
                                                                                <span>PayPal, Amazon Pay & more</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/credit-card#section-mid-management">
                                                                                <strong>MID Management</strong>
                                                                                <br>
                                                                                <span>Organize MID's and prevent cross corp transactions</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/payments/credit-card#section-card-data">
                                                                                <strong>Card Storage</strong>
                                                                                <br>
                                                                                <span>Store customer cards securely within RevCent</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <div class="tab-pane advance-tab-content-1" id="manage" role="tabpanel" aria-labelledby="manage-tab">
                                                            <div class="row">
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/manage/suite">
                                                                                <strong>Sales</strong>
                                                                                <br>
                                                                                <span>View and manage sales</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-customers">
                                                                                <strong>Customers</strong>
                                                                                <br>
                                                                                <span>Customer management in one place</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-shipping">
                                                                                <strong>Shipping</strong>
                                                                                <br>
                                                                                <span>Automate with integrated fulfillment centers</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-products">
                                                                                <strong>Products</strong>
                                                                                <br>
                                                                                <span>Multiple product types and variations</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-subscriptions">
                                                                                <strong>Subscriptions</strong>
                                                                                <br>
                                                                                <span>Recurring billing made easy</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-tax">
                                                                                <strong>Tax</strong>
                                                                                <br>
                                                                                <span>Manage tax using profiles or third parties</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-organizations">
                                                                                <strong>Users</strong>
                                                                                <br>
                                                                                <span>Add users with granular permissions</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/manage/suite#section-notes">
                                                                                <strong>Notes</strong>
                                                                                <br>
                                                                                <span>Take notes on customers, sales and more</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <div class="tab-pane advance-tab-content-1" id="track-report" role="tabpanel" aria-labelledby="track-report-tab">
                                                            <div class="row">
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/tracking/suite">
                                                                                <strong>DNS Tracking</strong>
                                                                                <br>
                                                                                <span>Accurately track visitors across domains</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tracking/suite#section-utilize-metadata">
                                                                                <strong>Metadata</strong>
                                                                                <br>
                                                                                <span>Utilize detailed metadata</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tracking/suite#section-conversions">
                                                                                <strong>Conversions</strong>
                                                                                <br>
                                                                                <span>Know your true conversion metrics</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tracking/suite#section-adwords">
                                                                                <strong>AdWords</strong>
                                                                                <br>
                                                                                <span>Link your AdWords account with RevCent</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/reporting/suite">
                                                                                <strong>Reports</strong>
                                                                                <br>
                                                                                <span>Pre-built reporting pages with popular metrics</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/reporting/suite#section-dashboard">
                                                                                <strong>Dashboard</strong>
                                                                                <br>
                                                                                <span>Advanced customizable metrics</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/reporting/suite#section-auto-queries">
                                                                                <strong>Auto Queries</strong>
                                                                                <br>
                                                                                <span>Receive custom metrics data via email, SMS and more</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/reporting/suite#section-bigquery">
                                                                                <strong>BigQuery</strong>
                                                                                <br>
                                                                                <span>Direct data access via Google BigQuery</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <div class="tab-pane advance-tab-content-1" id="tools" role="tabpanel" aria-labelledby="tools-tab">
                                                            <div class="row">
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/tools/suite">
                                                                                <strong>Customer Groups</strong>
                                                                                <br>
                                                                                <span>Hyper advanced customer segments</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-flows">
                                                                                <strong>Flows</strong>
                                                                                <br>
                                                                                <span>Visual customer engagement builder</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-functions">
                                                                                <strong>Functions</strong>
                                                                                <br>
                                                                                <span>Run custom code hosted by RevCent</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-ai">
                                                                                <strong>AI</strong>
                                                                                <br>
                                                                                <span>Natively integrated with OpenAI</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                                <div class="col-lg-6 col-md-12 col-sm-12 col-12">
                                                                    <ul class="mega-menu-item">
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-email-templates">
                                                                                <strong>Email Templates</strong>
                                                                                <br>
                                                                                <span>Send emails according to triggers</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-firehose">
                                                                                <strong>Firehose</strong>
                                                                                <br>
                                                                                <span>Send event details to any endpoint</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/integration/suite">
                                                                                <strong>Integrations</strong>
                                                                                <br>
                                                                                <span>Inbound, outbound & custom integrations</span>
                                                                            </a>
                                                                        </li>
                                                                        <li>
                                                                            <a href="/products/tools/suite#section-customer-portals">
                                                                                <strong>Customer Portals</strong>
                                                                                <br>
                                                                                <span>Customer portals for self service</span>
                                                                            </a>
                                                                        </li>
                                                                    </ul>
                                                                </div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>

                                            </div>
                                        </div>
                                        <!-- End Mega Menu  -->
                                </li>

                                <li class="with-megamenu has-menu-child-item position-static">
                                    <a class="a-no-link">Industries <i class="feather-chevron-down d-none"></i></a>
                                    <div class="triangle-border-top-nav"></div>
                                    <!-- Start Mega Menu  -->
                                    <div class="rbt-megamenu grid-item-4">
                                        <div class="wrapper">
                                            <div class="row row--15">
                                                <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                                    <h3 class="rbt-short-title">Ecommerce</h3>
                                                    <ul class="mega-menu-item">
                                                        <li>
                                                            <a href="/products/integration/suite#section-woocommerce">
                                                                <strong>WooCommerce Plugin</strong>
                                                                <br>
                                                                <span>Link an existing WooCommerce store</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/integration/suite#section-woocommerce">
                                                                <strong>Hosted WooCommere</strong>
                                                                <br>
                                                                <span>Spin up a WooCommerce store in minutes</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/integration/suite#section-api">
                                                                <strong>Direct API</strong>
                                                                <br>
                                                                <span>Integrate a custom store via API</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/tracking/suite">
                                                                <strong>Tracking</strong>
                                                                <br>
                                                                <span>In-house DNS tracking</span>
                                                            </a>
                                                        </li>
                                                    </ul>
                                                </div>
                                                <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                                    <h3 class="rbt-short-title">SAAS</h3>
                                                    <ul class="mega-menu-item">
                                                        <li>
                                                            <a href="/products/integration/suite#section-api">
                                                                <strong>Advanced API</strong>
                                                                <br>
                                                                <span>Use our API to process payments, retrieve data and more</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/tools/suite#section-functions">
                                                                <strong>Functions</strong>
                                                                <br>
                                                                <span>Run your own code in the cloud without servers</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/tracking/suite#section-metadata">
                                                                <strong>Metadata</strong>
                                                                <br>
                                                                <span>Implement metadata in API requests for granular analysis</span>
                                                            </a>
                                                        </li>
                                                    </ul>
                                                </div>
                                                <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                                    <h3 class="rbt-short-title">Call Center</h3>
                                                    <ul class="mega-menu-item">
                                                        <li>
                                                            <a href="/products/manage/suite#section-organizations">
                                                                <strong>Organizations</strong>
                                                                <br>
                                                                <span>Organize users by business to separate concerns</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/manage/suite#section-organizations">
                                                                <strong>Permissions</strong>
                                                                <br>
                                                                <span>User hierarchy and granular permissions within organizations</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/manage/suite#section-notes">
                                                                <strong>Item Notes</strong>
                                                                <br>
                                                                <span>Take notes which are visible throughout the system</span>
                                                            </a>
                                                        </li>
                                                    </ul>
                                                </div>
                                                <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                                    <h3 class="rbt-short-title">Self Serve</h3>
                                                    <ul class="mega-menu-item">
                                                        <li>
                                                            <a href="/products/manage/suite">
                                                                <strong>Manual Billing</strong>
                                                                <br>
                                                                <span>Create sales and process customer payments in the RevCent web app</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/manage/suite">
                                                                <strong>Invoices</strong>
                                                                <br>
                                                                <span>Create invoices and send clients a link to pay online or print and mail</span>
                                                            </a>
                                                        </li>
                                                        <li>
                                                            <a href="/products/tools/suite#section-customer-portals">
                                                                <strong>Portals</strong>
                                                                <br>
                                                                <span>Allow customers to login and make payments, track shipping and more</span>
                                                            </a>
                                                        </li>
                                                    </ul>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    <!-- End Mega Menu  -->
                                </li>

                                <li class="">
                                    <a href="/pricing">Pricing
                                        <i class="feather-chevron-down d-none"></i>
                                    </a>
                                </li>

                                <li class="with-megamenu has-menu-child-item">
                                    <a class="a-no-link">Help <i class="feather-chevron-down d-none"></i></a>
                                    <div class="triangle-border-top-nav"></div>
                                    <!-- Start Mega Menu  -->
                                    <div class="rbt-megamenu grid-item-2">
                                        <div class="wrapper">
                                            <div class="row row--15">
                                                <div class="col-lg-12 col-xl-6 col-xxl-6 single-mega-item">
                                                    <h3 class="rbt-short-title">Docs</h3>
                                                    <ul class="mega-menu-item">
                                                        <li><a href="https://kb.revcent.com/" target="_blank">Knowledge Base <i class="far fa-external-link-square-alt small"></i></a></li>
                                                        <li><a href="/docs/api">API</a></li>
                                                    </ul>
                                                </div>
                                                <div class="col-lg-12 col-xl-6 col-xxl-6 single-mega-item">
                                                    <h3 class="rbt-short-title">Popular Guides</h3>
                                                    <ul class="mega-menu-item">
                                                        <li><a href="https://kb.revcent.com/en/tracking/conversion-tracking" target="_blank">Conversion Tracking</a></li>
                                                        <li><a href="https://kb.revcent.com/integrations/third-party-shop/woocommerce-installation" target="_blank">WooCommerce Integration</a></li>
                                                        <li><a href="https://kb.revcent.com/en/payments/credit-card/payment-profile" target="_blank">Payment Profiles</a></li>
                                                    </ul>
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-lg-12">
                                                    <ul class="nav-quick-access">
                                                        <li><a href="https://revcent.statuspage.io/" target="_blank"><i class="feather-folder-minus"></i> System Status</a></li>
                                                        <li><a href="https://kb.revcent.com/en/guides/initial-setup" target="_blank"><i class="feather-folder-minus"></i> Quick Start Guide</a></li>
                                                    </ul>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    <!-- End Mega Menu  -->
                                </li>

                                <li class="">
                                    <a href="/contact">Contact
                                    </a>
                                </li>
                            </ul>
                        </nav>
                    </div>

                    <div class="header-right">

                        <!-- Navbar Icons -->
                        <ul class="quick-access">


    
                            <li class="account-access rbt-user-wrapper d-none d-xl-block">
                                <a class="" href="/register"><i class="feather-user-plus"></i>Sign Up</a>
                            </li>
                            <li class="account-access rbt-user-wrapper d-none d-xl-block">
                                <a href="/login"><i class="feather-log-in"></i>Log In</a>
                            </li>
    

                        </ul>

                        <!-- Start Mobile-Menu-Bar -->
                        <div class="mobile-menu-bar d-block d-xl-none">
                            <div class="hamberger">

    
                                <button class="hamberger-button rbt-round-btn">
                                    <i class="feather-menu"></i>
                                </button>
                            </div>
                        </div>
                        <!-- Start Mobile-Menu-Bar -->

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

        </div>

    </header>


    <!-- Mobile Menu Section -->
    <div class="popup-mobile-menu">
        <div class="inner-wrapper">
            <div class="inner-top">
                <div class="content">
                    <div class="logo">
                        <a href="/">
                            <img src="https://cdn.revcent.com/img/revcent-logo-black.png" alt="RevCent">
                        </a>
                    </div>
                    <div class="rbt-btn-close">
                        <button class="close-button rbt-round-btn"><i class="feather-x"></i></button>
                    </div>
                </div>
            </div>

            <nav class="mainmenu-nav">
                <ul class="mainmenu">
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Payments <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <ul class="mega-menu-item">
                                            <li>
                                                <a href="/products/payments/credit-card">
                                                    Credit Card
                                                    <br>
                                                    <span class="text-muted small">The ultimate credit card payment suite</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/payment-profiles">
                                                    Payment Routing
                                                    <br>
                                                    <span class="text-muted small">Dynamically route payments</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/revenue-recovery">
                                                    Recovery Recovery
                                                    <br>
                                                    <span class="text-muted small">Automatically recover lost revenue</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/chargeback-management">
                                                    Chargebacks
                                                    <br>
                                                    <span class="text-muted small">Integrated chargeback management</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/anti-fraud">
                                                    Anti Fraud
                                                    <br>
                                                    <span class="text-muted small">Prevent fraud with Sentinel, our in-house anti-fraud tool</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/alternative">
                                                    Third Party
                                                    <br>
                                                    <span class="text-muted small">PayPal, Amazon Pay & more</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/credit-card#section-mid-management">
                                                    MID Management
                                                    <br>
                                                    <span class="text-muted small">Organize MID's and prevent cross corp transactions</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/payments/credit-card#section-card-data">
                                                    Card Storage
                                                    <br>
                                                    <span class="text-muted small">Store customer cards securely within RevCent</span>
                                                </a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Management <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <ul class="mega-menu-item">
                                            <li>
                                                <a href="/products/manage/suite">
                                                    Sales
                                                    <br>
                                                    <span class="text-muted small">View and manage sales</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-customers">
                                                    Customers
                                                    <br>
                                                    <span class="text-muted small">Customer management in one place</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-shipping">
                                                    Shipping
                                                    <br>
                                                    <span class="text-muted small">Automate with integrated fulfillment centers</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-products">
                                                    Products
                                                    <br>
                                                    <span class="text-muted small">Multiple product types and variations</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-subscriptions">
                                                    Subscriptions
                                                    <br>
                                                    <span class="text-muted small">Recurring billing made easy</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-tax">
                                                    Tax
                                                    <br>
                                                    <span class="text-muted small">Manage tax using profiles or third parties</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-organizations">
                                                    Users
                                                    <br>
                                                    <span class="text-muted small">Add users with granular permissions</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/manage/suite#section-notes">
                                                    Notes
                                                    <br>
                                                    <span class="text-muted small">Take notes on customers, sales and more</span>
                                                </a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Tracking <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <ul class="mega-menu-item">
                                            <li>
                                                <a href="/products/tracking/suite">
                                                    DNS Tracking
                                                    <br>
                                                    <span class="text-muted small">Accurately track visitors across domains</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tracking/suite#section-utilize-metadata">
                                                    Metadata
                                                    <br>
                                                    <span class="text-muted small">Utilize detailed metadata</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tracking/suite#section-conversions">
                                                    Conversions
                                                    <br>
                                                    <span class="text-muted small">Know your true conversion metrics</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tracking/suite#section-adwords">
                                                    AdWords
                                                    <br>
                                                    <span class="text-muted small">Link your AdWords account with RevCent</span>
                                                </a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <!-- End Mega Menu  -->
                    </li>
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Reporting <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <ul class="mega-menu-item">
                                            <li>
                                                <a href="/products/reporting/suite">
                                                    Reports
                                                    <br>
                                                    <span class="text-muted small">Pre-built reporting pages with popular metrics</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/reporting/suite#section-dashboard">
                                                    Dashboard
                                                    <br>
                                                    <span class="text-muted small">Advanced customizable metrics</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/reporting/suite#section-auto-queries">
                                                    Auto Queries
                                                    <br>
                                                    <span class="text-muted small">Receive custom metrics data via email, SMS and more</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/reporting/suite#section-bigquery">
                                                    BigQuery
                                                    <br>
                                                    <span class="text-muted small">Direct data access via Google BigQuery</span>
                                                </a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Tools <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <ul class="mega-menu-item">
                                            <li>
                                                <a href="/products/tools/suite">
                                                    Customer Groups
                                                    <br>
                                                    <span class="text-muted small">Hyper advanced customer segments</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-flows">
                                                    Flows
                                                    <br>
                                                    <span class="text-muted small">Visual customer engagement builder</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-functions">
                                                    Functions
                                                    <br>
                                                    <span class="text-muted small">Run custom code hosted by RevCent</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-ai">
                                                    AI
                                                    <br>
                                                    <span class="text-muted small">Natively integrated with OpenAI</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-email-templates">
                                                    Email Templates
                                                    <br>
                                                    <span class="text-muted small">Send emails according to triggers</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-firehose">
                                                    Firehose
                                                    <br>
                                                    <span class="text-muted small">Send event details to any endpoint</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/integration/suite">
                                                    Integrations
                                                    <br>
                                                    <span class="text-muted small">Inbound, outbound & custom integrations</span>
                                                </a>
                                            </li>
                                            <li>
                                                <a href="/products/tools/suite#section-customer-portals">
                                                    Customer Portals
                                                    <br>
                                                    <span class="text-muted small">Customer portals for self service</span>
                                                </a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <!-- End Mega Menu  -->
                    </li>
                    <li>
                        <a href="/pricing">
                            Pricing
                        </a>
                    </li>
                    <li class="with-megamenu has-menu-child-item position-static">
                        <a href="#">Help <i class="feather-chevron-down"></i></a>
                        <div class="rbt-megamenu grid-item-4">
                            <div class="wrapper">
                                <div class="row row--15">
                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <h3 class="rbt-short-title">Docs</h3>
                                        <ul class="mega-menu-item">
                                            <li><a href="https://kb.revcent.com/" target="_blank">Knowledge Base <i class="far fa-external-link-square-alt small"></i></a></li>
                                            <li><a href="/docs/api" target="_blank">API <i class="far fa-external-link-square-alt small"></i></a></li>
                                        </ul>
                                    </div>

                                    <div class="col-lg-12 col-xl-3 col-xxl-3 single-mega-item">
                                        <h3 class="rbt-short-title">Popular Guides</h3>
                                        <ul class="mega-menu-item">
                                            <li><a href="https://kb.revcent.com/en/tracking/conversion-tracking" target="_blank">Conversion Tracking</a></li>
                                            <li><a href="https://kb.revcent.com/integrations/third-party-shop/woocommerce-installation" target="_blank">WooCommerce Integration</a></li>
                                            <li><a href="https://kb.revcent.com/en/payments/credit-card/payment-profile" target="_blank">Payment Profiles</a></li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li>
                        <a href="/contact">
                            Contact
                        </a>
                    </li>
                </ul>
            </nav>
            <div class="mobile-menu-bottom">
                <div class="rbt-btn-wrapper mb--20">
                    <a href="/register" class="rbt-btn btn-sm bg-color-pink-4 color-hot-pink d-block text-center">Sign Up</a>
                </div>
                <div class="rbt-btn-wrapper mb--20">
                    <a href="/login" class="rbt-btn btn-sm bg-color-purple-4 d-block text-center color-purple">Login</a>
                </div>
            </div>
        </div>
    </div>
    <a class="close_side_menu" href="javascript:void(0);"></a>  </div>


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



    <section class="Section Sect--angleNormal Sect--paddingXSmall">

      <div class=" Sect__masked">
        <div class="Sect__backgroundMask">
          <div class="Sect__background bg-color-white">

          </div>
        </div>


        <div class="container Sect__container">
          <div class="container-wrap Sect__layoutContainer">
            <div class="container-inner Sect__layout">
              <div class="row text-center mb--30">
                <div class="col-12 mt--100">
                  <h1>Privacy Policy</h1>
                </div>
              </div>
              <div class="row mb--30">
                <div class="col-lg-10 offset-lg-1">
                  <h4>Overview</h4>
                  <p>
                    This privacy policy discloses the privacy practices for RevCent. This privacy policy applies solely to information collected by RevCent. It outlines of the following:
                  </p>
                  <p>
                    What personally identifiable information is collected from you through the web site, how it is used and with whom it may be shared. What choices are available to you regarding the use of your data. The security procedures in place to protect the misuse of your information. How you can correct any inaccuracies in the information.
                  </p>
                  <br>
                  <h4>Information Collection, Use, and Sharing </h4>
                  <p>
                    We are the sole owners of the information collected on RevCent. We only have access to/collect information that you provided to us during user registration. We will not sell or rent this information to anyone.
                  </p>
                  <p>
                    We may contact you via our Newsletter to tell you about site updates, new services, enhanced features or administration related notices.
                  </p>
                  <br>
                  <h4>Access and Control Over Information </h4>
                  <p>
                    You will always be in control of your data, customers, transactions and content. You can delete any and all of your information at any time. We will never sell nor redistribute your data.
                  </p>
                  <br>
                  <h4>Registration</h4>
                  <p>
                    In order to use RevCent, a user must first complete the registration form. During registration a user is required to provide an email address. Your email address is used to contact you for the initial email verification. Your email address is also used for our Newsletter with information about the services on our site.
                  </p>
                  <br>
                  <h4>Cookies</h4>
                  <p>
                    We use "cookies" on RevCent, specifically for user session storage. A cookie is a piece of data stored on a users hard drive to help us improve your experience. We only use <a class="page-theme-link" href="http://www.google.com/analytics/" target="_blank">Google Analytics</a> on the public facing portion of the website. All user account pages do not have any tracking whatsoever.
                  </p>
                  <br>
                  <h4>Sharing</h4>
                  <p>
                    We do not and will not share your personal information with any third party whatsoever. We strongly believe in user privacy.
                  </p>
                  <br>
                  <h4>Private Data</h4>
                  <p>
                    Your data will never be shared, accessible or visible to anyone but you. Your data is considered extremely important and we take all precautions to ensure it is safe and secure.
                  </p>
                  <br>
                  <h4>Updates</h4>
                  <p>
                    Our Privacy Policy may change and all updates will be emailed to our users as well as posted on this page. Privacy policy changes will not take effect until two weeks after we have notified all users.
                  </p>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>


    <footer class="Section SiteFooterSection Sect--paddingXSmall">

      <div class=" Sect__masked">
        <div class="Sect__backgroundMask">
          <div class="Sect__background bg-color-white">

          </div>
        </div>
        <div class="container Sect__container">
          <div class="container-wrap Sect__layoutContainer">
            <div class="container-inner Sect__layout">
              
                      <!-- Start Copyright Area  -->
                      <div class="copyright-area copyright-style-1 ptb--20">
                          <div class="container">
                              <div class="row align-items-center">
                                  <div class="col-xxl-6 col-xl-6 col-lg-6 col-md-12 col-12">
                                      <p class="rbt-link-hover text-center text-lg-start">© RevCent</p>
                                  </div>
                                  <div class="col-xxl-6 col-xl-6 col-lg-6 col-md-12 col-12">
                                      <ul class="copyright-link rbt-link-hover justify-content-center justify-content-lg-end mt_sm--10 mt_md--10">
                                          <li><a href="/terms-and-conditions">Terms & Conditions</a></li>
                                          <li><a href="/privacy-policy">Privacy Policy</a></li>
                                      </ul>
                                  </div>
                              </div>
                          </div>
                      </div>
                      <!-- End Copyright Area  -->            </div>
          </div>
        </div>
      </div>
    </footer>

  </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>