{"id":73093,"date":"2023-11-08T09:14:36","date_gmt":"2023-11-08T13:14:36","guid":{"rendered":"http:\/\/demo.dentalvibe.com\/?page_id=73093"},"modified":"2023-11-17T03:10:34","modified_gmt":"2023-11-17T07:10:34","slug":"duplicated-home-landing-page-new-2","status":"publish","type":"page","link":"https:\/\/dentalvibe.com\/ru\/","title":{"rendered":"New Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"73093\" class=\"elementor elementor-73093\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-beaf8bc elementor-section-full_width main_new_banner elementor-section-height-default elementor-section-height-default\" data-id=\"beaf8bc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-836dab8\" data-id=\"836dab8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b32e1f1 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"b32e1f1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-b74c490\" data-id=\"b74c490\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-73d11ae fiximg de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"73d11ae\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"fiximg\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1920\" height=\"858\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1.jpg\" class=\"attachment-full size-full wp-image-71897\" alt=\"Header woman1\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1.jpg 1920w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1-300x134.jpg 300w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1-1024x458.jpg 1024w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1-768x343.jpg 768w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1-1536x686.jpg 1536w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1-600x268.jpg 600w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6ede955 banner_content_data elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ede955\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-2ab5b06\" data-id=\"2ab5b06\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8cf2259 banner_text desktext animated-slow elementor-hidden-mobile de_scroll_animation_no elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"8cf2259\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:5}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><i>only<\/i> DentalVibe<span>&#174;<\/span> dentists are <br> fearlessly dedicated to your comfort<span class=\"tm\">&#8482;<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bda4ae3 banner_text mobtext animated-slow elementor-hidden-mobile de_scroll_animation_no elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"bda4ae3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:5}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">fearlessly dedicated to <br> your comfort<span class=\"tm\">\u2122<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-379d440 ban_btn ban_btn_first elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"379d440\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/dentalvibe.com\/pain-free-dentists-find-a-dentist-near-you\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Find a <b>DentalVibe<\/b><span>&#174;<\/span> dentist<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c069329 ban_btn elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"c069329\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/store.dentalvibe.com\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Purchase a <b>DentalVibe<\/b><span>&#174;<\/span> <\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a24b55 banner_small_logo de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"5a24b55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"321\" height=\"50\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header.png\" class=\"attachment-full size-full wp-image-72244\" alt=\"\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header.png 321w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header-300x47.png 300w\" sizes=\"(max-width: 321px) 100vw, 321px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b4b665f elementor-section-full_width home_new_banner fixed_banner d_row elementor-section-height-default elementor-section-height-default\" data-id=\"b4b665f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dc40e64\" data-id=\"dc40e64\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-ec25de4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ec25de4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-7f674bf\" data-id=\"7f674bf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-33d5097 banner_text animated-slow elementor-hidden-desktop elementor-hidden-tablet de_scroll_animation_no elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"33d5097\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:5}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">fearlessly dedicated to your comfort<span class=\"tm\">&#8482;<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a944863 banner_text animated-slow elementor-hidden-mobile de_scroll_animation_no elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"a944863\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:5}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><i>only<\/i> DentalVibe<span>&#174;<\/span> dentists are <br> fearlessly dedicated to your comfort<span class=\"tm\">&#8482;<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d78761 ban_btn ban_btn_first elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"9d78761\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/dentalvibe.com\/pain-free-dentists-find-a-dentist-near-you\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Find a <b>DentalVibe<\/b><span>&#174;<\/span> dentist<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36446bd ban_btn elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"36446bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/store.dentalvibe.com\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Purchase a <b>DentalVibe<\/b><span>&#174;<\/span> <\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e2a562 banner_small_logo de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"1e2a562\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"321\" height=\"50\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header.png\" class=\"attachment-full size-full wp-image-72244\" alt=\"\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header.png 321w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header-300x47.png 300w\" sizes=\"(max-width: 321px) 100vw, 321px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2b07f93 elementor-section-full_width first_banner m_row elementor-section-height-default elementor-section-height-default\" data-id=\"2b07f93\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-05b81d6\" data-id=\"05b81d6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f6ce91b de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"f6ce91b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n\r\n<div class=\"jarallax\" data-speed=\"-0.4\">\r\n  <img decoding=\"async\" class=\"jarallax-img\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/Header-woman1.jpg\" alt=\"\" loading=\"lazy\" \/>\r\n  <div class=\"banner_jacontent\">\r\n     <h2 class=\"ban_content\">\r\n        <i>only<\/i> DentalVibe<span>\u00ae<\/span> dentists are <br> fearlessly dedicated to your comfort<span class=\"tm\">\u2122<\/span>\r\n     <\/h2>\r\n     <h2 class=\"elementor-heading-title m_text_data elementor-size-default\">fearlessly dedicated to your comfort<span class=\"tm\">\u2122<\/span><\/h2>\r\n     <div class=\"b_btns\">\r\n        <a href=\"https:\/\/dentalvibe.com\/pain-free-dentists-find-a-dentist-near-you\" class=\"elementor-button-link elementor-button elementor-size-sm\" role=\"button\">\r\n            <span class=\"elementor-button-text\">Find a <b>DentalVibe<\/b><span>\u00ae<\/span> dentist<\/span>\r\n        <\/a>\r\n        <a href=\"https:\/\/store.dentalvibe.com\" class=\"elementor-button-link elementor-button elementor-size-sm\" role=\"button\">\r\n            <span class=\"elementor-button-text\">Purchase a <b>DentalVibe<\/b><span>\u00ae<\/span> <\/span>\r\n        <\/a>\r\n        <div class=\"ban_img\">\r\n            <img decoding=\"async\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/dlogo_header.png\" alt=\"\">\r\n        <\/div>\r\n     <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n\r\n<style>\r\n\r\n.jarallax-keep-img {\r\nposition: relative;\r\nz-index: 0;\r\n}\r\n\r\n\r\n.jarallax-keep-img > .jarallax-img {\r\nposition: relative;\r\ndisplay: block;\r\nmax-width: 100%;\r\nheight: auto;\r\nz-index: -100;\r\nopacity: 0;\r\n}\r\n\r\n.jarallax {\r\nmin-height: 500px;\r\n}\r\n\r\nsection.elementor-section.elementor-section-full_width.first_banner.elementor-section-height-default .elementor-container.elementor-column-gap-default {\r\n    padding: 0 !important;\r\n}\r\n\r\n.banner_jacontent {\r\n    padding: 40px 50px;\r\n}\r\n\r\n.banner_jacontent h2.ban_content {\r\n    color: #FFFFFF;\r\n    font-family: \"Proxima Nova\", Sans-serif;\r\n    font-size: 44px;\r\n    font-weight: 100;\r\n    line-height: 1.1em;\r\n    letter-spacing: 3.46px;\r\n    text-align: center;\r\n}\r\n\r\n.banner_jacontent .b_btns .ban_img {\r\n    position: absolute;\r\n    bottom: 39px;\r\n    right: 35px;\r\n}\r\n\r\n.banner_jacontent .b_btns .ban_img img {\r\n    max-width: 230px;\r\n}\r\n\r\n.banner_jacontent .b_btns {\r\n    display: inline-flex;\r\n    flex-direction: column;\r\n    margin-top: 55px;\r\n}\r\n\r\n.banner_jacontent .b_btns .elementor-button-link {\r\n    padding: 12px 14px;\r\n    font-size: 16px;\r\n    min-width: 225px;\r\n    text-transform: none;\r\n    text-align: center;\r\n    display: inline-block;\r\n    position: relative;\r\n    z-index: 1;\r\n    font-family: \"Proxima Nova\", Sans-serif;\r\n    font-weight: 400;\r\n    background-color: #85C9B2;\r\n    border-radius: 6px 6px 6px 6px;\r\n}\r\n\r\n.banner_jacontent .b_btns .elementor-button-link + .elementor-button-link {\r\n    margin-top: 20px;\r\n}\r\n\r\n.banner_jacontent h2.elementor-heading-title.m_text_data.elementor-size-default {\r\n    display: none;\r\n}\r\n\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .elementor-container.elementor-column-gap-default {\r\n    padding: 0 !important;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content {\r\n    padding: 138px 40px;\r\n    text-align: center;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .elementor-heading-title {\r\n    color: #FFFFFF;\r\n    font-family: \"Proxima Nova\", Sans-serif;\r\n    font-size: 42px;\r\n    font-weight: 600;\r\n    line-height: 1.2em;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .sm_txt .elementor-heading-title {\r\n    color: #FFFFFF;\r\n    font-family: \"Proxima Nova\", Sans-serif;\r\n    font-size: 29px;\r\n    font-weight: 400;\r\n    line-height: 1.3em;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .sm_txt {\r\n    margin: 17px 0 32px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .smbtn .elementor-button-link {\r\n    font-size: 21px;\r\n    text-transform: none;\r\n    background-color: #76CCF3;\r\n    border-radius: 5px 5px 5px 5px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full.order_now_full_second .scnd_banner_content .sm_txt h2.elementor-heading-title {\r\n    font-size: 22px;\r\n}\r\n\r\n@media (max-width:767px) {\r\n\r\n    .banner_jacontent h2.elementor-heading-title.m_text_data.elementor-size-default {\r\n    display: block;\r\n    font-size: 30px;\r\n    letter-spacing: 1.40px;\r\n    color: #FFFFFF;\r\n    font-family: \"Proxima Nova\", Sans-serif;\r\n    text-align: center;\r\n    font-weight: 100;\r\n    line-height: 1.1em;\r\n}\r\n\r\n.banner_jacontent h2.elementor-heading-title.m_text_data.elementor-size-default span.tm {\r\n    font-size: 26px;\r\n    top: 0px;\r\n    position: relative;\r\n}\r\n\r\n    .banner_jacontent h2.ban_content {\r\n      display: none;\r\n    }\r\n\r\n    section.elementor-section.elementor-top-section.elementor-element.elementor-section-full_width.first_banner.elementor-section-height-default.elementor-section-height-default .elementor-widget.elementor-widget-html {\r\n    padding: 0 !important;\r\n}\r\n\r\n.banner_jacontent {\r\n    padding: 214px 20px 40px;\r\n}\r\n\r\n.banner_jacontent .b_btns .elementor-button-link {\r\n    display: none;\r\n}\r\n\r\n.banner_jacontent .b_btns .ban_img img {\r\n    max-width: 110px;\r\n}\r\n\r\n.banner_jacontent .b_btns .ban_img {\r\n    right: 20px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .elementor-widget.elementor-widget-html {\r\n    padding: 0 !important;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .elementor-heading-title {\r\n    font-size: 28px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .sm_txt .elementor-heading-title {\r\n    font-size: 18px;\r\n    line-height: 1.3em;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .smbtn .elementor-button-link {\r\n    font-size: 14px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content .sm_txt {\r\n    margin: 14px 0 22px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .scnd_banner_content {\r\n    padding: 117px 40px 20px;\r\n    text-align: center;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full .jarallax {\r\n    min-height: 400px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full.order_now_full_second .scnd_banner_content h2.elementor-heading-title {\r\n    font-size: 26px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full.order_now_full_second .scnd_banner_content .sm_txt h2.elementor-heading-title br {\r\n    display: none;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full.order_now_full_second .scnd_banner_content {\r\n    padding: 110px 25px 20px;\r\n}\r\n\r\nsection.elementor-section.elementor-top-section.elementor-section-full_width.order_now_full.order_now_full_second .scnd_banner_content .sm_txt h2.elementor-heading-title {\r\n    font-size: 17px;\r\n}\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n\/*!\r\n* Jarallax v2.1.4 (https:\/\/github.com\/nk-o\/jarallax)\r\n* Copyright 2023 nK <https:\/\/nkdev.info>\r\n* Licensed under MIT (https:\/\/github.com\/nk-o\/jarallax\/blob\/master\/LICENSE)\r\n*\/\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\ntypeof define === 'function' && define.amd ? define(factory) :\r\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jarallax = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n\/**\r\n* Document ready callback.\r\n* @param {Function} callback - callback will be fired once Document ready.\r\n*\/\r\nfunction ready(callback) {\r\nif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n  \/\/ Already ready or interactive, execute callback\r\n  callback();\r\n} else {\r\n  document.addEventListener('DOMContentLoaded', callback, {\r\n    capture: true,\r\n    once: true,\r\n    passive: true\r\n  });\r\n}\r\n}\r\n\r\n\/* eslint-disable import\/no-mutable-exports *\/\r\n\/* eslint-disable no-restricted-globals *\/\r\nlet win;\r\nif (typeof window !== 'undefined') {\r\nwin = window;\r\n} else if (typeof global !== 'undefined') {\r\nwin = global;\r\n} else if (typeof self !== 'undefined') {\r\nwin = self;\r\n} else {\r\nwin = {};\r\n}\r\nvar global$1 = win;\r\n\r\nvar defaults = {\r\n\/\/ Base parallax options.\r\ntype: 'scroll',\r\nspeed: 0.5,\r\ncontainerClass: 'jarallax-container',\r\nimgSrc: null,\r\nimgElement: '.jarallax-img',\r\nimgSize: 'cover',\r\nimgPosition: '50% 50%',\r\nimgRepeat: 'no-repeat',\r\nkeepImg: false,\r\nelementInViewport: null,\r\nzIndex: -100,\r\ndisableParallax: false,\r\n\/\/ Callbacks.\r\nonScroll: null,\r\nonInit: null,\r\nonDestroy: null,\r\nonCoverImage: null,\r\n\/\/ Video options.\r\nvideoClass: 'jarallax-video',\r\nvideoSrc: null,\r\nvideoStartTime: 0,\r\nvideoEndTime: 0,\r\nvideoVolume: 0,\r\nvideoLoop: true,\r\nvideoPlayOnlyVisible: true,\r\nvideoLazyLoading: true,\r\ndisableVideo: false,\r\n\/\/ Video callbacks.\r\nonVideoInsert: null,\r\nonVideoWorkerInit: null\r\n};\r\n\r\n\/**\r\n* Add styles to element.\r\n*\r\n* @param {Element} el - element.\r\n* @param {String|Object} styles - styles list.\r\n*\r\n* @returns {Element}\r\n*\/\r\nfunction css(el, styles) {\r\nif (typeof styles === 'string') {\r\n  return global$1.getComputedStyle(el).getPropertyValue(styles);\r\n}\r\nObject.keys(styles).forEach(key => {\r\n  el.style[key] = styles[key];\r\n});\r\nreturn el;\r\n}\r\n\r\n\/**\r\n* Extend like jQuery.extend\r\n*\r\n* @param {Object} out - output object.\r\n* @param {...any} args - additional objects to extend.\r\n*\r\n* @returns {Object}\r\n*\/\r\nfunction extend(out, ...args) {\r\nout = out || {};\r\nObject.keys(args).forEach(i => {\r\n  if (!args[i]) {\r\n    return;\r\n  }\r\n  Object.keys(args[i]).forEach(key => {\r\n    out[key] = args[i][key];\r\n  });\r\n});\r\nreturn out;\r\n}\r\n\r\n\/**\r\n* Get all parents of the element.\r\n*\r\n* @param {Element} elem - DOM element.\r\n*\r\n* @returns {Array}\r\n*\/\r\nfunction getParents(elem) {\r\nconst parents = [];\r\nwhile (elem.parentElement !== null) {\r\n  elem = elem.parentElement;\r\n  if (elem.nodeType === 1) {\r\n    parents.push(elem);\r\n  }\r\n}\r\nreturn parents;\r\n}\r\n\r\nconst {\r\nnavigator: navigator$1\r\n} = global$1;\r\nconst mobileAgent = \/*#__PURE__*\/ \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator$1.userAgent);\r\nfunction isMobile() {\r\nreturn mobileAgent;\r\n}\r\n\r\nlet wndW;\r\nlet wndH;\r\nlet $deviceHelper;\r\n\r\n\/**\r\n* The most popular mobile browsers changes height after page scroll and this generates image jumping.\r\n* We can fix it using this workaround with vh units.\r\n*\/\r\nfunction getDeviceHeight() {\r\nif (!$deviceHelper && document.body) {\r\n  $deviceHelper = document.createElement('div');\r\n  $deviceHelper.style.cssText = 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\r\n  document.body.appendChild($deviceHelper);\r\n}\r\nreturn ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\nfunction updateWindowHeight() {\r\nwndW = global$1.innerWidth || document.documentElement.clientWidth;\r\nif (isMobile()) {\r\n  wndH = getDeviceHeight();\r\n} else {\r\n  wndH = global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\n}\r\nupdateWindowHeight();\r\nglobal$1.addEventListener('resize', updateWindowHeight);\r\nglobal$1.addEventListener('orientationchange', updateWindowHeight);\r\nglobal$1.addEventListener('load', updateWindowHeight);\r\nready(() => {\r\nupdateWindowHeight();\r\n});\r\nfunction getWindowSize() {\r\nreturn {\r\n  width: wndW,\r\n  height: wndH\r\n};\r\n}\r\n\r\n\/\/ List with all jarallax instances\r\n\/\/ need to render all in one scroll\/resize event.\r\nconst jarallaxList = [];\r\nfunction updateParallax() {\r\nif (!jarallaxList.length) {\r\n  return;\r\n}\r\nconst {\r\n  width: wndW,\r\n  height: wndH\r\n} = getWindowSize();\r\njarallaxList.forEach((data, k) => {\r\n  const {\r\n    instance,\r\n    oldData\r\n  } = data;\r\n  if (!instance.isVisible()) {\r\n    return;\r\n  }\r\n  const clientRect = instance.$item.getBoundingClientRect();\r\n  const newData = {\r\n    width: clientRect.width,\r\n    height: clientRect.height,\r\n    top: clientRect.top,\r\n    bottom: clientRect.bottom,\r\n    wndW,\r\n    wndH\r\n  };\r\n  const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;\r\n  const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\r\n  jarallaxList[k].oldData = newData;\r\n  if (isResized) {\r\n    instance.onResize();\r\n  }\r\n  if (isScrolled) {\r\n    instance.onScroll();\r\n  }\r\n});\r\nglobal$1.requestAnimationFrame(updateParallax);\r\n}\r\nconst visibilityObserver = \/*#__PURE__*\/new global$1.IntersectionObserver(entries => {\r\nentries.forEach(entry => {\r\n  entry.target.jarallax.isElementInViewport = entry.isIntersecting;\r\n});\r\n}, {\r\n\/\/ We have to start parallax calculation before the block is in view\r\n\/\/ to prevent possible parallax jumping.\r\nrootMargin: '50px'\r\n});\r\nfunction addObserver(instance) {\r\njarallaxList.push({\r\n  instance\r\n});\r\nif (jarallaxList.length === 1) {\r\n  global$1.requestAnimationFrame(updateParallax);\r\n}\r\nvisibilityObserver.observe(instance.options.elementInViewport || instance.$item);\r\n}\r\nfunction removeObserver(instance) {\r\njarallaxList.forEach((data, key) => {\r\n  if (data.instance.instanceID === instance.instanceID) {\r\n    jarallaxList.splice(key, 1);\r\n  }\r\n});\r\nvisibilityObserver.unobserve(instance.options.elementInViewport || instance.$item);\r\n}\r\n\r\n\/* eslint-disable class-methods-use-this *\/\r\nconst {\r\nnavigator\r\n} = global$1;\r\nlet instanceID = 0;\r\n\r\n\/\/ Jarallax class\r\nclass Jarallax {\r\nconstructor(item, userOptions) {\r\n  const self = this;\r\n  self.instanceID = instanceID;\r\n  instanceID += 1;\r\n  self.$item = item;\r\n  self.defaults = {\r\n    ...defaults\r\n  };\r\n\r\n  \/\/ prepare data-options\r\n  const dataOptions = self.$item.dataset || {};\r\n  const pureDataOptions = {};\r\n  Object.keys(dataOptions).forEach(key => {\r\n    const lowerCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\r\n    if (lowerCaseOption && typeof self.defaults[lowerCaseOption] !== 'undefined') {\r\n      pureDataOptions[lowerCaseOption] = dataOptions[key];\r\n    }\r\n  });\r\n  self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\r\n  self.pureOptions = self.extend({}, self.options);\r\n\r\n  \/\/ prepare 'true' and 'false' strings to boolean\r\n  Object.keys(self.options).forEach(key => {\r\n    if (self.options[key] === 'true') {\r\n      self.options[key] = true;\r\n    } else if (self.options[key] === 'false') {\r\n      self.options[key] = false;\r\n    }\r\n  });\r\n\r\n  \/\/ fix speed option [-1.0, 2.0]\r\n  self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\r\n\r\n  \/\/ prepare disableParallax callback\r\n  if (typeof self.options.disableParallax === 'string') {\r\n    self.options.disableParallax = new RegExp(self.options.disableParallax);\r\n  }\r\n  if (self.options.disableParallax instanceof RegExp) {\r\n    const disableParallaxRegexp = self.options.disableParallax;\r\n    self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableParallax !== 'function') {\r\n    self.options.disableParallax = () => false;\r\n  }\r\n\r\n  \/\/ prepare disableVideo callback\r\n  if (typeof self.options.disableVideo === 'string') {\r\n    self.options.disableVideo = new RegExp(self.options.disableVideo);\r\n  }\r\n  if (self.options.disableVideo instanceof RegExp) {\r\n    const disableVideoRegexp = self.options.disableVideo;\r\n    self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableVideo !== 'function') {\r\n    self.options.disableVideo = () => false;\r\n  }\r\n\r\n  \/\/ custom element to check if parallax in viewport\r\n  let elementInVP = self.options.elementInViewport;\r\n  \/\/ get first item from array\r\n  if (elementInVP && typeof elementInVP === 'object' && typeof elementInVP.length !== 'undefined') {\r\n    [elementInVP] = elementInVP;\r\n  }\r\n  \/\/ check if dom element\r\n  if (!(elementInVP instanceof Element)) {\r\n    elementInVP = null;\r\n  }\r\n  self.options.elementInViewport = elementInVP;\r\n  self.image = {\r\n    src: self.options.imgSrc || null,\r\n    $container: null,\r\n    useImgTag: false,\r\n    \/\/ 1. Position fixed is needed for the most of browsers because absolute position have glitches\r\n    \/\/ 2. On MacOS with smooth scroll there is a huge lags with absolute position - https:\/\/github.com\/nk-o\/jarallax\/issues\/75\r\n    \/\/ 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\r\n    position: 'fixed'\r\n  };\r\n  if (self.initImg() && self.canInitParallax()) {\r\n    self.init();\r\n  }\r\n}\r\ncss(el, styles) {\r\n  return css(el, styles);\r\n}\r\nextend(out, ...args) {\r\n  return extend(out, ...args);\r\n}\r\n\r\n\/\/ get window size and scroll position. Useful for extensions\r\ngetWindowData() {\r\n  const {\r\n    width,\r\n    height\r\n  } = getWindowSize();\r\n  return {\r\n    width,\r\n    height,\r\n    y: document.documentElement.scrollTop\r\n  };\r\n}\r\n\r\n\/\/ Jarallax functions\r\ninitImg() {\r\n  const self = this;\r\n\r\n  \/\/ find image element\r\n  let $imgElement = self.options.imgElement;\r\n  if ($imgElement && typeof $imgElement === 'string') {\r\n    $imgElement = self.$item.querySelector($imgElement);\r\n  }\r\n\r\n  \/\/ check if dom element\r\n  if (!($imgElement instanceof Element)) {\r\n    if (self.options.imgSrc) {\r\n      $imgElement = new Image();\r\n      $imgElement.src = self.options.imgSrc;\r\n    } else {\r\n      $imgElement = null;\r\n    }\r\n  }\r\n  if ($imgElement) {\r\n    if (self.options.keepImg) {\r\n      self.image.$item = $imgElement.cloneNode(true);\r\n    } else {\r\n      self.image.$item = $imgElement;\r\n      self.image.$itemParent = $imgElement.parentNode;\r\n    }\r\n    self.image.useImgTag = true;\r\n  }\r\n\r\n  \/\/ true if there is img tag\r\n  if (self.image.$item) {\r\n    return true;\r\n  }\r\n\r\n  \/\/ get image src\r\n  if (self.image.src === null) {\r\n    self.image.src = 'data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n    self.image.bgImage = self.css(self.$item, 'background-image');\r\n  }\r\n  return !(!self.image.bgImage || self.image.bgImage === 'none');\r\n}\r\ncanInitParallax() {\r\n  return !this.options.disableParallax();\r\n}\r\ninit() {\r\n  const self = this;\r\n  const containerStyles = {\r\n    position: 'absolute',\r\n    top: 0,\r\n    left: 0,\r\n    width: '100%',\r\n    height: '100%',\r\n    overflow: 'hidden'\r\n  };\r\n  let imageStyles = {\r\n    pointerEvents: 'none',\r\n    transformStyle: 'preserve-3d',\r\n    backfaceVisibility: 'hidden'\r\n  };\r\n  if (!self.options.keepImg) {\r\n    \/\/ save default user styles\r\n    const curStyle = self.$item.getAttribute('style');\r\n    if (curStyle) {\r\n      self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n    }\r\n    if (self.image.useImgTag) {\r\n      const curImgStyle = self.image.$item.getAttribute('style');\r\n      if (curImgStyle) {\r\n        self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ set relative position and z-index to the parent\r\n  if (self.css(self.$item, 'position') === 'static') {\r\n    self.css(self.$item, {\r\n      position: 'relative'\r\n    });\r\n  }\r\n  if (self.css(self.$item, 'z-index') === 'auto') {\r\n    self.css(self.$item, {\r\n      zIndex: 0\r\n    });\r\n  }\r\n\r\n  \/\/ container for parallax image\r\n  self.image.$container = document.createElement('div');\r\n  self.css(self.image.$container, containerStyles);\r\n  self.css(self.image.$container, {\r\n    'z-index': self.options.zIndex\r\n  });\r\n\r\n  \/\/ it will remove some image overlapping\r\n  \/\/ overlapping occur due to an image position fixed inside absolute position element\r\n  \/\/ needed only when background in fixed position\r\n  if (this.image.position === 'fixed') {\r\n    self.css(self.image.$container, {\r\n      '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\r\n      'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'\r\n    });\r\n  }\r\n\r\n  \/\/ Add container unique ID.\r\n  self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\r\n\r\n  \/\/ Add container class.\r\n  if (self.options.containerClass) {\r\n    self.image.$container.setAttribute('class', self.options.containerClass);\r\n  }\r\n  self.$item.appendChild(self.image.$container);\r\n\r\n  \/\/ use img tag\r\n  if (self.image.useImgTag) {\r\n    imageStyles = self.extend({\r\n      'object-fit': self.options.imgSize,\r\n      'object-position': self.options.imgPosition,\r\n      'max-width': 'none'\r\n    }, containerStyles, imageStyles);\r\n\r\n    \/\/ use div with background image\r\n  } else {\r\n    self.image.$item = document.createElement('div');\r\n    if (self.image.src) {\r\n      imageStyles = self.extend({\r\n        'background-position': self.options.imgPosition,\r\n        'background-size': self.options.imgSize,\r\n        'background-repeat': self.options.imgRepeat,\r\n        'background-image': self.image.bgImage || `url(\"${self.image.src}\")`\r\n      }, containerStyles, imageStyles);\r\n    }\r\n  }\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\r\n    self.image.position = 'absolute';\r\n  }\r\n\r\n  \/\/ 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\r\n  \/\/    discussion - https:\/\/github.com\/nk-o\/jarallax\/issues\/9\r\n  \/\/ 2. Check if parents have overflow scroll\r\n  if (self.image.position === 'fixed') {\r\n    const $parents = getParents(self.$item).filter(el => {\r\n      const styles = global$1.getComputedStyle(el);\r\n      const parentTransform = styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\r\n      const overflowRegex = \/(auto|scroll)\/;\r\n      return parentTransform && parentTransform !== 'none' || overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x']);\r\n    });\r\n    self.image.position = $parents.length ? 'absolute' : 'fixed';\r\n  }\r\n\r\n  \/\/ add position to parallax block\r\n  imageStyles.position = self.image.position;\r\n\r\n  \/\/ insert parallax image\r\n  self.css(self.image.$item, imageStyles);\r\n  self.image.$container.appendChild(self.image.$item);\r\n\r\n  \/\/ set initial position and size\r\n  self.onResize();\r\n  self.onScroll(true);\r\n\r\n  \/\/ call onInit event\r\n  if (self.options.onInit) {\r\n    self.options.onInit.call(self);\r\n  }\r\n\r\n  \/\/ remove default user background\r\n  if (self.css(self.$item, 'background-image') !== 'none') {\r\n    self.css(self.$item, {\r\n      'background-image': 'none'\r\n    });\r\n  }\r\n  addObserver(self);\r\n}\r\ndestroy() {\r\n  const self = this;\r\n  removeObserver(self);\r\n\r\n  \/\/ return styles on container as before jarallax init\r\n  const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\r\n  self.$item.removeAttribute('data-jarallax-original-styles');\r\n  \/\/ null occurs if there is no style tag before jarallax init\r\n  if (!originalStylesTag) {\r\n    self.$item.removeAttribute('style');\r\n  } else {\r\n    self.$item.setAttribute('style', originalStylesTag);\r\n  }\r\n  if (self.image.useImgTag) {\r\n    \/\/ return styles on img tag as before jarallax init\r\n    const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\r\n    self.image.$item.removeAttribute('data-jarallax-original-styles');\r\n    \/\/ null occurs if there is no style tag before jarallax init\r\n    if (!originalStylesImgTag) {\r\n      self.image.$item.removeAttribute('style');\r\n    } else {\r\n      self.image.$item.setAttribute('style', originalStylesTag);\r\n    }\r\n\r\n    \/\/ move img tag to its default position\r\n    if (self.image.$itemParent) {\r\n      self.image.$itemParent.appendChild(self.image.$item);\r\n    }\r\n  }\r\n\r\n  \/\/ remove additional dom elements\r\n  if (self.image.$container) {\r\n    self.image.$container.parentNode.removeChild(self.image.$container);\r\n  }\r\n\r\n  \/\/ call onDestroy event\r\n  if (self.options.onDestroy) {\r\n    self.options.onDestroy.call(self);\r\n  }\r\n\r\n  \/\/ delete jarallax from item\r\n  delete self.$item.jarallax;\r\n}\r\ncoverImage() {\r\n  const self = this;\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.image.$container.getBoundingClientRect();\r\n  const contH = rect.height;\r\n  const {\r\n    speed\r\n  } = self.options;\r\n  const isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\r\n  let scrollDist = 0;\r\n  let resultH = contH;\r\n  let resultMT = 0;\r\n\r\n  \/\/ scroll parallax\r\n  if (isScroll) {\r\n    \/\/ scroll distance and height for image\r\n    if (speed < 0) {\r\n      scrollDist = speed * Math.max(contH, wndH);\r\n      if (wndH < contH) {\r\n        scrollDist -= speed * (contH - wndH);\r\n      }\r\n    } else {\r\n      scrollDist = speed * (contH + wndH);\r\n    }\r\n\r\n    \/\/ size for scroll parallax\r\n    if (speed > 1) {\r\n      resultH = Math.abs(scrollDist - wndH);\r\n    } else if (speed < 0) {\r\n      resultH = scrollDist \/ speed + Math.abs(scrollDist);\r\n    } else {\r\n      resultH += (wndH - contH) * (1 - speed);\r\n    }\r\n    scrollDist \/= 2;\r\n  }\r\n\r\n  \/\/ store scroll distance\r\n  self.parallaxScrollDistance = scrollDist;\r\n\r\n  \/\/ vertical center\r\n  if (isScroll) {\r\n    resultMT = (wndH - resultH) \/ 2;\r\n  } else {\r\n    resultMT = (contH - resultH) \/ 2;\r\n  }\r\n\r\n  \/\/ apply result to item\r\n  self.css(self.image.$item, {\r\n    height: `${resultH}px`,\r\n    marginTop: `${resultMT}px`,\r\n    left: self.image.position === 'fixed' ? `${rect.left}px` : '0',\r\n    width: `${rect.width}px`\r\n  });\r\n\r\n  \/\/ call onCoverImage event\r\n  if (self.options.onCoverImage) {\r\n    self.options.onCoverImage.call(self);\r\n  }\r\n\r\n  \/\/ return some useful data. Used in the video cover function\r\n  return {\r\n    image: {\r\n      height: resultH,\r\n      marginTop: resultMT\r\n    },\r\n    container: rect\r\n  };\r\n}\r\nisVisible() {\r\n  return this.isElementInViewport || false;\r\n}\r\nonScroll(force) {\r\n  const self = this;\r\n\r\n  \/\/ stop calculations if item is not in viewport\r\n  if (!force && !self.isVisible()) {\r\n    return;\r\n  }\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.$item.getBoundingClientRect();\r\n  const contT = rect.top;\r\n  const contH = rect.height;\r\n  const styles = {};\r\n\r\n  \/\/ calculate parallax helping variables\r\n  const beforeTop = Math.max(0, contT);\r\n  const beforeTopEnd = Math.max(0, contH + contT);\r\n  const afterTop = Math.max(0, -contT);\r\n  const beforeBottom = Math.max(0, contT + contH - wndH);\r\n  const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\r\n  const afterBottom = Math.max(0, -contT + wndH - contH);\r\n  const fromViewportCenter = 1 - 2 * ((wndH - contT) \/ (wndH + contH));\r\n\r\n  \/\/ calculate on how percent of section is visible\r\n  let visiblePercent = 1;\r\n  if (contH < wndH) {\r\n    visiblePercent = 1 - (afterTop || beforeBottom) \/ contH;\r\n  } else if (beforeTopEnd <= wndH) {\r\n    visiblePercent = beforeTopEnd \/ wndH;\r\n  } else if (beforeBottomEnd <= wndH) {\r\n    visiblePercent = beforeBottomEnd \/ wndH;\r\n  }\r\n\r\n  \/\/ opacity\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\r\n    styles.transform = 'translate3d(0,0,0)';\r\n    styles.opacity = visiblePercent;\r\n  }\r\n\r\n  \/\/ scale\r\n  if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\r\n    let scale = 1;\r\n    if (self.options.speed < 0) {\r\n      scale -= self.options.speed * visiblePercent;\r\n    } else {\r\n      scale += self.options.speed * (1 - visiblePercent);\r\n    }\r\n    styles.transform = `scale(${scale}) translate3d(0,0,0)`;\r\n  }\r\n\r\n  \/\/ scroll\r\n  if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\r\n    let positionY = self.parallaxScrollDistance * fromViewportCenter;\r\n\r\n    \/\/ fix if parallax block in absolute position\r\n    if (self.image.position === 'absolute') {\r\n      positionY -= contT;\r\n    }\r\n    styles.transform = `translate3d(0,${positionY}px,0)`;\r\n  }\r\n  self.css(self.image.$item, styles);\r\n\r\n  \/\/ call onScroll event\r\n  if (self.options.onScroll) {\r\n    self.options.onScroll.call(self, {\r\n      section: rect,\r\n      beforeTop,\r\n      beforeTopEnd,\r\n      afterTop,\r\n      beforeBottom,\r\n      beforeBottomEnd,\r\n      afterBottom,\r\n      visiblePercent,\r\n      fromViewportCenter\r\n    });\r\n  }\r\n}\r\nonResize() {\r\n  this.coverImage();\r\n}\r\n}\r\n\r\n\/\/ global definition\r\nconst jarallax = function (items, options, ...args) {\r\n\/\/ check for dom element\r\n\/\/ thanks: http:\/\/stackoverflow.com\/questions\/384286\/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\r\nif (typeof HTMLElement === 'object' ? items instanceof HTMLElement : items && typeof items === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\r\n  items = [items];\r\n}\r\nconst len = items.length;\r\nlet k = 0;\r\nlet ret;\r\nfor (k; k < len; k += 1) {\r\n  if (typeof options === 'object' || typeof options === 'undefined') {\r\n    if (!items[k].jarallax) {\r\n      items[k].jarallax = new Jarallax(items[k], options);\r\n    }\r\n  } else if (items[k].jarallax) {\r\n    \/\/ eslint-disable-next-line prefer-spread\r\n    ret = items[k].jarallax[options].apply(items[k].jarallax, args);\r\n  }\r\n  if (typeof ret !== 'undefined') {\r\n    return ret;\r\n  }\r\n}\r\nreturn items;\r\n};\r\njarallax.constructor = Jarallax;\r\n\r\nconst $ = global$1.jQuery;\r\n\r\n\/\/ jQuery support\r\nif (typeof $ !== 'undefined') {\r\nconst $Plugin = function (...args) {\r\n  Array.prototype.unshift.call(args, this);\r\n  const res = jarallax.apply(global$1, args);\r\n  return typeof res !== 'object' ? res : this;\r\n};\r\n$Plugin.constructor = jarallax.constructor;\r\n\r\n\/\/ no conflict\r\nconst old$Plugin = $.fn.jarallax;\r\n$.fn.jarallax = $Plugin;\r\n$.fn.jarallax.noConflict = function () {\r\n  $.fn.jarallax = old$Plugin;\r\n  return this;\r\n};\r\n}\r\n\r\n\/\/ data-jarallax initialization\r\nready(() => {\r\njarallax(document.querySelectorAll('[data-jarallax]'));\r\n});\r\n\r\nreturn jarallax;\r\n\r\n}));\r\n\/\/# sourceMappingURL=jarallax.js.map\r\n<\/script>\r\n\r\n\r\n<script type=\"text\/javascript\">\r\n  \/* init Jarallax *\/\r\n  jarallax(document.querySelectorAll(\".jarallax\"));\r\n\r\n  jarallax(document.querySelectorAll(\".jarallax-keep-img\"), {\r\n    keepImg: true,\r\n  });\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2892d0f elementor-section-full_width mobile_btn elementor-hidden-desktop elementor-hidden-tablet elementor-section-height-default elementor-section-height-default\" data-id=\"2892d0f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-936e47f\" data-id=\"936e47f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e983496 de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"e983496\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/dentalvibe.com\/dentalvibe-find-a-dentist\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Find a DentalVibe<span>&#174;<\/span> Dentist<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8dded6b de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"8dded6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/store.dentalvibe.com\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Purchase a DentalVibe<span>&#174;<\/span><\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a14e6e7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a14e6e7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0883ff6\" data-id=\"0883ff6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f3366eb de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"f3366eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n    \n   \n\n  $(document).ready(function () {\n    $(window).on('scroll', function () {\n      yPos = window.pageYOffset;\n      shift = yPos * 0.4 + 'px';\n      $('#fiximg').css('top', shift);\n    });\n\n  });\n\n \n    \n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-27ff8ee elementor-section-full_width home_bx_wrap elementor-section-height-default elementor-section-height-default\" data-id=\"27ff8ee\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-33e4b5e\" data-id=\"33e4b5e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-3d62c39 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3d62c39\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-e283ceb home_bx_wrap_col\" data-id=\"e283ceb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ea2945a de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"ea2945a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"900\" height=\"900\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one.png\" class=\"attachment-full size-full wp-image-71887\" alt=\"\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one.png 900w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one-300x300.png 300w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one-150x150.png 150w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one-768x768.png 768w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one-600x600.png 600w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_one-100x100.png 100w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e6859f bx_title de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"7e6859f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">what it does<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0cfee43 bx_desc de_scroll_animation_no elementor-widget elementor-widget-text-editor\" data-id=\"0cfee43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tDentalVibe\u00ae technology <br> blocks the needle pain.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-238127f home_bx_wrap_col\" data-id=\"238127f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-74ba189 de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"74ba189\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"900\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second.png\" class=\"attachment-full size-full wp-image-71888\" alt=\"\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second.png 900w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second-300x300.png 300w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second-150x150.png 150w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second-768x768.png 768w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second-600x600.png 600w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_second-100x100.png 100w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b90e694 bx_title de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"b90e694\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">how it works<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cfb1cb3 bx_desc de_scroll_animation_no elementor-widget elementor-widget-text-editor\" data-id=\"cfb1cb3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>DentalVibe\u00ae gently massages the nerves and tissue around the injection site sending vibrations that block pain signals from reaching the brain.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-88e0526 home_bx_wrap_col\" data-id=\"88e0526\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cd380e6 de_scroll_animation_no elementor-widget elementor-widget-image\" data-id=\"cd380e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"900\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third.png\" class=\"attachment-full size-full wp-image-71889\" alt=\"\" srcset=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third.png 900w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third-300x300.png 300w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third-150x150.png 150w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third-768x768.png 768w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third-600x600.png 600w, https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/09\/home_page_icon_third-100x100.png 100w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-563b9bd bx_title de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"563b9bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">why it matters<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e37b2f4 bx_desc de_scroll_animation_no elementor-widget elementor-widget-text-editor\" data-id=\"e37b2f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tA better dental injection leads <br> to a better dental experience.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b409baa elementor-section-full_width iframe_data elementor-section-height-default elementor-section-height-default\" data-id=\"b409baa\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a9ec4e\" data-id=\"7a9ec4e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-cfc1e23 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cfc1e23\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-972d0a5\" data-id=\"972d0a5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b8f5be5 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"b8f5be5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-xl\">See what a difference DentalVibe<span>&#174;<\/span> can make<br> to reduce the anxiety of getting a shot<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-915b6bc video-height de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"915b6bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"video1\" style=\"padding:75% 0 0 0;position:relative;\"><iframe id=\"video1\" src=\"https:\/\/player.vimeo.com\/video\/852725602?h=72530921ae&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Dr. Richard Lechner, DDS, explains the revolutionary DentalVibe.\"><\/iframe><\/div><script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\n  const iframe1 = document.querySelector('iframe#video1');\nconst player1 = new Vimeo.Player(iframe1);\nplayer1.on('play', function() {\n     player2.pause();\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39121a1 video-height elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"39121a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<iframe id=\"video1\" src=\"https:\/\/player.vimeo.com\/video\/852725602?h=72530921ae\" width=\"100%\" height=\"830\" frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen><\/iframe>\n<script>\n  const iframe1 = document.querySelector('iframe#video1');\nconst player1 = new Vimeo.Player(iframe1);\nplayer1.on('play', function() {\n     player2.pause();\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2b06b40 elementor-section-full_width fixed_banner d_row elementor-section-height-default elementor-section-height-default\" data-id=\"2b06b40\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2a014ff\" data-id=\"2a014ff\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-728850f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"728850f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-66def5b\" data-id=\"66def5b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7deb464 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"7deb464\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Order Now<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27cfe12 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"27cfe12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-medium\">Attract more patients to your practice and make  dental anxiety a thing of the past with <strong>DentalVibe<span>&#174;<\/span>.<\/strong><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dda5a35 elementor-align-center de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"dda5a35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-xs\" href=\"https:\/\/store.dentalvibe.com\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Purchase a <b>DentalVibe<\/b><sup>\u00ae<\/sup><\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e26c921 elementor-section-full_width order_now_full m_row elementor-section-height-default elementor-section-height-default\" data-id=\"e26c921\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ce354d6\" data-id=\"ce354d6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4f56f08 de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"4f56f08\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jarallax\" data-speed=\"-0.4\">\r\n    <img decoding=\"async\" class=\"jarallax-img\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/11\/welcomebanner.jpg\" alt=\"\" loading=\"lazy\" \/>\r\n    <div class=\"scnd_banner_content\">\r\n        <h2 class=\"elementor-heading-title elementor-size-default\">Order Now<\/h2>\r\n        <div class=\"sm_txt\">\r\n            <h2 class=\"elementor-heading-title elementor-size-medium\">Attract more patients to your practice and make  dental anxiety a thing of the past with <strong>DentalVibe<span>\u00ae<\/span>.<\/strong><\/h2>\r\n        <\/div>\r\n        <div class=\"smbtn\">\r\n            <a href=\"https:\/\/store.dentalvibe.com\" class=\"elementor-button-link elementor-button elementor-size-xs\" role=\"button\">\r\n                <span class=\"elementor-button-text\">Purchase a <b>DentalVibe<\/b><sup>\u00ae<\/sup><\/span>\r\n            <\/a>\r\n        <\/div>\r\n    <\/div>\r\n     \r\n  <\/div>\r\n\r\n\r\n\r\n\r\n<script>\r\n\/*!\r\n* Jarallax v2.1.4 (https:\/\/github.com\/nk-o\/jarallax)\r\n* Copyright 2023 nK <https:\/\/nkdev.info>\r\n* Licensed under MIT (https:\/\/github.com\/nk-o\/jarallax\/blob\/master\/LICENSE)\r\n*\/\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\ntypeof define === 'function' && define.amd ? define(factory) :\r\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jarallax = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n\/**\r\n* Document ready callback.\r\n* @param {Function} callback - callback will be fired once Document ready.\r\n*\/\r\nfunction ready(callback) {\r\nif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n  \/\/ Already ready or interactive, execute callback\r\n  callback();\r\n} else {\r\n  document.addEventListener('DOMContentLoaded', callback, {\r\n    capture: true,\r\n    once: true,\r\n    passive: true\r\n  });\r\n}\r\n}\r\n\r\n\/* eslint-disable import\/no-mutable-exports *\/\r\n\/* eslint-disable no-restricted-globals *\/\r\nlet win;\r\nif (typeof window !== 'undefined') {\r\nwin = window;\r\n} else if (typeof global !== 'undefined') {\r\nwin = global;\r\n} else if (typeof self !== 'undefined') {\r\nwin = self;\r\n} else {\r\nwin = {};\r\n}\r\nvar global$1 = win;\r\n\r\nvar defaults = {\r\n\/\/ Base parallax options.\r\ntype: 'scroll',\r\nspeed: 0.5,\r\ncontainerClass: 'jarallax-container',\r\nimgSrc: null,\r\nimgElement: '.jarallax-img',\r\nimgSize: 'cover',\r\nimgPosition: '50% 50%',\r\nimgRepeat: 'no-repeat',\r\nkeepImg: false,\r\nelementInViewport: null,\r\nzIndex: -100,\r\ndisableParallax: false,\r\n\/\/ Callbacks.\r\nonScroll: null,\r\nonInit: null,\r\nonDestroy: null,\r\nonCoverImage: null,\r\n\/\/ Video options.\r\nvideoClass: 'jarallax-video',\r\nvideoSrc: null,\r\nvideoStartTime: 0,\r\nvideoEndTime: 0,\r\nvideoVolume: 0,\r\nvideoLoop: true,\r\nvideoPlayOnlyVisible: true,\r\nvideoLazyLoading: true,\r\ndisableVideo: false,\r\n\/\/ Video callbacks.\r\nonVideoInsert: null,\r\nonVideoWorkerInit: null\r\n};\r\n\r\n\/**\r\n* Add styles to element.\r\n*\r\n* @param {Element} el - element.\r\n* @param {String|Object} styles - styles list.\r\n*\r\n* @returns {Element}\r\n*\/\r\nfunction css(el, styles) {\r\nif (typeof styles === 'string') {\r\n  return global$1.getComputedStyle(el).getPropertyValue(styles);\r\n}\r\nObject.keys(styles).forEach(key => {\r\n  el.style[key] = styles[key];\r\n});\r\nreturn el;\r\n}\r\n\r\n\/**\r\n* Extend like jQuery.extend\r\n*\r\n* @param {Object} out - output object.\r\n* @param {...any} args - additional objects to extend.\r\n*\r\n* @returns {Object}\r\n*\/\r\nfunction extend(out, ...args) {\r\nout = out || {};\r\nObject.keys(args).forEach(i => {\r\n  if (!args[i]) {\r\n    return;\r\n  }\r\n  Object.keys(args[i]).forEach(key => {\r\n    out[key] = args[i][key];\r\n  });\r\n});\r\nreturn out;\r\n}\r\n\r\n\/**\r\n* Get all parents of the element.\r\n*\r\n* @param {Element} elem - DOM element.\r\n*\r\n* @returns {Array}\r\n*\/\r\nfunction getParents(elem) {\r\nconst parents = [];\r\nwhile (elem.parentElement !== null) {\r\n  elem = elem.parentElement;\r\n  if (elem.nodeType === 1) {\r\n    parents.push(elem);\r\n  }\r\n}\r\nreturn parents;\r\n}\r\n\r\nconst {\r\nnavigator: navigator$1\r\n} = global$1;\r\nconst mobileAgent = \/*#__PURE__*\/ \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator$1.userAgent);\r\nfunction isMobile() {\r\nreturn mobileAgent;\r\n}\r\n\r\nlet wndW;\r\nlet wndH;\r\nlet $deviceHelper;\r\n\r\n\/**\r\n* The most popular mobile browsers changes height after page scroll and this generates image jumping.\r\n* We can fix it using this workaround with vh units.\r\n*\/\r\nfunction getDeviceHeight() {\r\nif (!$deviceHelper && document.body) {\r\n  $deviceHelper = document.createElement('div');\r\n  $deviceHelper.style.cssText = 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\r\n  document.body.appendChild($deviceHelper);\r\n}\r\nreturn ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\nfunction updateWindowHeight() {\r\nwndW = global$1.innerWidth || document.documentElement.clientWidth;\r\nif (isMobile()) {\r\n  wndH = getDeviceHeight();\r\n} else {\r\n  wndH = global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\n}\r\nupdateWindowHeight();\r\nglobal$1.addEventListener('resize', updateWindowHeight);\r\nglobal$1.addEventListener('orientationchange', updateWindowHeight);\r\nglobal$1.addEventListener('load', updateWindowHeight);\r\nready(() => {\r\nupdateWindowHeight();\r\n});\r\nfunction getWindowSize() {\r\nreturn {\r\n  width: wndW,\r\n  height: wndH\r\n};\r\n}\r\n\r\n\/\/ List with all jarallax instances\r\n\/\/ need to render all in one scroll\/resize event.\r\nconst jarallaxList = [];\r\nfunction updateParallax() {\r\nif (!jarallaxList.length) {\r\n  return;\r\n}\r\nconst {\r\n  width: wndW,\r\n  height: wndH\r\n} = getWindowSize();\r\njarallaxList.forEach((data, k) => {\r\n  const {\r\n    instance,\r\n    oldData\r\n  } = data;\r\n  if (!instance.isVisible()) {\r\n    return;\r\n  }\r\n  const clientRect = instance.$item.getBoundingClientRect();\r\n  const newData = {\r\n    width: clientRect.width,\r\n    height: clientRect.height,\r\n    top: clientRect.top,\r\n    bottom: clientRect.bottom,\r\n    wndW,\r\n    wndH\r\n  };\r\n  const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;\r\n  const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\r\n  jarallaxList[k].oldData = newData;\r\n  if (isResized) {\r\n    instance.onResize();\r\n  }\r\n  if (isScrolled) {\r\n    instance.onScroll();\r\n  }\r\n});\r\nglobal$1.requestAnimationFrame(updateParallax);\r\n}\r\nconst visibilityObserver = \/*#__PURE__*\/new global$1.IntersectionObserver(entries => {\r\nentries.forEach(entry => {\r\n  entry.target.jarallax.isElementInViewport = entry.isIntersecting;\r\n});\r\n}, {\r\n\/\/ We have to start parallax calculation before the block is in view\r\n\/\/ to prevent possible parallax jumping.\r\nrootMargin: '50px'\r\n});\r\nfunction addObserver(instance) {\r\njarallaxList.push({\r\n  instance\r\n});\r\nif (jarallaxList.length === 1) {\r\n  global$1.requestAnimationFrame(updateParallax);\r\n}\r\nvisibilityObserver.observe(instance.options.elementInViewport || instance.$item);\r\n}\r\nfunction removeObserver(instance) {\r\njarallaxList.forEach((data, key) => {\r\n  if (data.instance.instanceID === instance.instanceID) {\r\n    jarallaxList.splice(key, 1);\r\n  }\r\n});\r\nvisibilityObserver.unobserve(instance.options.elementInViewport || instance.$item);\r\n}\r\n\r\n\/* eslint-disable class-methods-use-this *\/\r\nconst {\r\nnavigator\r\n} = global$1;\r\nlet instanceID = 0;\r\n\r\n\/\/ Jarallax class\r\nclass Jarallax {\r\nconstructor(item, userOptions) {\r\n  const self = this;\r\n  self.instanceID = instanceID;\r\n  instanceID += 1;\r\n  self.$item = item;\r\n  self.defaults = {\r\n    ...defaults\r\n  };\r\n\r\n  \/\/ prepare data-options\r\n  const dataOptions = self.$item.dataset || {};\r\n  const pureDataOptions = {};\r\n  Object.keys(dataOptions).forEach(key => {\r\n    const lowerCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\r\n    if (lowerCaseOption && typeof self.defaults[lowerCaseOption] !== 'undefined') {\r\n      pureDataOptions[lowerCaseOption] = dataOptions[key];\r\n    }\r\n  });\r\n  self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\r\n  self.pureOptions = self.extend({}, self.options);\r\n\r\n  \/\/ prepare 'true' and 'false' strings to boolean\r\n  Object.keys(self.options).forEach(key => {\r\n    if (self.options[key] === 'true') {\r\n      self.options[key] = true;\r\n    } else if (self.options[key] === 'false') {\r\n      self.options[key] = false;\r\n    }\r\n  });\r\n\r\n  \/\/ fix speed option [-1.0, 2.0]\r\n  self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\r\n\r\n  \/\/ prepare disableParallax callback\r\n  if (typeof self.options.disableParallax === 'string') {\r\n    self.options.disableParallax = new RegExp(self.options.disableParallax);\r\n  }\r\n  if (self.options.disableParallax instanceof RegExp) {\r\n    const disableParallaxRegexp = self.options.disableParallax;\r\n    self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableParallax !== 'function') {\r\n    self.options.disableParallax = () => false;\r\n  }\r\n\r\n  \/\/ prepare disableVideo callback\r\n  if (typeof self.options.disableVideo === 'string') {\r\n    self.options.disableVideo = new RegExp(self.options.disableVideo);\r\n  }\r\n  if (self.options.disableVideo instanceof RegExp) {\r\n    const disableVideoRegexp = self.options.disableVideo;\r\n    self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableVideo !== 'function') {\r\n    self.options.disableVideo = () => false;\r\n  }\r\n\r\n  \/\/ custom element to check if parallax in viewport\r\n  let elementInVP = self.options.elementInViewport;\r\n  \/\/ get first item from array\r\n  if (elementInVP && typeof elementInVP === 'object' && typeof elementInVP.length !== 'undefined') {\r\n    [elementInVP] = elementInVP;\r\n  }\r\n  \/\/ check if dom element\r\n  if (!(elementInVP instanceof Element)) {\r\n    elementInVP = null;\r\n  }\r\n  self.options.elementInViewport = elementInVP;\r\n  self.image = {\r\n    src: self.options.imgSrc || null,\r\n    $container: null,\r\n    useImgTag: false,\r\n    \/\/ 1. Position fixed is needed for the most of browsers because absolute position have glitches\r\n    \/\/ 2. On MacOS with smooth scroll there is a huge lags with absolute position - https:\/\/github.com\/nk-o\/jarallax\/issues\/75\r\n    \/\/ 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\r\n    position: 'fixed'\r\n  };\r\n  if (self.initImg() && self.canInitParallax()) {\r\n    self.init();\r\n  }\r\n}\r\ncss(el, styles) {\r\n  return css(el, styles);\r\n}\r\nextend(out, ...args) {\r\n  return extend(out, ...args);\r\n}\r\n\r\n\/\/ get window size and scroll position. Useful for extensions\r\ngetWindowData() {\r\n  const {\r\n    width,\r\n    height\r\n  } = getWindowSize();\r\n  return {\r\n    width,\r\n    height,\r\n    y: document.documentElement.scrollTop\r\n  };\r\n}\r\n\r\n\/\/ Jarallax functions\r\ninitImg() {\r\n  const self = this;\r\n\r\n  \/\/ find image element\r\n  let $imgElement = self.options.imgElement;\r\n  if ($imgElement && typeof $imgElement === 'string') {\r\n    $imgElement = self.$item.querySelector($imgElement);\r\n  }\r\n\r\n  \/\/ check if dom element\r\n  if (!($imgElement instanceof Element)) {\r\n    if (self.options.imgSrc) {\r\n      $imgElement = new Image();\r\n      $imgElement.src = self.options.imgSrc;\r\n    } else {\r\n      $imgElement = null;\r\n    }\r\n  }\r\n  if ($imgElement) {\r\n    if (self.options.keepImg) {\r\n      self.image.$item = $imgElement.cloneNode(true);\r\n    } else {\r\n      self.image.$item = $imgElement;\r\n      self.image.$itemParent = $imgElement.parentNode;\r\n    }\r\n    self.image.useImgTag = true;\r\n  }\r\n\r\n  \/\/ true if there is img tag\r\n  if (self.image.$item) {\r\n    return true;\r\n  }\r\n\r\n  \/\/ get image src\r\n  if (self.image.src === null) {\r\n    self.image.src = 'data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n    self.image.bgImage = self.css(self.$item, 'background-image');\r\n  }\r\n  return !(!self.image.bgImage || self.image.bgImage === 'none');\r\n}\r\ncanInitParallax() {\r\n  return !this.options.disableParallax();\r\n}\r\ninit() {\r\n  const self = this;\r\n  const containerStyles = {\r\n    position: 'absolute',\r\n    top: 0,\r\n    left: 0,\r\n    width: '100%',\r\n    height: '100%',\r\n    overflow: 'hidden'\r\n  };\r\n  let imageStyles = {\r\n    pointerEvents: 'none',\r\n    transformStyle: 'preserve-3d',\r\n    backfaceVisibility: 'hidden'\r\n  };\r\n  if (!self.options.keepImg) {\r\n    \/\/ save default user styles\r\n    const curStyle = self.$item.getAttribute('style');\r\n    if (curStyle) {\r\n      self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n    }\r\n    if (self.image.useImgTag) {\r\n      const curImgStyle = self.image.$item.getAttribute('style');\r\n      if (curImgStyle) {\r\n        self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ set relative position and z-index to the parent\r\n  if (self.css(self.$item, 'position') === 'static') {\r\n    self.css(self.$item, {\r\n      position: 'relative'\r\n    });\r\n  }\r\n  if (self.css(self.$item, 'z-index') === 'auto') {\r\n    self.css(self.$item, {\r\n      zIndex: 0\r\n    });\r\n  }\r\n\r\n  \/\/ container for parallax image\r\n  self.image.$container = document.createElement('div');\r\n  self.css(self.image.$container, containerStyles);\r\n  self.css(self.image.$container, {\r\n    'z-index': self.options.zIndex\r\n  });\r\n\r\n  \/\/ it will remove some image overlapping\r\n  \/\/ overlapping occur due to an image position fixed inside absolute position element\r\n  \/\/ needed only when background in fixed position\r\n  if (this.image.position === 'fixed') {\r\n    self.css(self.image.$container, {\r\n      '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\r\n      'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'\r\n    });\r\n  }\r\n\r\n  \/\/ Add container unique ID.\r\n  self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\r\n\r\n  \/\/ Add container class.\r\n  if (self.options.containerClass) {\r\n    self.image.$container.setAttribute('class', self.options.containerClass);\r\n  }\r\n  self.$item.appendChild(self.image.$container);\r\n\r\n  \/\/ use img tag\r\n  if (self.image.useImgTag) {\r\n    imageStyles = self.extend({\r\n      'object-fit': self.options.imgSize,\r\n      'object-position': self.options.imgPosition,\r\n      'max-width': 'none'\r\n    }, containerStyles, imageStyles);\r\n\r\n    \/\/ use div with background image\r\n  } else {\r\n    self.image.$item = document.createElement('div');\r\n    if (self.image.src) {\r\n      imageStyles = self.extend({\r\n        'background-position': self.options.imgPosition,\r\n        'background-size': self.options.imgSize,\r\n        'background-repeat': self.options.imgRepeat,\r\n        'background-image': self.image.bgImage || `url(\"${self.image.src}\")`\r\n      }, containerStyles, imageStyles);\r\n    }\r\n  }\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\r\n    self.image.position = 'absolute';\r\n  }\r\n\r\n  \/\/ 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\r\n  \/\/    discussion - https:\/\/github.com\/nk-o\/jarallax\/issues\/9\r\n  \/\/ 2. Check if parents have overflow scroll\r\n  if (self.image.position === 'fixed') {\r\n    const $parents = getParents(self.$item).filter(el => {\r\n      const styles = global$1.getComputedStyle(el);\r\n      const parentTransform = styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\r\n      const overflowRegex = \/(auto|scroll)\/;\r\n      return parentTransform && parentTransform !== 'none' || overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x']);\r\n    });\r\n    self.image.position = $parents.length ? 'absolute' : 'fixed';\r\n  }\r\n\r\n  \/\/ add position to parallax block\r\n  imageStyles.position = self.image.position;\r\n\r\n  \/\/ insert parallax image\r\n  self.css(self.image.$item, imageStyles);\r\n  self.image.$container.appendChild(self.image.$item);\r\n\r\n  \/\/ set initial position and size\r\n  self.onResize();\r\n  self.onScroll(true);\r\n\r\n  \/\/ call onInit event\r\n  if (self.options.onInit) {\r\n    self.options.onInit.call(self);\r\n  }\r\n\r\n  \/\/ remove default user background\r\n  if (self.css(self.$item, 'background-image') !== 'none') {\r\n    self.css(self.$item, {\r\n      'background-image': 'none'\r\n    });\r\n  }\r\n  addObserver(self);\r\n}\r\ndestroy() {\r\n  const self = this;\r\n  removeObserver(self);\r\n\r\n  \/\/ return styles on container as before jarallax init\r\n  const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\r\n  self.$item.removeAttribute('data-jarallax-original-styles');\r\n  \/\/ null occurs if there is no style tag before jarallax init\r\n  if (!originalStylesTag) {\r\n    self.$item.removeAttribute('style');\r\n  } else {\r\n    self.$item.setAttribute('style', originalStylesTag);\r\n  }\r\n  if (self.image.useImgTag) {\r\n    \/\/ return styles on img tag as before jarallax init\r\n    const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\r\n    self.image.$item.removeAttribute('data-jarallax-original-styles');\r\n    \/\/ null occurs if there is no style tag before jarallax init\r\n    if (!originalStylesImgTag) {\r\n      self.image.$item.removeAttribute('style');\r\n    } else {\r\n      self.image.$item.setAttribute('style', originalStylesTag);\r\n    }\r\n\r\n    \/\/ move img tag to its default position\r\n    if (self.image.$itemParent) {\r\n      self.image.$itemParent.appendChild(self.image.$item);\r\n    }\r\n  }\r\n\r\n  \/\/ remove additional dom elements\r\n  if (self.image.$container) {\r\n    self.image.$container.parentNode.removeChild(self.image.$container);\r\n  }\r\n\r\n  \/\/ call onDestroy event\r\n  if (self.options.onDestroy) {\r\n    self.options.onDestroy.call(self);\r\n  }\r\n\r\n  \/\/ delete jarallax from item\r\n  delete self.$item.jarallax;\r\n}\r\ncoverImage() {\r\n  const self = this;\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.image.$container.getBoundingClientRect();\r\n  const contH = rect.height;\r\n  const {\r\n    speed\r\n  } = self.options;\r\n  const isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\r\n  let scrollDist = 0;\r\n  let resultH = contH;\r\n  let resultMT = 0;\r\n\r\n  \/\/ scroll parallax\r\n  if (isScroll) {\r\n    \/\/ scroll distance and height for image\r\n    if (speed < 0) {\r\n      scrollDist = speed * Math.max(contH, wndH);\r\n      if (wndH < contH) {\r\n        scrollDist -= speed * (contH - wndH);\r\n      }\r\n    } else {\r\n      scrollDist = speed * (contH + wndH);\r\n    }\r\n\r\n    \/\/ size for scroll parallax\r\n    if (speed > 1) {\r\n      resultH = Math.abs(scrollDist - wndH);\r\n    } else if (speed < 0) {\r\n      resultH = scrollDist \/ speed + Math.abs(scrollDist);\r\n    } else {\r\n      resultH += (wndH - contH) * (1 - speed);\r\n    }\r\n    scrollDist \/= 2;\r\n  }\r\n\r\n  \/\/ store scroll distance\r\n  self.parallaxScrollDistance = scrollDist;\r\n\r\n  \/\/ vertical center\r\n  if (isScroll) {\r\n    resultMT = (wndH - resultH) \/ 2;\r\n  } else {\r\n    resultMT = (contH - resultH) \/ 2;\r\n  }\r\n\r\n  \/\/ apply result to item\r\n  self.css(self.image.$item, {\r\n    height: `${resultH}px`,\r\n    marginTop: `${resultMT}px`,\r\n    left: self.image.position === 'fixed' ? `${rect.left}px` : '0',\r\n    width: `${rect.width}px`\r\n  });\r\n\r\n  \/\/ call onCoverImage event\r\n  if (self.options.onCoverImage) {\r\n    self.options.onCoverImage.call(self);\r\n  }\r\n\r\n  \/\/ return some useful data. Used in the video cover function\r\n  return {\r\n    image: {\r\n      height: resultH,\r\n      marginTop: resultMT\r\n    },\r\n    container: rect\r\n  };\r\n}\r\nisVisible() {\r\n  return this.isElementInViewport || false;\r\n}\r\nonScroll(force) {\r\n  const self = this;\r\n\r\n  \/\/ stop calculations if item is not in viewport\r\n  if (!force && !self.isVisible()) {\r\n    return;\r\n  }\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.$item.getBoundingClientRect();\r\n  const contT = rect.top;\r\n  const contH = rect.height;\r\n  const styles = {};\r\n\r\n  \/\/ calculate parallax helping variables\r\n  const beforeTop = Math.max(0, contT);\r\n  const beforeTopEnd = Math.max(0, contH + contT);\r\n  const afterTop = Math.max(0, -contT);\r\n  const beforeBottom = Math.max(0, contT + contH - wndH);\r\n  const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\r\n  const afterBottom = Math.max(0, -contT + wndH - contH);\r\n  const fromViewportCenter = 1 - 2 * ((wndH - contT) \/ (wndH + contH));\r\n\r\n  \/\/ calculate on how percent of section is visible\r\n  let visiblePercent = 1;\r\n  if (contH < wndH) {\r\n    visiblePercent = 1 - (afterTop || beforeBottom) \/ contH;\r\n  } else if (beforeTopEnd <= wndH) {\r\n    visiblePercent = beforeTopEnd \/ wndH;\r\n  } else if (beforeBottomEnd <= wndH) {\r\n    visiblePercent = beforeBottomEnd \/ wndH;\r\n  }\r\n\r\n  \/\/ opacity\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\r\n    styles.transform = 'translate3d(0,0,0)';\r\n    styles.opacity = visiblePercent;\r\n  }\r\n\r\n  \/\/ scale\r\n  if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\r\n    let scale = 1;\r\n    if (self.options.speed < 0) {\r\n      scale -= self.options.speed * visiblePercent;\r\n    } else {\r\n      scale += self.options.speed * (1 - visiblePercent);\r\n    }\r\n    styles.transform = `scale(${scale}) translate3d(0,0,0)`;\r\n  }\r\n\r\n  \/\/ scroll\r\n  if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\r\n    let positionY = self.parallaxScrollDistance * fromViewportCenter;\r\n\r\n    \/\/ fix if parallax block in absolute position\r\n    if (self.image.position === 'absolute') {\r\n      positionY -= contT;\r\n    }\r\n    styles.transform = `translate3d(0,${positionY}px,0)`;\r\n  }\r\n  self.css(self.image.$item, styles);\r\n\r\n  \/\/ call onScroll event\r\n  if (self.options.onScroll) {\r\n    self.options.onScroll.call(self, {\r\n      section: rect,\r\n      beforeTop,\r\n      beforeTopEnd,\r\n      afterTop,\r\n      beforeBottom,\r\n      beforeBottomEnd,\r\n      afterBottom,\r\n      visiblePercent,\r\n      fromViewportCenter\r\n    });\r\n  }\r\n}\r\nonResize() {\r\n  this.coverImage();\r\n}\r\n}\r\n\r\n\/\/ global definition\r\nconst jarallax = function (items, options, ...args) {\r\n\/\/ check for dom element\r\n\/\/ thanks: http:\/\/stackoverflow.com\/questions\/384286\/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\r\nif (typeof HTMLElement === 'object' ? items instanceof HTMLElement : items && typeof items === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\r\n  items = [items];\r\n}\r\nconst len = items.length;\r\nlet k = 0;\r\nlet ret;\r\nfor (k; k < len; k += 1) {\r\n  if (typeof options === 'object' || typeof options === 'undefined') {\r\n    if (!items[k].jarallax) {\r\n      items[k].jarallax = new Jarallax(items[k], options);\r\n    }\r\n  } else if (items[k].jarallax) {\r\n    \/\/ eslint-disable-next-line prefer-spread\r\n    ret = items[k].jarallax[options].apply(items[k].jarallax, args);\r\n  }\r\n  if (typeof ret !== 'undefined') {\r\n    return ret;\r\n  }\r\n}\r\nreturn items;\r\n};\r\njarallax.constructor = Jarallax;\r\n\r\nconst $ = global$1.jQuery;\r\n\r\n\/\/ jQuery support\r\nif (typeof $ !== 'undefined') {\r\nconst $Plugin = function (...args) {\r\n  Array.prototype.unshift.call(args, this);\r\n  const res = jarallax.apply(global$1, args);\r\n  return typeof res !== 'object' ? res : this;\r\n};\r\n$Plugin.constructor = jarallax.constructor;\r\n\r\n\/\/ no conflict\r\nconst old$Plugin = $.fn.jarallax;\r\n$.fn.jarallax = $Plugin;\r\n$.fn.jarallax.noConflict = function () {\r\n  $.fn.jarallax = old$Plugin;\r\n  return this;\r\n};\r\n}\r\n\r\n\/\/ data-jarallax initialization\r\nready(() => {\r\njarallax(document.querySelectorAll('[data-jarallax]'));\r\n});\r\n\r\nreturn jarallax;\r\n\r\n}));\r\n\/\/# sourceMappingURL=jarallax.js.map\r\n<\/script>\r\n\r\n\r\n<script type=\"text\/javascript\">\r\n  \/* init Jarallax *\/\r\n  jarallax(document.querySelectorAll(\".jarallax\"));\r\n\r\n  jarallax(document.querySelectorAll(\".jarallax-keep-img\"), {\r\n    keepImg: true,\r\n  });\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0b44e1f elementor-section-full_width affraid_iframe elementor-section-height-default elementor-section-height-default\" data-id=\"0b44e1f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-637890f\" data-id=\"637890f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fc4b11b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fc4b11b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-f7ae8bf\" data-id=\"f7ae8bf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2471429 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"2471429\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-xl\">Are you afraid of the dentist?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a80fea video-height de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"6a80fea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div style=\"padding:56.25% 0 0 0;position:relative;background:#000\"><iframe id=\"video2\" src=\"https:\/\/player.vimeo.com\/video\/851009899?h=362a24199f&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Waiting Room Vignette DentalVibe Commercial\"><\/iframe><\/div><script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\n   const iframe2 = document.querySelector('iframe#video2');\nconst player2 = new Vimeo.Player(iframe2);\nplayer2.on('play', function() {\n     player1.pause();\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c8bbf7 video-height elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"0c8bbf7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<iframe id=\"video2\" src=\"https:\/\/player.vimeo.com\/video\/851009899?h=362a24199f\" width=\"100%\" height=\"625\" frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen><\/iframe>\n<script>\n   const iframe2 = document.querySelector('iframe#video2');\nconst player2 = new Vimeo.Player(iframe2);\nplayer2.on('play', function() {\n     player1.pause();\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4dc83f8 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"4dc83f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-xl\">Make dental anxiety a thing of the past<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eec3a4b dent-inn-desc de_scroll_animation_no elementor-widget elementor-widget-text-editor\" data-id=\"eec3a4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As many as 40 million Americans refuse to go to the dentist because of a fear of needles. But if you\u2019re skipping out on recommended dental care, you\u2019re putting more than just your smile at risk. Recent research indicates that the health of your mouth reflects the health of your body as a whole. <span id=\"show-more\"><strong><a>Read more\u00bb<\/a><\/strong><\/span><\/p>\n<div id=\"show-more-content\">\n\n<p><span style=\"font-weight: 400;\">DentalVibe\u00ae is a unique tool that can help alleviate dental fear and anxiety, allowing you to get the dental treatment you need to stay healthy. DentalVibe\u00ae provides gentle vibration to the site of the dental injection. This vibration overloads the nerve that sends pain signals to the brain so that you don\u2019t register the pain or discomfort from the injection. The sound of the vibration creates an added distraction, and the vibration also helps disperse the anesthesia once it\u2019s injected so that it can work even faster.<\/span><\/p>\n\n<p><span style=\"font-weight: 400;\">Patients who experience an injection with DentalVibe\u00ae are often unaware when the injection actually occurs. DentalVibe\u00ae is especially helpful in reducing dental fear among children. In fact, many patients have said that if such a tool had been available when they were younger, their dental fears would never have begun. <\/span><span id=\"show-less\"><strong><a>Read Less\u00bb<\/a><\/strong><\/span><\/p>\n\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6785510 de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"6785510\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script type=\"text\/javascript\">\n\t$( document ).ready(function() {\n   $('#show-more').click(function(){\n\t$('#show-more-content').show(300);\n\t$('#show-more').hide();\n});\n\n$('#show-less').click(function(){\n\t$('#show-more-content').hide(300);\n\t$('#show-more').show();\n});\n\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-900cad3 elementor-section-full_width find_div fixed_banner d_row elementor-section-height-default elementor-section-height-default\" data-id=\"900cad3\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c50c30e\" data-id=\"c50c30e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6dec3a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6dec3a4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-d585660\" data-id=\"d585660\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dca75a2 de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"dca75a2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Find a DentalVibe\u00ae Dentist<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ee968df remove_br de_scroll_animation_no elementor-widget elementor-widget-heading\" data-id=\"ee968df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Make dental fear a thing of the past, and get the treatment you need <br> to keep your teeth healthy. Find a dentist in your area who uses <strong>DentalVibe<sup>\u00ae<\/sup>. <\/strong>\n   <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a8c010 elementor-align-center de_scroll_animation_no elementor-widget elementor-widget-button\" data-id=\"5a8c010\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-xs\" href=\"https:\/\/dentalvibe.com\/pain-free-dentists-find-a-dentist-near-you\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Find a  <b>DentalVibe<\/b><sup>\u00ae<\/sup> Dentist<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c8bb786 elementor-section-full_width order_now_full order_now_full_second m_row elementor-section-height-default elementor-section-height-default\" data-id=\"c8bb786\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7ca579b\" data-id=\"7ca579b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3791c50 de_scroll_animation_no elementor-widget elementor-widget-html\" data-id=\"3791c50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jarallax\" data-speed=\"-0.4\">\r\n    <img decoding=\"async\" class=\"jarallax-img\" src=\"https:\/\/dentalvibe.com\/wp-content\/uploads\/2023\/11\/welcomebanner.jpg\" alt=\"\" loading=\"lazy\" \/>\r\n    <div class=\"scnd_banner_content\">\r\n        <h2 class=\"elementor-heading-title elementor-size-default\">Find a DentalVibe\u00ae Dentist<\/h2>\r\n        <div class=\"sm_txt\">\r\n            <h2 class=\"elementor-heading-title elementor-size-default\">Make dental fear a thing of the past, and get the treatment you need <br> to keep your teeth healthy. Find a dentist in your area who uses <strong>DentalVibe<sup>\u00ae<\/sup>. <\/strong>\r\n            <\/h2>\r\n        <\/div>\r\n        <div class=\"smbtn\">\r\n            <a href=\"https:\/\/dentalvibe.com\/pain-free-dentists-find-a-dentist-near-you\/\" class=\"elementor-button-link elementor-button elementor-size-xs\" role=\"button\">\r\n                <span class=\"elementor-button-text\">Find a  <b>DentalVibe<\/b><sup>\u00ae<\/sup> Dentist<\/span>\r\n            <\/a>\r\n        <\/div>\r\n    <\/div>\r\n     \r\n  <\/div>\r\n\r\n\r\n\r\n\r\n<script>\r\n\/*!\r\n* Jarallax v2.1.4 (https:\/\/github.com\/nk-o\/jarallax)\r\n* Copyright 2023 nK <https:\/\/nkdev.info>\r\n* Licensed under MIT (https:\/\/github.com\/nk-o\/jarallax\/blob\/master\/LICENSE)\r\n*\/\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\ntypeof define === 'function' && define.amd ? define(factory) :\r\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jarallax = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n\/**\r\n* Document ready callback.\r\n* @param {Function} callback - callback will be fired once Document ready.\r\n*\/\r\nfunction ready(callback) {\r\nif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n  \/\/ Already ready or interactive, execute callback\r\n  callback();\r\n} else {\r\n  document.addEventListener('DOMContentLoaded', callback, {\r\n    capture: true,\r\n    once: true,\r\n    passive: true\r\n  });\r\n}\r\n}\r\n\r\n\/* eslint-disable import\/no-mutable-exports *\/\r\n\/* eslint-disable no-restricted-globals *\/\r\nlet win;\r\nif (typeof window !== 'undefined') {\r\nwin = window;\r\n} else if (typeof global !== 'undefined') {\r\nwin = global;\r\n} else if (typeof self !== 'undefined') {\r\nwin = self;\r\n} else {\r\nwin = {};\r\n}\r\nvar global$1 = win;\r\n\r\nvar defaults = {\r\n\/\/ Base parallax options.\r\ntype: 'scroll',\r\nspeed: 0.5,\r\ncontainerClass: 'jarallax-container',\r\nimgSrc: null,\r\nimgElement: '.jarallax-img',\r\nimgSize: 'cover',\r\nimgPosition: '50% 50%',\r\nimgRepeat: 'no-repeat',\r\nkeepImg: false,\r\nelementInViewport: null,\r\nzIndex: -100,\r\ndisableParallax: false,\r\n\/\/ Callbacks.\r\nonScroll: null,\r\nonInit: null,\r\nonDestroy: null,\r\nonCoverImage: null,\r\n\/\/ Video options.\r\nvideoClass: 'jarallax-video',\r\nvideoSrc: null,\r\nvideoStartTime: 0,\r\nvideoEndTime: 0,\r\nvideoVolume: 0,\r\nvideoLoop: true,\r\nvideoPlayOnlyVisible: true,\r\nvideoLazyLoading: true,\r\ndisableVideo: false,\r\n\/\/ Video callbacks.\r\nonVideoInsert: null,\r\nonVideoWorkerInit: null\r\n};\r\n\r\n\/**\r\n* Add styles to element.\r\n*\r\n* @param {Element} el - element.\r\n* @param {String|Object} styles - styles list.\r\n*\r\n* @returns {Element}\r\n*\/\r\nfunction css(el, styles) {\r\nif (typeof styles === 'string') {\r\n  return global$1.getComputedStyle(el).getPropertyValue(styles);\r\n}\r\nObject.keys(styles).forEach(key => {\r\n  el.style[key] = styles[key];\r\n});\r\nreturn el;\r\n}\r\n\r\n\/**\r\n* Extend like jQuery.extend\r\n*\r\n* @param {Object} out - output object.\r\n* @param {...any} args - additional objects to extend.\r\n*\r\n* @returns {Object}\r\n*\/\r\nfunction extend(out, ...args) {\r\nout = out || {};\r\nObject.keys(args).forEach(i => {\r\n  if (!args[i]) {\r\n    return;\r\n  }\r\n  Object.keys(args[i]).forEach(key => {\r\n    out[key] = args[i][key];\r\n  });\r\n});\r\nreturn out;\r\n}\r\n\r\n\/**\r\n* Get all parents of the element.\r\n*\r\n* @param {Element} elem - DOM element.\r\n*\r\n* @returns {Array}\r\n*\/\r\nfunction getParents(elem) {\r\nconst parents = [];\r\nwhile (elem.parentElement !== null) {\r\n  elem = elem.parentElement;\r\n  if (elem.nodeType === 1) {\r\n    parents.push(elem);\r\n  }\r\n}\r\nreturn parents;\r\n}\r\n\r\nconst {\r\nnavigator: navigator$1\r\n} = global$1;\r\nconst mobileAgent = \/*#__PURE__*\/ \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator$1.userAgent);\r\nfunction isMobile() {\r\nreturn mobileAgent;\r\n}\r\n\r\nlet wndW;\r\nlet wndH;\r\nlet $deviceHelper;\r\n\r\n\/**\r\n* The most popular mobile browsers changes height after page scroll and this generates image jumping.\r\n* We can fix it using this workaround with vh units.\r\n*\/\r\nfunction getDeviceHeight() {\r\nif (!$deviceHelper && document.body) {\r\n  $deviceHelper = document.createElement('div');\r\n  $deviceHelper.style.cssText = 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\r\n  document.body.appendChild($deviceHelper);\r\n}\r\nreturn ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\nfunction updateWindowHeight() {\r\nwndW = global$1.innerWidth || document.documentElement.clientWidth;\r\nif (isMobile()) {\r\n  wndH = getDeviceHeight();\r\n} else {\r\n  wndH = global$1.innerHeight || document.documentElement.clientHeight;\r\n}\r\n}\r\nupdateWindowHeight();\r\nglobal$1.addEventListener('resize', updateWindowHeight);\r\nglobal$1.addEventListener('orientationchange', updateWindowHeight);\r\nglobal$1.addEventListener('load', updateWindowHeight);\r\nready(() => {\r\nupdateWindowHeight();\r\n});\r\nfunction getWindowSize() {\r\nreturn {\r\n  width: wndW,\r\n  height: wndH\r\n};\r\n}\r\n\r\n\/\/ List with all jarallax instances\r\n\/\/ need to render all in one scroll\/resize event.\r\nconst jarallaxList = [];\r\nfunction updateParallax() {\r\nif (!jarallaxList.length) {\r\n  return;\r\n}\r\nconst {\r\n  width: wndW,\r\n  height: wndH\r\n} = getWindowSize();\r\njarallaxList.forEach((data, k) => {\r\n  const {\r\n    instance,\r\n    oldData\r\n  } = data;\r\n  if (!instance.isVisible()) {\r\n    return;\r\n  }\r\n  const clientRect = instance.$item.getBoundingClientRect();\r\n  const newData = {\r\n    width: clientRect.width,\r\n    height: clientRect.height,\r\n    top: clientRect.top,\r\n    bottom: clientRect.bottom,\r\n    wndW,\r\n    wndH\r\n  };\r\n  const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;\r\n  const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\r\n  jarallaxList[k].oldData = newData;\r\n  if (isResized) {\r\n    instance.onResize();\r\n  }\r\n  if (isScrolled) {\r\n    instance.onScroll();\r\n  }\r\n});\r\nglobal$1.requestAnimationFrame(updateParallax);\r\n}\r\nconst visibilityObserver = \/*#__PURE__*\/new global$1.IntersectionObserver(entries => {\r\nentries.forEach(entry => {\r\n  entry.target.jarallax.isElementInViewport = entry.isIntersecting;\r\n});\r\n}, {\r\n\/\/ We have to start parallax calculation before the block is in view\r\n\/\/ to prevent possible parallax jumping.\r\nrootMargin: '50px'\r\n});\r\nfunction addObserver(instance) {\r\njarallaxList.push({\r\n  instance\r\n});\r\nif (jarallaxList.length === 1) {\r\n  global$1.requestAnimationFrame(updateParallax);\r\n}\r\nvisibilityObserver.observe(instance.options.elementInViewport || instance.$item);\r\n}\r\nfunction removeObserver(instance) {\r\njarallaxList.forEach((data, key) => {\r\n  if (data.instance.instanceID === instance.instanceID) {\r\n    jarallaxList.splice(key, 1);\r\n  }\r\n});\r\nvisibilityObserver.unobserve(instance.options.elementInViewport || instance.$item);\r\n}\r\n\r\n\/* eslint-disable class-methods-use-this *\/\r\nconst {\r\nnavigator\r\n} = global$1;\r\nlet instanceID = 0;\r\n\r\n\/\/ Jarallax class\r\nclass Jarallax {\r\nconstructor(item, userOptions) {\r\n  const self = this;\r\n  self.instanceID = instanceID;\r\n  instanceID += 1;\r\n  self.$item = item;\r\n  self.defaults = {\r\n    ...defaults\r\n  };\r\n\r\n  \/\/ prepare data-options\r\n  const dataOptions = self.$item.dataset || {};\r\n  const pureDataOptions = {};\r\n  Object.keys(dataOptions).forEach(key => {\r\n    const lowerCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\r\n    if (lowerCaseOption && typeof self.defaults[lowerCaseOption] !== 'undefined') {\r\n      pureDataOptions[lowerCaseOption] = dataOptions[key];\r\n    }\r\n  });\r\n  self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\r\n  self.pureOptions = self.extend({}, self.options);\r\n\r\n  \/\/ prepare 'true' and 'false' strings to boolean\r\n  Object.keys(self.options).forEach(key => {\r\n    if (self.options[key] === 'true') {\r\n      self.options[key] = true;\r\n    } else if (self.options[key] === 'false') {\r\n      self.options[key] = false;\r\n    }\r\n  });\r\n\r\n  \/\/ fix speed option [-1.0, 2.0]\r\n  self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\r\n\r\n  \/\/ prepare disableParallax callback\r\n  if (typeof self.options.disableParallax === 'string') {\r\n    self.options.disableParallax = new RegExp(self.options.disableParallax);\r\n  }\r\n  if (self.options.disableParallax instanceof RegExp) {\r\n    const disableParallaxRegexp = self.options.disableParallax;\r\n    self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableParallax !== 'function') {\r\n    self.options.disableParallax = () => false;\r\n  }\r\n\r\n  \/\/ prepare disableVideo callback\r\n  if (typeof self.options.disableVideo === 'string') {\r\n    self.options.disableVideo = new RegExp(self.options.disableVideo);\r\n  }\r\n  if (self.options.disableVideo instanceof RegExp) {\r\n    const disableVideoRegexp = self.options.disableVideo;\r\n    self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\r\n  }\r\n  if (typeof self.options.disableVideo !== 'function') {\r\n    self.options.disableVideo = () => false;\r\n  }\r\n\r\n  \/\/ custom element to check if parallax in viewport\r\n  let elementInVP = self.options.elementInViewport;\r\n  \/\/ get first item from array\r\n  if (elementInVP && typeof elementInVP === 'object' && typeof elementInVP.length !== 'undefined') {\r\n    [elementInVP] = elementInVP;\r\n  }\r\n  \/\/ check if dom element\r\n  if (!(elementInVP instanceof Element)) {\r\n    elementInVP = null;\r\n  }\r\n  self.options.elementInViewport = elementInVP;\r\n  self.image = {\r\n    src: self.options.imgSrc || null,\r\n    $container: null,\r\n    useImgTag: false,\r\n    \/\/ 1. Position fixed is needed for the most of browsers because absolute position have glitches\r\n    \/\/ 2. On MacOS with smooth scroll there is a huge lags with absolute position - https:\/\/github.com\/nk-o\/jarallax\/issues\/75\r\n    \/\/ 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\r\n    position: 'fixed'\r\n  };\r\n  if (self.initImg() && self.canInitParallax()) {\r\n    self.init();\r\n  }\r\n}\r\ncss(el, styles) {\r\n  return css(el, styles);\r\n}\r\nextend(out, ...args) {\r\n  return extend(out, ...args);\r\n}\r\n\r\n\/\/ get window size and scroll position. Useful for extensions\r\ngetWindowData() {\r\n  const {\r\n    width,\r\n    height\r\n  } = getWindowSize();\r\n  return {\r\n    width,\r\n    height,\r\n    y: document.documentElement.scrollTop\r\n  };\r\n}\r\n\r\n\/\/ Jarallax functions\r\ninitImg() {\r\n  const self = this;\r\n\r\n  \/\/ find image element\r\n  let $imgElement = self.options.imgElement;\r\n  if ($imgElement && typeof $imgElement === 'string') {\r\n    $imgElement = self.$item.querySelector($imgElement);\r\n  }\r\n\r\n  \/\/ check if dom element\r\n  if (!($imgElement instanceof Element)) {\r\n    if (self.options.imgSrc) {\r\n      $imgElement = new Image();\r\n      $imgElement.src = self.options.imgSrc;\r\n    } else {\r\n      $imgElement = null;\r\n    }\r\n  }\r\n  if ($imgElement) {\r\n    if (self.options.keepImg) {\r\n      self.image.$item = $imgElement.cloneNode(true);\r\n    } else {\r\n      self.image.$item = $imgElement;\r\n      self.image.$itemParent = $imgElement.parentNode;\r\n    }\r\n    self.image.useImgTag = true;\r\n  }\r\n\r\n  \/\/ true if there is img tag\r\n  if (self.image.$item) {\r\n    return true;\r\n  }\r\n\r\n  \/\/ get image src\r\n  if (self.image.src === null) {\r\n    self.image.src = 'data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n    self.image.bgImage = self.css(self.$item, 'background-image');\r\n  }\r\n  return !(!self.image.bgImage || self.image.bgImage === 'none');\r\n}\r\ncanInitParallax() {\r\n  return !this.options.disableParallax();\r\n}\r\ninit() {\r\n  const self = this;\r\n  const containerStyles = {\r\n    position: 'absolute',\r\n    top: 0,\r\n    left: 0,\r\n    width: '100%',\r\n    height: '100%',\r\n    overflow: 'hidden'\r\n  };\r\n  let imageStyles = {\r\n    pointerEvents: 'none',\r\n    transformStyle: 'preserve-3d',\r\n    backfaceVisibility: 'hidden'\r\n  };\r\n  if (!self.options.keepImg) {\r\n    \/\/ save default user styles\r\n    const curStyle = self.$item.getAttribute('style');\r\n    if (curStyle) {\r\n      self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n    }\r\n    if (self.image.useImgTag) {\r\n      const curImgStyle = self.image.$item.getAttribute('style');\r\n      if (curImgStyle) {\r\n        self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ set relative position and z-index to the parent\r\n  if (self.css(self.$item, 'position') === 'static') {\r\n    self.css(self.$item, {\r\n      position: 'relative'\r\n    });\r\n  }\r\n  if (self.css(self.$item, 'z-index') === 'auto') {\r\n    self.css(self.$item, {\r\n      zIndex: 0\r\n    });\r\n  }\r\n\r\n  \/\/ container for parallax image\r\n  self.image.$container = document.createElement('div');\r\n  self.css(self.image.$container, containerStyles);\r\n  self.css(self.image.$container, {\r\n    'z-index': self.options.zIndex\r\n  });\r\n\r\n  \/\/ it will remove some image overlapping\r\n  \/\/ overlapping occur due to an image position fixed inside absolute position element\r\n  \/\/ needed only when background in fixed position\r\n  if (this.image.position === 'fixed') {\r\n    self.css(self.image.$container, {\r\n      '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\r\n      'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'\r\n    });\r\n  }\r\n\r\n  \/\/ Add container unique ID.\r\n  self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\r\n\r\n  \/\/ Add container class.\r\n  if (self.options.containerClass) {\r\n    self.image.$container.setAttribute('class', self.options.containerClass);\r\n  }\r\n  self.$item.appendChild(self.image.$container);\r\n\r\n  \/\/ use img tag\r\n  if (self.image.useImgTag) {\r\n    imageStyles = self.extend({\r\n      'object-fit': self.options.imgSize,\r\n      'object-position': self.options.imgPosition,\r\n      'max-width': 'none'\r\n    }, containerStyles, imageStyles);\r\n\r\n    \/\/ use div with background image\r\n  } else {\r\n    self.image.$item = document.createElement('div');\r\n    if (self.image.src) {\r\n      imageStyles = self.extend({\r\n        'background-position': self.options.imgPosition,\r\n        'background-size': self.options.imgSize,\r\n        'background-repeat': self.options.imgRepeat,\r\n        'background-image': self.image.bgImage || `url(\"${self.image.src}\")`\r\n      }, containerStyles, imageStyles);\r\n    }\r\n  }\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\r\n    self.image.position = 'absolute';\r\n  }\r\n\r\n  \/\/ 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\r\n  \/\/    discussion - https:\/\/github.com\/nk-o\/jarallax\/issues\/9\r\n  \/\/ 2. Check if parents have overflow scroll\r\n  if (self.image.position === 'fixed') {\r\n    const $parents = getParents(self.$item).filter(el => {\r\n      const styles = global$1.getComputedStyle(el);\r\n      const parentTransform = styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\r\n      const overflowRegex = \/(auto|scroll)\/;\r\n      return parentTransform && parentTransform !== 'none' || overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x']);\r\n    });\r\n    self.image.position = $parents.length ? 'absolute' : 'fixed';\r\n  }\r\n\r\n  \/\/ add position to parallax block\r\n  imageStyles.position = self.image.position;\r\n\r\n  \/\/ insert parallax image\r\n  self.css(self.image.$item, imageStyles);\r\n  self.image.$container.appendChild(self.image.$item);\r\n\r\n  \/\/ set initial position and size\r\n  self.onResize();\r\n  self.onScroll(true);\r\n\r\n  \/\/ call onInit event\r\n  if (self.options.onInit) {\r\n    self.options.onInit.call(self);\r\n  }\r\n\r\n  \/\/ remove default user background\r\n  if (self.css(self.$item, 'background-image') !== 'none') {\r\n    self.css(self.$item, {\r\n      'background-image': 'none'\r\n    });\r\n  }\r\n  addObserver(self);\r\n}\r\ndestroy() {\r\n  const self = this;\r\n  removeObserver(self);\r\n\r\n  \/\/ return styles on container as before jarallax init\r\n  const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\r\n  self.$item.removeAttribute('data-jarallax-original-styles');\r\n  \/\/ null occurs if there is no style tag before jarallax init\r\n  if (!originalStylesTag) {\r\n    self.$item.removeAttribute('style');\r\n  } else {\r\n    self.$item.setAttribute('style', originalStylesTag);\r\n  }\r\n  if (self.image.useImgTag) {\r\n    \/\/ return styles on img tag as before jarallax init\r\n    const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\r\n    self.image.$item.removeAttribute('data-jarallax-original-styles');\r\n    \/\/ null occurs if there is no style tag before jarallax init\r\n    if (!originalStylesImgTag) {\r\n      self.image.$item.removeAttribute('style');\r\n    } else {\r\n      self.image.$item.setAttribute('style', originalStylesTag);\r\n    }\r\n\r\n    \/\/ move img tag to its default position\r\n    if (self.image.$itemParent) {\r\n      self.image.$itemParent.appendChild(self.image.$item);\r\n    }\r\n  }\r\n\r\n  \/\/ remove additional dom elements\r\n  if (self.image.$container) {\r\n    self.image.$container.parentNode.removeChild(self.image.$container);\r\n  }\r\n\r\n  \/\/ call onDestroy event\r\n  if (self.options.onDestroy) {\r\n    self.options.onDestroy.call(self);\r\n  }\r\n\r\n  \/\/ delete jarallax from item\r\n  delete self.$item.jarallax;\r\n}\r\ncoverImage() {\r\n  const self = this;\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.image.$container.getBoundingClientRect();\r\n  const contH = rect.height;\r\n  const {\r\n    speed\r\n  } = self.options;\r\n  const isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\r\n  let scrollDist = 0;\r\n  let resultH = contH;\r\n  let resultMT = 0;\r\n\r\n  \/\/ scroll parallax\r\n  if (isScroll) {\r\n    \/\/ scroll distance and height for image\r\n    if (speed < 0) {\r\n      scrollDist = speed * Math.max(contH, wndH);\r\n      if (wndH < contH) {\r\n        scrollDist -= speed * (contH - wndH);\r\n      }\r\n    } else {\r\n      scrollDist = speed * (contH + wndH);\r\n    }\r\n\r\n    \/\/ size for scroll parallax\r\n    if (speed > 1) {\r\n      resultH = Math.abs(scrollDist - wndH);\r\n    } else if (speed < 0) {\r\n      resultH = scrollDist \/ speed + Math.abs(scrollDist);\r\n    } else {\r\n      resultH += (wndH - contH) * (1 - speed);\r\n    }\r\n    scrollDist \/= 2;\r\n  }\r\n\r\n  \/\/ store scroll distance\r\n  self.parallaxScrollDistance = scrollDist;\r\n\r\n  \/\/ vertical center\r\n  if (isScroll) {\r\n    resultMT = (wndH - resultH) \/ 2;\r\n  } else {\r\n    resultMT = (contH - resultH) \/ 2;\r\n  }\r\n\r\n  \/\/ apply result to item\r\n  self.css(self.image.$item, {\r\n    height: `${resultH}px`,\r\n    marginTop: `${resultMT}px`,\r\n    left: self.image.position === 'fixed' ? `${rect.left}px` : '0',\r\n    width: `${rect.width}px`\r\n  });\r\n\r\n  \/\/ call onCoverImage event\r\n  if (self.options.onCoverImage) {\r\n    self.options.onCoverImage.call(self);\r\n  }\r\n\r\n  \/\/ return some useful data. Used in the video cover function\r\n  return {\r\n    image: {\r\n      height: resultH,\r\n      marginTop: resultMT\r\n    },\r\n    container: rect\r\n  };\r\n}\r\nisVisible() {\r\n  return this.isElementInViewport || false;\r\n}\r\nonScroll(force) {\r\n  const self = this;\r\n\r\n  \/\/ stop calculations if item is not in viewport\r\n  if (!force && !self.isVisible()) {\r\n    return;\r\n  }\r\n  const {\r\n    height: wndH\r\n  } = getWindowSize();\r\n  const rect = self.$item.getBoundingClientRect();\r\n  const contT = rect.top;\r\n  const contH = rect.height;\r\n  const styles = {};\r\n\r\n  \/\/ calculate parallax helping variables\r\n  const beforeTop = Math.max(0, contT);\r\n  const beforeTopEnd = Math.max(0, contH + contT);\r\n  const afterTop = Math.max(0, -contT);\r\n  const beforeBottom = Math.max(0, contT + contH - wndH);\r\n  const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\r\n  const afterBottom = Math.max(0, -contT + wndH - contH);\r\n  const fromViewportCenter = 1 - 2 * ((wndH - contT) \/ (wndH + contH));\r\n\r\n  \/\/ calculate on how percent of section is visible\r\n  let visiblePercent = 1;\r\n  if (contH < wndH) {\r\n    visiblePercent = 1 - (afterTop || beforeBottom) \/ contH;\r\n  } else if (beforeTopEnd <= wndH) {\r\n    visiblePercent = beforeTopEnd \/ wndH;\r\n  } else if (beforeBottomEnd <= wndH) {\r\n    visiblePercent = beforeBottomEnd \/ wndH;\r\n  }\r\n\r\n  \/\/ opacity\r\n  if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\r\n    styles.transform = 'translate3d(0,0,0)';\r\n    styles.opacity = visiblePercent;\r\n  }\r\n\r\n  \/\/ scale\r\n  if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\r\n    let scale = 1;\r\n    if (self.options.speed < 0) {\r\n      scale -= self.options.speed * visiblePercent;\r\n    } else {\r\n      scale += self.options.speed * (1 - visiblePercent);\r\n    }\r\n    styles.transform = `scale(${scale}) translate3d(0,0,0)`;\r\n  }\r\n\r\n  \/\/ scroll\r\n  if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\r\n    let positionY = self.parallaxScrollDistance * fromViewportCenter;\r\n\r\n    \/\/ fix if parallax block in absolute position\r\n    if (self.image.position === 'absolute') {\r\n      positionY -= contT;\r\n    }\r\n    styles.transform = `translate3d(0,${positionY}px,0)`;\r\n  }\r\n  self.css(self.image.$item, styles);\r\n\r\n  \/\/ call onScroll event\r\n  if (self.options.onScroll) {\r\n    self.options.onScroll.call(self, {\r\n      section: rect,\r\n      beforeTop,\r\n      beforeTopEnd,\r\n      afterTop,\r\n      beforeBottom,\r\n      beforeBottomEnd,\r\n      afterBottom,\r\n      visiblePercent,\r\n      fromViewportCenter\r\n    });\r\n  }\r\n}\r\nonResize() {\r\n  this.coverImage();\r\n}\r\n}\r\n\r\n\/\/ global definition\r\nconst jarallax = function (items, options, ...args) {\r\n\/\/ check for dom element\r\n\/\/ thanks: http:\/\/stackoverflow.com\/questions\/384286\/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\r\nif (typeof HTMLElement === 'object' ? items instanceof HTMLElement : items && typeof items === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\r\n  items = [items];\r\n}\r\nconst len = items.length;\r\nlet k = 0;\r\nlet ret;\r\nfor (k; k < len; k += 1) {\r\n  if (typeof options === 'object' || typeof options === 'undefined') {\r\n    if (!items[k].jarallax) {\r\n      items[k].jarallax = new Jarallax(items[k], options);\r\n    }\r\n  } else if (items[k].jarallax) {\r\n    \/\/ eslint-disable-next-line prefer-spread\r\n    ret = items[k].jarallax[options].apply(items[k].jarallax, args);\r\n  }\r\n  if (typeof ret !== 'undefined') {\r\n    return ret;\r\n  }\r\n}\r\nreturn items;\r\n};\r\njarallax.constructor = Jarallax;\r\n\r\nconst $ = global$1.jQuery;\r\n\r\n\/\/ jQuery support\r\nif (typeof $ !== 'undefined') {\r\nconst $Plugin = function (...args) {\r\n  Array.prototype.unshift.call(args, this);\r\n  const res = jarallax.apply(global$1, args);\r\n  return typeof res !== 'object' ? res : this;\r\n};\r\n$Plugin.constructor = jarallax.constructor;\r\n\r\n\/\/ no conflict\r\nconst old$Plugin = $.fn.jarallax;\r\n$.fn.jarallax = $Plugin;\r\n$.fn.jarallax.noConflict = function () {\r\n  $.fn.jarallax = old$Plugin;\r\n  return this;\r\n};\r\n}\r\n\r\n\/\/ data-jarallax initialization\r\nready(() => {\r\njarallax(document.querySelectorAll('[data-jarallax]'));\r\n});\r\n\r\nreturn jarallax;\r\n\r\n}));\r\n\/\/# sourceMappingURL=jarallax.js.map\r\n<\/script>\r\n\r\n\r\n<script type=\"text\/javascript\">\r\n  \/* init Jarallax *\/\r\n  jarallax(document.querySelectorAll(\".jarallax\"));\r\n\r\n  jarallax(document.querySelectorAll(\".jarallax-keep-img\"), {\r\n    keepImg: true,\r\n  });\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>only DentalVibe&#174; dentists are fearlessly dedicated to your comfort&#8482; fearlessly dedicated to your comfort\u2122 Find a DentalVibe&#174; dentist Purchase a DentalVibe&#174; fearlessly dedicated to your comfort&#8482; only DentalVibe&#174; dentists are fearlessly dedicated to your comfort&#8482; Find a DentalVibe&#174; dentist Purchase a DentalVibe&#174; only DentalVibe\u00ae dentists are fearlessly dedicated to your comfort\u2122 fearlessly dedicated to your [&hellip;]<\/p>\n","protected":false},"author":60,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jet_sm_ready_style":"","_jet_sm_style":"","_jet_sm_controls_values":"","_jet_sm_fonts_collection":"","_jet_sm_fonts_links":"","footnotes":""},"class_list":["post-73093","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/pages\/73093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/users\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/comments?post=73093"}],"version-history":[{"count":0,"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/pages\/73093\/revisions"}],"wp:attachment":[{"href":"https:\/\/dentalvibe.com\/ru\/wp-json\/wp\/v2\/media?parent=73093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}