Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) - Version 2.6.0

Version Description

  • 15 January 2020 =

  • New: Fun Factor widget

  • Update: Page break styling for Gravity Forms widget

  • Update: Widgets help link added in "Need Help?" button

  • Fix: Image Compare widget extra height issue

  • Fix: Step Flow widget title link issue

  • Fix: Gravity Forms styling issue

  • Fix: Removed welcome notice in admin

Download this release

Release Info

Developer thehappymonster
Plugin Icon 128x128 Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget)
Version 2.6.0
Comparing to
See all releases

Code changes from version 2.5.0 to 2.6.0

assets/css/main.css CHANGED
@@ -2702,3 +2702,106 @@
2702
  .ha-news-ticker-wrapper li.ha-news-ticker-item a:hover {
2703
  color: #e04c8a;
2704
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2702
  .ha-news-ticker-wrapper li.ha-news-ticker-item a:hover {
2703
  color: #e04c8a;
2704
  }
2705
+
2706
+ .ha-fun-factor-icon {
2707
+ font-size: 3em;
2708
+ }
2709
+
2710
+ .ha-fun-factor-content .ha-fun-factor-content-number,
2711
+ .ha-fun-factor-content .ha-fun-factor-content-text {
2712
+ margin-top: 0;
2713
+ margin-bottom: 15px;
2714
+ font-size: 24px;
2715
+ }
2716
+
2717
+ .ha-ff-icon--left .ha-fun-factor-content {
2718
+ padding-left: 20px;
2719
+ }
2720
+
2721
+ .ha-ff-icon--right .ha-fun-factor-content {
2722
+ padding-right: 20px;
2723
+ }
2724
+
2725
+ .ha-fun-factor-divider {
2726
+ display: block;
2727
+ margin-bottom: 15px;
2728
+ height: 1px;
2729
+ background-color: #ccc;
2730
+ }
2731
+
2732
+ .ha-ff-icon--top .ha-fun-factor-icon-section,
2733
+ .ha-ff-icon--top .ha-fun-factor-image-section {
2734
+ display: inline-block;
2735
+ margin-top: 10px;
2736
+ margin-bottom: 10px;
2737
+ width: auto;
2738
+ height: auto;
2739
+ }
2740
+
2741
+ .ha-fun-factor-image-section img {
2742
+ width: 200px;
2743
+ height: 100px;
2744
+ }
2745
+
2746
+ .ha-ff-container {
2747
+ padding: 10px;
2748
+ word-wrap: break-word;
2749
+
2750
+ overflow-wrap: break-word;
2751
+ }
2752
+
2753
+ .ha-ff-icon--right > .elementor-widget-container .ha-ff-container,
2754
+ .ha-ff-icon--left > .elementor-widget-container .ha-ff-container {
2755
+ display: -webkit-box;
2756
+ display: -webkit-flex;
2757
+ display: -ms-flexbox;
2758
+ display: flex;
2759
+ -webkit-box-align: center;
2760
+ -webkit-align-items: center;
2761
+ align-items: center;
2762
+ -ms-flex-align: center;
2763
+ -webkit-box-orient: horizontal;
2764
+ -webkit-box-direction: normal;
2765
+ -webkit-flex-direction: row;
2766
+ -ms-flex-direction: row;
2767
+ flex-direction: row;
2768
+ }
2769
+
2770
+ .ha-ff-icon--right > .elementor-widget-container .ha-ff-container {
2771
+ -webkit-box-orient: horizontal;
2772
+ -webkit-box-direction: reverse;
2773
+ -webkit-flex-direction: row-reverse;
2774
+ -ms-flex-direction: row-reverse;
2775
+ flex-direction: row-reverse;
2776
+ text-align: right;
2777
+ }
2778
+
2779
+ .ha-ff-icon--right > .elementor-widget-container .ha-ff-container .ha-fun-factor-divider,
2780
+ .ha-ff-icon--left > .elementor-widget-container .ha-ff-container .ha-fun-factor-divider,
2781
+ .ha-ff-icon--top > .elementor-widget-container .ha-ff-container .ha-fun-factor-divider {
2782
+ display: block;
2783
+ margin-right: auto;
2784
+ margin-left: auto;
2785
+ width: 100px;
2786
+ }
2787
+
2788
+ .ha-ff-icon--right > .elementor-widget-container .ha-ff-container .ha-fun-factor-divider,
2789
+ .ha-ff-icon--left > .elementor-widget-container .ha-ff-container .ha-fun-factor-divider {
2790
+ width: 100% !important;
2791
+ }
2792
+
2793
+ .ha-fun-factor-divider-align-left {
2794
+ margin-left: 0 !important;
2795
+ text-align: left;
2796
+ }
2797
+
2798
+ .ha-fun-factor-divider-align-right {
2799
+ margin-right: 0 !important;
2800
+ text-align: right;
2801
+ }
2802
+
2803
+ .ha-fun-factor-divider-align-center {
2804
+ margin-right: auto !important;
2805
+ margin-left: auto !important;
2806
+ text-align: center;
2807
+ }
assets/css/main.min.css CHANGED
@@ -1 +1 @@
1
- .happy-addon>.elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box}.happy-addon>.elementor-widget-container *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-btn{display:inline-block;max-width:100%;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;max-width:100%;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-card-figure{position:relative;height:250px}.ha-card-figure img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-weight:700;font-size:22px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure{display:inline-block;width:100%}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-icon-box-icon>i,.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before,.ha-icon-box-icon>i:before,.ha-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-card-figure img,.ha-infobox-figure img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{display:inline-block;color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px;max-width:100%}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;overflow:hidden;padding:10px 25px;max-width:100%;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;text-overflow:ellipsis;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner img{height:100%}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px;line-height:1}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{height:30px}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:10%;border-radius:inherit;background-color:#562dd4;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-skill-name{display:inline-block;overflow:hidden;max-width:70%;text-overflow:ellipsis}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}.ha-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.ha-dual-btn,.ha-dual-btn-connector{display:inline-block}.ha-dual-btn-wrapper{position:relative;text-align:center;font-weight:400}.ha-dual-btn{padding:1.2rem 3rem;max-width:100%;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab;color:#fff}.ha-dual-btn--right{background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e;color:#fff}.ha-dual-btn-connector{position:absolute!important;z-index:9;overflow:hidden;width:30px;height:30px;border-radius:100%;background-color:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.3);color:#27374c;text-transform:uppercase;font-size:12px;line-height:30px;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ha-dual-btn-icon>svg{width:1em;height:auto}.ha-dual-btn-icon>i{font-size:1em}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-dual-button>.elementor-widget-container,.ha-news-ticker-wrapper ul.ha-news-ticker-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-button--mobile-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--mobile-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--mobile-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--mobile-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--mobile-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-center>.elementor-widget-container,.ha-testimonial__reviewer{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--mobile-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--mobile-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--mobile-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--mobile-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--mobile-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}@media (min-width:768px){.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--tablet-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--tablet-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--tablet-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--tablet-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--tablet-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--tablet-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--tablet-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--tablet-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--tablet-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--tablet-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}@media (min-width:1025px){.ha-dual-button--layout-stack.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--layout-stack.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--layout-stack.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--layout-queue.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--layout-queue.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--layout-queue.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{-webkit-box-flex:0;-webkit-flex:0 0 65px;-ms-flex:0 0 65px;flex:0 0 65px;max-width:65px;height:65px}.ha-testimonial__reviewer-thumb img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em;max-width:100%}.ha-testimonial--left .ha-testimonial__reviewer-meta,.ha-testimonial--right .ha-testimonial__reviewer-meta{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 65px);-ms-flex:0 0 calc(100% - 65px);flex:0 0 calc(100% - 65px);max-width:calc(100% - 65px)}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-number-body,.ha-testimonial--center{text-align:center}.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;font-size:20px}.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}.ha-logo-grid-wrapper:after{display:block;clear:both;content:""}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-feature-text{display:inline-block}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}.ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-pricing-table>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1)}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;overflow:hidden;padding:12px 8px;max-width:200%;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-news-ticker-wrapper li.ha-news-ticker-item a,.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}.ha-news-ticker-wrapper{position:relative;overflow:hidden;padding:20px 0;border:1px solid #d2d2d2;border-radius:5px}.ha-news-ticker-wrapper ul.ha-news-ticker-container{margin:0;padding:0;list-style:none}.ha-news-ticker-wrapper ul.ha-news-ticker-container:focus,.ha-news-ticker-wrapper ul.ha-news-ticker-container:hover{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.ha-news-ticker-wrapper span.ha-news-ticker-sticky-title{position:absolute;top:50%;left:auto;z-index:1;padding:20px;background:#333;color:#fff;font-size:1rem;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-news-ticker-wrapper li.ha-news-ticker-item{margin-right:20px;white-space:nowrap}.ha-news-ticker-wrapper li.ha-news-ticker-item:last-child{margin-right:0}.ha-news-ticker-wrapper .ha-news-ticker-title{margin:0;font-size:1rem;line-height:1}.ha-news-ticker-wrapper li.ha-news-ticker-item a:hover{color:#e04c8a}
1
+ .happy-addon>.elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box}.happy-addon>.elementor-widget-container *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-btn{display:inline-block;max-width:100%;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;max-width:100%;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-card-figure{position:relative;height:250px}.ha-card-figure img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-weight:700;font-size:22px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure{display:inline-block;width:100%}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-icon-box-icon>i,.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before,.ha-icon-box-icon>i:before,.ha-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-card-figure img,.ha-infobox-figure img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{display:inline-block;color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px;max-width:100%}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;overflow:hidden;padding:10px 25px;max-width:100%;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;text-overflow:ellipsis;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner img{height:100%}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px;line-height:1}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{height:30px}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:10%;border-radius:inherit;background-color:#562dd4;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-skill-name{display:inline-block;overflow:hidden;max-width:70%;text-overflow:ellipsis}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}.ha-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.ha-dual-btn,.ha-dual-btn-connector{display:inline-block}.ha-dual-btn-wrapper{position:relative;text-align:center;font-weight:400}.ha-dual-btn{padding:1.2rem 3rem;max-width:100%;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab;color:#fff}.ha-dual-btn--right{background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e;color:#fff}.ha-dual-btn-connector{position:absolute!important;z-index:9;overflow:hidden;width:30px;height:30px;border-radius:100%;background-color:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.3);color:#27374c;text-transform:uppercase;font-size:12px;line-height:30px;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ha-dual-btn-icon>svg{width:1em;height:auto}.ha-dual-btn-icon>i{font-size:1em}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-dual-button>.elementor-widget-container,.ha-news-ticker-wrapper ul.ha-news-ticker-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-button--mobile-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--mobile-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--mobile-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--mobile-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--mobile-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-center>.elementor-widget-container,.ha-testimonial__reviewer{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--mobile-layout-stack.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--mobile-layout-queue.ha-dual-button--mobile-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--mobile-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--mobile-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--mobile-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--mobile-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--mobile-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}@media (min-width:768px){.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--tablet-layout-stack.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--tablet-layout-queue.ha-dual-button--tablet-align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--tablet-layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--tablet-layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--tablet-layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--tablet-layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--tablet-layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--tablet-layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--tablet-layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--tablet-layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--tablet-layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--tablet-layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}@media (min-width:1025px){.ha-dual-button--layout-stack.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-dual-button--layout-stack.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-dual-button--layout-stack.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end;-ms-flex-align:end}.ha-dual-button--layout-queue.ha-dual-button--align-left>.elementor-widget-container{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.ha-dual-button--layout-queue.ha-dual-button--align-center>.elementor-widget-container{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ha-dual-button--layout-queue.ha-dual-button--align-right>.elementor-widget-container{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-dual-button--layout-stack>.elementor-widget-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-dual-button--layout-stack .ha-dual-btn-wrapper{max-width:100%}.ha-dual-button--layout-stack .ha-dual-btn-connector{top:100%;right:50%}.ha-dual-button--layout-stack .ha-dual-btn--left{border-radius:30px 30px 0 0}.ha-dual-button--layout-stack .ha-dual-btn--right{border-radius:0 0 30px 30px}.ha-dual-button--layout-queue>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-dual-button--layout-queue .ha-dual-btn-wrapper{max-width:50%}.ha-dual-button--layout-queue .ha-dual-btn-connector{top:50%;right:0}.ha-dual-button--layout-queue .ha-dual-btn--left{border-radius:50px 0 0 50px}.ha-dual-button--layout-queue .ha-dual-btn--right{border-radius:0 50px 50px 0}}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{-webkit-box-flex:0;-webkit-flex:0 0 65px;-ms-flex:0 0 65px;flex:0 0 65px;max-width:65px;height:65px}.ha-testimonial__reviewer-thumb img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em;max-width:100%}.ha-testimonial--left .ha-testimonial__reviewer-meta,.ha-testimonial--right .ha-testimonial__reviewer-meta{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 65px);-ms-flex:0 0 calc(100% - 65px);flex:0 0 calc(100% - 65px);max-width:calc(100% - 65px)}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-number-body,.ha-testimonial--center{text-align:center}.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;font-size:20px}.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}.ha-logo-grid-wrapper:after{display:block;clear:both;content:""}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-feature-text{display:inline-block}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}.ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-pricing-table>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1)}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;overflow:hidden;padding:12px 8px;max-width:200%;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-news-ticker-wrapper li.ha-news-ticker-item a,.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}.ha-news-ticker-wrapper{position:relative;overflow:hidden;padding:20px 0;border:1px solid #d2d2d2;border-radius:5px}.ha-news-ticker-wrapper ul.ha-news-ticker-container{margin:0;padding:0;list-style:none}.ha-news-ticker-wrapper ul.ha-news-ticker-container:focus,.ha-news-ticker-wrapper ul.ha-news-ticker-container:hover{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.ha-news-ticker-wrapper span.ha-news-ticker-sticky-title{position:absolute;top:50%;left:auto;z-index:1;padding:20px;background:#333;color:#fff;font-size:1rem;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-news-ticker-wrapper li.ha-news-ticker-item{margin-right:20px;white-space:nowrap}.ha-news-ticker-wrapper li.ha-news-ticker-item:last-child{margin-right:0}.ha-news-ticker-wrapper .ha-news-ticker-title{margin:0;font-size:1rem;line-height:1}.ha-news-ticker-wrapper li.ha-news-ticker-item a:hover{color:#e04c8a}.ha-fun-factor-icon{font-size:3em}.ha-fun-factor-content .ha-fun-factor-content-number,.ha-fun-factor-content .ha-fun-factor-content-text{margin-top:0;margin-bottom:15px;font-size:24px}.ha-ff-icon--left .ha-fun-factor-content{padding-left:20px}.ha-ff-icon--right .ha-fun-factor-content{padding-right:20px}.ha-fun-factor-divider{display:block;margin-bottom:15px;height:1px;background-color:#ccc}.ha-ff-icon--top .ha-fun-factor-icon-section,.ha-ff-icon--top .ha-fun-factor-image-section{display:inline-block;margin-top:10px;margin-bottom:10px;width:auto;height:auto}.ha-fun-factor-image-section img{width:200px;height:100px}.ha-ff-container{padding:10px;word-wrap:break-word;overflow-wrap:break-word}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-ff-icon--right>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto}.ha-ff-icon--top>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto;width:100px}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{width:100%!important}.ha-fun-factor-divider-align-left{margin-left:0!important;text-align:left}.ha-fun-factor-divider-align-right{margin-right:0!important;text-align:right}.ha-fun-factor-divider-align-center{margin-right:auto!important;margin-left:auto!important;text-align:center}
assets/css/widgets/fun-factor.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ha-fun-factor-icon{font-size:3em}.ha-fun-factor-content .ha-fun-factor-content-number,.ha-fun-factor-content .ha-fun-factor-content-text{margin-top:0;margin-bottom:15px;font-size:24px}.ha-ff-icon--left .ha-fun-factor-content{padding-left:20px}.ha-ff-icon--right .ha-fun-factor-content{padding-right:20px}.ha-fun-factor-divider{display:block;margin-bottom:15px;height:1px;background-color:#ccc}.ha-ff-icon--top .ha-fun-factor-icon-section,.ha-ff-icon--top .ha-fun-factor-image-section{display:inline-block;margin-top:10px;margin-bottom:10px;width:auto;height:auto}.ha-fun-factor-image-section img{width:200px;height:100px}.ha-ff-container{padding:10px;word-wrap:break-word;overflow-wrap:break-word}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-ff-icon--right>.elementor-widget-container .ha-ff-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto}.ha-ff-icon--top>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{display:block;margin-right:auto;margin-left:auto;width:100px}.ha-ff-icon--left>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider,.ha-ff-icon--right>.elementor-widget-container .ha-ff-container .ha-fun-factor-divider{width:100%!important}.ha-fun-factor-divider-align-left{margin-left:0!important;text-align:left}.ha-fun-factor-divider-align-right{margin-right:0!important;text-align:right}.ha-fun-factor-divider-align-center{margin-right:auto!important;margin-left:auto!important;text-align:center}
assets/js/happy-addons.js CHANGED
@@ -87,8 +87,14 @@
87
 
88
  settings[fieldMap[settings.move_handle || 'on_swipe']] = true;
89
  delete settings.move_handle;
 
90
  $item.imagesLoaded().done(function() {
91
  $item.twentytwenty(settings);
 
 
 
 
 
92
  });
93
  };
94
 
@@ -437,11 +443,20 @@
437
  }
438
  });
439
 
 
 
 
 
 
 
 
 
440
  var handlersFnMap = {
441
  'ha-image-compare.default': HandleImageCompare,
442
  'ha-justified-gallery.default': HandleJustifiedGallery,
443
  'ha-number.default': NumberHandler,
444
  'ha-skills.default': SkillHandler,
 
445
  };
446
 
447
  $.each( handlersFnMap, function( widgetName, handlerFn ) {
87
 
88
  settings[fieldMap[settings.move_handle || 'on_swipe']] = true;
89
  delete settings.move_handle;
90
+
91
  $item.imagesLoaded().done(function() {
92
  $item.twentytwenty(settings);
93
+
94
+ var t = setTimeout(function() {
95
+ $window.trigger('resize.twentytwenty');
96
+ clearTimeout(t);
97
+ }, 400);
98
  });
99
  };
100
 
443
  }
444
  });
445
 
446
+ // fun-factor
447
+ var FunFactor = function ($scope) {
448
+ EF.waypoint($scope, function () {
449
+ var $fun_factor = $scope.find('.ha-fun-factor-content-number');
450
+ $fun_factor.numerator($fun_factor.data('animation'));
451
+ });
452
+ };
453
+
454
  var handlersFnMap = {
455
  'ha-image-compare.default': HandleImageCompare,
456
  'ha-justified-gallery.default': HandleJustifiedGallery,
457
  'ha-number.default': NumberHandler,
458
  'ha-skills.default': SkillHandler,
459
+ 'ha-fun-factor.default': FunFactor,
460
  };
461
 
462
  $.each( handlersFnMap, function( widgetName, handlerFn ) {
assets/js/happy-addons.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";!function(t,e){function i(t,e,i){var n;return function(){var s=this,a=arguments,o=function(){n=null,i||t.apply(s,a)},r=i&&!n;clearTimeout(n),n=setTimeout(o,e),r&&t.apply(s,a)}}function n(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}function s(e,i,n,s){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:s,type:"image",image:{titleSrc:function(t){return t.el.attr("title")?t.el.attr("title"):t.el.find("img").attr("alt")}},gallery:{enabled:!0,preload:[1,2]},zoom:{enabled:!0,duration:300,easing:"ease-in-out",opener:function(t){return t.is("img")?t:t.find("img")}}})}}var a=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var o=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i)})},r=function(e){var i=e.find(".hajs-justified-gallery"),a=i.getHappySettings(),o=a.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},a)),s(e,".ha-js-popup",o,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?a.lastRow:"nojustify",filter:t}),s(e,"*"!==t?t:".ha-js-popup",o,"justifiedgallery")})};a.on("elementor/frontend/init",function(){var e=elementorFrontend,a=elementorModules,l=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(t){-1!==t.indexOf("ha_floating")&&this.runOnElementChange()},runOnElementChange:i(function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},200),getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects:function(){var t=this.getDefaultSettings();this.getConfig("translate_toggle")&&((this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to"))&&(t.translateX={value:[this.getConfig("translate_x.sizes.from")||0,this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0}),(this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to"))&&(t.translateY={value:[this.getConfig("translate_y.sizes.from")||0,this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0})),this.getConfig("rotate_toggle")&&((this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to"))&&(t.rotateX={value:[this.getConfig("rotate_x.sizes.from")||0,this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to"))&&(t.rotateY={value:[this.getConfig("rotate_y.sizes.from")||0,this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to"))&&(t.rotateZ={value:[this.getConfig("rotate_z.sizes.from")||0,this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0})),this.getConfig("scale_toggle")&&((this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to"))&&(t.scaleX={value:[this.getConfig("scale_x.sizes.from")||0,this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0}),(this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to"))&&(t.scaleY={value:[this.getConfig("scale_y.sizes.from")||0,this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0})),(this.getConfig("translate_toggle")||this.getConfig("rotate_toggle")||this.getConfig("scale_toggle"))&&(this.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),g=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-slick"),this.run()},isCarousel:function(){return this.$element.hasClass("ha-carousel")},getDefaultSettings:function(){return{arrows:!1,dots:!1,checkVisible:!1,infinite:!0,slidesToShow:this.isCarousel()?3:1,rows:0,prevArrow:'<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',nextArrow:'<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'}},onElementChange:function(){this.$container.slick("unslick"),this.run()},getReadySettings:function(){var i={infinite:!!this.getElementSettings("loop"),autoplay:!!this.getElementSettings("autoplay"),autoplaySpeed:this.getElementSettings("autoplay_speed"),speed:this.getElementSettings("animation_speed"),centerMode:!!this.getElementSettings("center"),vertical:!!this.getElementSettings("vertical"),slidesToScroll:1};switch(this.getElementSettings("navigation")){case"arrow":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),h=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},f=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onStep:function(){i.append("%")}})})})},d=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;n(this.$element,function(e){t.$container.isotope({filter:e});var i="*"!==e?e:".ha-js-popup";s(t.$element,i,t.getElementSettings("enable_popup"),"imagegrid")})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin","enable_popup"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")}),s(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),u=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-news-ticker-wrapper"),this.run()},onElementChange:function(t){"item_space"!==t&&"title_typography_font_size"!==t||this.run()},run:function(){var e=this.wrapper.innerHeight(),i=this.wrapper.innerWidth(),n=this.wrapper.find(".ha-news-ticker-container"),s=n.find(".ha-news-ticker-item"),a=this.wrapper.data("scroll-direction"),o="scroll"+a+e+i,r=this.wrapper.data("duration"),l="normal",g=10,h={transform:"translateX(0"+i+"px)"},f={transform:"translateX(-101%)"};"right"===a&&(l="reverse"),s.each(function(){g+=t(this).outerWidth(!0)}),n.css({width:g,display:"flex"}),t.keyframe.define([{name:o,"0%":h,"100%":f}]),n.playKeyframe({name:o,duration:r+"ms",timingFunction:"linear",delay:"0s",iterationCount:"infinite",direction:l,fillMode:"none",complete:function(){}})}}),c={"ha-image-compare.default":o,"ha-justified-gallery.default":r,"ha-number.default":h,"ha-skills.default":f};t.each(c,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var p={"ha-slider.default":g,"ha-carousel.default":g,"ha-image-grid.default":d,"ha-news-ticker.default":u,widget:l};t.each(p,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
1
+ "use strict";!function(t,e){function i(t,e,i){var n;return function(){var s=this,a=arguments,o=function(){n=null,i||t.apply(s,a)},r=i&&!n;clearTimeout(n),n=setTimeout(o,e),r&&t.apply(s,a)}}function n(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}function s(e,i,n,s){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:s,type:"image",image:{titleSrc:function(t){return t.el.attr("title")?t.el.attr("title"):t.el.find("img").attr("alt")}},gallery:{enabled:!0,preload:[1,2]},zoom:{enabled:!0,duration:300,easing:"ease-in-out",opener:function(t){return t.is("img")?t:t.find("img")}}})}}var a=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var o=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i);var t=setTimeout(function(){a.trigger("resize.twentytwenty"),clearTimeout(t)},400)})},r=function(e){var i=e.find(".hajs-justified-gallery"),a=i.getHappySettings(),o=a.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},a)),s(e,".ha-js-popup",o,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?a.lastRow:"nojustify",filter:t}),s(e,"*"!==t?t:".ha-js-popup",o,"justifiedgallery")})};a.on("elementor/frontend/init",function(){var e=elementorFrontend,a=elementorModules,l=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(t){-1!==t.indexOf("ha_floating")&&this.runOnElementChange()},runOnElementChange:i(function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},200),getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects:function(){var t=this.getDefaultSettings();this.getConfig("translate_toggle")&&((this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to"))&&(t.translateX={value:[this.getConfig("translate_x.sizes.from")||0,this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0}),(this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to"))&&(t.translateY={value:[this.getConfig("translate_y.sizes.from")||0,this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0})),this.getConfig("rotate_toggle")&&((this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to"))&&(t.rotateX={value:[this.getConfig("rotate_x.sizes.from")||0,this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to"))&&(t.rotateY={value:[this.getConfig("rotate_y.sizes.from")||0,this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to"))&&(t.rotateZ={value:[this.getConfig("rotate_z.sizes.from")||0,this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0})),this.getConfig("scale_toggle")&&((this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to"))&&(t.scaleX={value:[this.getConfig("scale_x.sizes.from")||0,this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0}),(this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to"))&&(t.scaleY={value:[this.getConfig("scale_y.sizes.from")||0,this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0})),(this.getConfig("translate_toggle")||this.getConfig("rotate_toggle")||this.getConfig("scale_toggle"))&&(this.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),g=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-slick"),this.run()},isCarousel:function(){return this.$element.hasClass("ha-carousel")},getDefaultSettings:function(){return{arrows:!1,dots:!1,checkVisible:!1,infinite:!0,slidesToShow:this.isCarousel()?3:1,rows:0,prevArrow:'<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',nextArrow:'<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'}},onElementChange:function(){this.$container.slick("unslick"),this.run()},getReadySettings:function(){var i={infinite:!!this.getElementSettings("loop"),autoplay:!!this.getElementSettings("autoplay"),autoplaySpeed:this.getElementSettings("autoplay_speed"),speed:this.getElementSettings("animation_speed"),centerMode:!!this.getElementSettings("center"),vertical:!!this.getElementSettings("vertical"),slidesToScroll:1};switch(this.getElementSettings("navigation")){case"arrow":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),f=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},h=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onStep:function(){i.append("%")}})})})},u=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;n(this.$element,function(e){t.$container.isotope({filter:e});var i="*"!==e?e:".ha-js-popup";s(t.$element,i,t.getElementSettings("enable_popup"),"imagegrid")})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin","enable_popup"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")}),s(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),d=a.frontend.handlers.Base.extend({onInit:function(){a.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-news-ticker-wrapper"),this.run()},onElementChange:function(t){"item_space"!==t&&"title_typography_font_size"!==t||this.run()},run:function(){var e=this.wrapper.innerHeight(),i=this.wrapper.innerWidth(),n=this.wrapper.find(".ha-news-ticker-container"),s=n.find(".ha-news-ticker-item"),a=this.wrapper.data("scroll-direction"),o="scroll"+a+e+i,r=this.wrapper.data("duration"),l="normal",g=10,f={transform:"translateX(0"+i+"px)"},h={transform:"translateX(-101%)"};"right"===a&&(l="reverse"),s.each(function(){g+=t(this).outerWidth(!0)}),n.css({width:g,display:"flex"}),t.keyframe.define([{name:o,"0%":f,"100%":h}]),n.playKeyframe({name:o,duration:r+"ms",timingFunction:"linear",delay:"0s",iterationCount:"infinite",direction:l,fillMode:"none",complete:function(){}})}}),c=function(t){e.waypoint(t,function(){var e=t.find(".ha-fun-factor-content-number");e.numerator(e.data("animation"))})},p={"ha-image-compare.default":o,"ha-justified-gallery.default":r,"ha-number.default":f,"ha-skills.default":h,"ha-fun-factor.default":c};t.each(p,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var m={"ha-slider.default":g,"ha-carousel.default":g,"ha-image-grid.default":u,"ha-news-ticker.default":d,widget:l};t.each(m,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
base.php CHANGED
@@ -6,6 +6,10 @@
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
 
 
 
 
9
  defined( 'ABSPATH' ) || die();
10
 
11
  class Base {
@@ -101,7 +105,6 @@ class Base {
101
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
102
 
103
  if ( is_admin() ) {
104
- include_once( HAPPY_ADDONS_DIR_PATH . 'classes/class.communicator.php' );
105
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
106
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/dashboard.php' );
107
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/attention-seeker.php' );
@@ -118,7 +121,7 @@ class Base {
118
  *
119
  * @param $elements_manager
120
  */
121
- public function add_category( $elements_manager ) {
122
  $elements_manager->add_category(
123
  'happy_addons_category',
124
  [
@@ -129,19 +132,15 @@ class Base {
129
  }
130
 
131
  /**
132
- * Register custom controls
133
- *
134
- * Include custom controls file and register them
135
- *
136
- * @since 1.0.0
137
  *
138
- * @access public
139
  */
140
- public function register_controls() {
141
  include_once( HAPPY_ADDONS_DIR_PATH . 'controls/foreground.php' );
142
  $foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
143
 
144
- ha_elementor()->controls_manager->add_group_control( $foreground::get_type(), new $foreground() );
145
  }
146
 
147
  /**
@@ -149,7 +148,7 @@ class Base {
149
  *
150
  * @param $categories_manager
151
  */
152
- public function register_finder( $categories_manager ) {
153
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/finder.php' );
154
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/finder-edit.php' );
155
  // Add the category
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Elements_Manager;
11
+ use Elementor\Core\Common\Modules\Finder\Categories_Manager;
12
+
13
  defined( 'ABSPATH' ) || die();
14
 
15
  class Base {
105
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
106
 
107
  if ( is_admin() ) {
 
108
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
109
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/dashboard.php' );
110
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/attention-seeker.php' );
121
  *
122
  * @param $elements_manager
123
  */
124
+ public function add_category( Elements_Manager $elements_manager ) {
125
  $elements_manager->add_category(
126
  'happy_addons_category',
127
  [
132
  }
133
 
134
  /**
135
+ * Register controls
 
 
 
 
136
  *
137
+ * @param Controls_Manager $controls_Manager
138
  */
139
+ public function register_controls( Controls_Manager $controls_Manager ) {
140
  include_once( HAPPY_ADDONS_DIR_PATH . 'controls/foreground.php' );
141
  $foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
142
 
143
+ $controls_Manager->add_group_control( $foreground::get_type(), new $foreground() );
144
  }
145
 
146
  /**
148
  *
149
  * @param $categories_manager
150
  */
151
+ public function register_finder( Categories_Manager $categories_manager ) {
152
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/finder.php' );
153
  include_once( HAPPY_ADDONS_DIR_PATH . 'classes/finder-edit.php' );
154
  // Add the category
changelog.txt CHANGED
@@ -1,3 +1,13 @@
 
 
 
 
 
 
 
 
 
 
1
  = 2.5.0 - 24 December 2019 =
2
 
3
  - New: Added Step Flow widget title heading level control
1
+ = 2.6.0 - 15 January 2020 =
2
+
3
+ - New: Fun Factor widget
4
+ - Update: Page break styling for Gravity Forms widget
5
+ - Update: Widgets help link added in "Need Help?" button
6
+ - Fix: Image Compare widget extra height issue
7
+ - Fix: Step Flow widget title link issue
8
+ - Fix: Gravity Forms styling issue
9
+ - Fix: Removed welcome notice in admin
10
+
11
  = 2.5.0 - 24 December 2019 =
12
 
13
  - New: Added Step Flow widget title heading level control
classes/class.communicator.php DELETED
@@ -1,109 +0,0 @@
1
- <?php
2
-
3
- namespace Happy_Addons\Communication;
4
-
5
- defined( 'ABSPATH' ) || die();
6
-
7
- define( 'HAPPY_API_COMMUNICATION_ENDPOINT', 'https://happyaddons.com/communication.php' );
8
-
9
- if ( ! ha_is_localhost() ) {
10
- define( 'HAPPY_API_COMMUNICATION_CHECK_INTERVAL', ( DAY_IN_SECONDS / 2 ) );
11
- } else {
12
- define( 'HAPPY_API_COMMUNICATION_CHECK_INTERVAL', 60 );
13
- }
14
-
15
- class Communicator {
16
-
17
- public function __construct() {
18
- add_action( 'admin_menu', function () {
19
- $last_message = get_option( 'happyaddons_message', [ 'digest' => '404' ] );
20
- $next_communication_time = get_option( 'happyaddons_communication_time', 0 );
21
-
22
- if ( $next_communication_time < time() ) {
23
- //make a call
24
- $happy_data = wp_remote_get( HAPPY_API_COMMUNICATION_ENDPOINT . '?s=happy&action=notice' );
25
-
26
- if ( is_array( $happy_data ) ) {
27
- $body = json_decode( wp_remote_retrieve_body( $happy_data ), true );
28
- if ( is_array( $body ) ) {
29
- if ( $body['digest'] != $last_message['digest'] ) {
30
- $options = [
31
- 'happyaddons_message' => $body,
32
- 'happyaddons_communication_time' => time() + HAPPY_API_COMMUNICATION_CHECK_INTERVAL,
33
- 'happyaddons_message_dismissed' => 0
34
- ];
35
- foreach ( $options as $key => $value ) {
36
- update_option( $key, $value );
37
- }
38
- }
39
- } else {
40
- $options = [
41
- 'happyaddons_communication_time' => time() + HAPPY_API_COMMUNICATION_CHECK_INTERVAL,
42
- ];
43
- foreach ( $options as $key => $value ) {
44
- update_option( $key, $value );
45
- }
46
- }
47
- }
48
- }
49
-
50
- add_action( 'admin_notices', [ $this, 'display_admin_notice' ] );
51
- } );
52
-
53
- add_action( 'wp_ajax_happyaddons_dismiss_error', function () {
54
- if ( wp_verify_nonce( $_POST['nonce'], 'happyaddons_dismiss_error' ) ) {
55
- update_option( 'happyaddons_message_dismissed', '1' );
56
- die();
57
- }
58
- } );
59
-
60
- add_action( 'admin_footer', function () {
61
- ?>
62
- <script>
63
- ;(function ($) {
64
- $(document).ready(function () {
65
-
66
- $('body').on('click', '#happyaddons_remote_notice .notice-dismiss', function () {
67
- $.post('<?php echo admin_url( 'admin-ajax.php' ); ?>', {
68
- action: 'happyaddons_dismiss_error',
69
- nonce: $('#happyaddons_remote_dismiss').val()
70
- }, function (data) {
71
- //console.log(data);
72
- });
73
- return false;
74
- });
75
- })
76
- })(jQuery);
77
- </script>
78
-
79
- <?php
80
- } );
81
- }
82
-
83
- function display_admin_notice() {
84
- $last_message = get_option( 'happyaddons_message', [] );
85
-
86
- if ( is_array( $last_message ) && count( $last_message ) > 0 ) {
87
- $dismissed = get_option( 'happyaddons_message_dismissed', 1 );
88
- if ( $dismissed == 0 && trim( $last_message['message'] != '' ) ) {
89
- $message_body = isset( $last_message['message'] ) ? $last_message['message'] : '';
90
- $action_button_title = isset( $last_message['action'] ) ? $last_message['action'] : '';
91
- $action_button_url = isset( $last_message['url'] ) ? $last_message['url'] : '';
92
- $message_style = isset( $last_message['style'] ) ? $last_message['style'] : '';
93
- ?>
94
- <div id="happyaddons_remote_notice" class="notice notice-<?php echo $message_style; ?> is-dismissible">
95
- <?php wp_nonce_field( 'happyaddons_dismiss_error', 'happyaddons_remote_dismiss' ); ?>
96
- <div class="happyaddons-massage wp-clearfix"><?php echo $message_body; ?></div>
97
- <?php if ( $action_button_title ): ?>
98
- <p><a class="button button-primary"
99
- href="<?php echo esc_url( $action_button_url ); ?>"><?php echo esc_html( $action_button_title ); ?></a>
100
- </p>
101
- <?php endif; ?>
102
- </div>
103
- <?php
104
- }
105
- }
106
- }
107
- }
108
-
109
- new Communicator();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/widgets-manager.php CHANGED
@@ -448,7 +448,7 @@ class Widgets_Manager {
448
  'js' => [],
449
  ],
450
  ],
451
- 'gravityforms' => [
452
  'title' => __( 'Gravity Forms', 'happy-elementor-addons' ),
453
  'icon' => 'hm hm-form',
454
  'css' => [],
@@ -458,7 +458,7 @@ class Widgets_Manager {
458
  'js' => [],
459
  ],
460
  ],
461
- 'news-ticker' => [
462
  'title' => __( 'News Ticker', 'happy-elementor-addons' ),
463
  'icon' => 'hm hm-slider',
464
  'css' => ['news-ticker'],
@@ -468,6 +468,16 @@ class Widgets_Manager {
468
  'js' => ['jquery-keyframes'],
469
  ],
470
  ],
 
 
 
 
 
 
 
 
 
 
471
  ];
472
  }
473
 
448
  'js' => [],
449
  ],
450
  ],
451
+ 'gravityforms' => [
452
  'title' => __( 'Gravity Forms', 'happy-elementor-addons' ),
453
  'icon' => 'hm hm-form',
454
  'css' => [],
458
  'js' => [],
459
  ],
460
  ],
461
+ 'news-ticker' => [
462
  'title' => __( 'News Ticker', 'happy-elementor-addons' ),
463
  'icon' => 'hm hm-slider',
464
  'css' => ['news-ticker'],
468
  'js' => ['jquery-keyframes'],
469
  ],
470
  ],
471
+ 'fun-factor' => [
472
+ 'title' => __( 'Fun Factor', 'happy-elementor-addons' ),
473
+ 'icon' => 'hm hm-slider',
474
+ 'css' => ['fun-factor'],
475
+ 'js' => [],
476
+ 'vendor' => [
477
+ 'css' => [],
478
+ 'js' => ['elementor-waypoints', 'jquery-numerator'],
479
+ ],
480
+ ],
481
  ];
482
  }
483
 
plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
- * Version: 2.5.0
7
  * Author: weDevs
8
  * Author URI: https://happyaddons.com/
9
  * License: GPLv2
@@ -34,7 +34,7 @@ Copyright 2019 HappyMonster <http://happymonster.me>
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
- define( 'HAPPY_ADDONS_VERSION', '2.5.0' );
38
  define( 'HAPPY_ADDONS__FILE__', __FILE__ );
39
  define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
40
  define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
+ * Version: 2.6.0
7
  * Author: weDevs
8
  * Author URI: https://happyaddons.com/
9
  * License: GPLv2
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
+ define( 'HAPPY_ADDONS_VERSION', '2.6.0' );
38
  define( 'HAPPY_ADDONS__FILE__', __FILE__ );
39
  define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
40
  define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
readme.txt CHANGED
@@ -1,6 +1,6 @@
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
- Version: 2.5.0
4
  Author: weDevs
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, obiplabon
@@ -268,6 +268,16 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
268
 
269
  == Changelog ==
270
 
 
 
 
 
 
 
 
 
 
 
271
  = 2.5.0 - 24 December 2019 =
272
 
273
  - New: Added Step Flow widget title heading level control
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
+ Version: 2.6.0
4
  Author: weDevs
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, obiplabon
268
 
269
  == Changelog ==
270
 
271
+ = 2.6.0 - 15 January 2020 =
272
+
273
+ - New: Fun Factor widget
274
+ - Update: Page break styling for Gravity Forms widget
275
+ - Update: Widgets help link added in "Need Help?" button
276
+ - Fix: Image Compare widget extra height issue
277
+ - Fix: Step Flow widget title link issue
278
+ - Fix: Gravity Forms styling issue
279
+ - Fix: Removed welcome notice in admin
280
+
281
  = 2.5.0 - 24 December 2019 =
282
 
283
  - New: Added Step Flow widget title heading level control
widgets/calderaform/widget.php CHANGED
@@ -27,6 +27,10 @@ class CalderaForm extends Base {
27
  return __( 'Caldera Forms', 'happy-elementor-addons' );
28
  }
29
 
 
 
 
 
30
  /**
31
  * Get widget icon.
32
  *
27
  return __( 'Caldera Forms', 'happy-elementor-addons' );
28
  }
29
 
30
+ public function get_custom_help_url() {
31
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/caldera-forms/';
32
+ }
33
+
34
  /**
35
  * Get widget icon.
36
  *
widgets/calendly/widget.php CHANGED
@@ -26,7 +26,11 @@ class Calendly extends Base {
26
  return __( 'Calendly', 'happy-elementor-addons' );
27
  }
28
 
29
- /**
 
 
 
 
30
  * Get widget icon.
31
  *
32
  * @return string Widget icon.
26
  return __( 'Calendly', 'happy-elementor-addons' );
27
  }
28
 
29
+ public function get_custom_help_url() {
30
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/calendly/';
31
+ }
32
+
33
+ /**
34
  * Get widget icon.
35
  *
36
  * @return string Widget icon.
widgets/card/widget.php CHANGED
@@ -32,6 +32,10 @@ class Card extends Base {
32
  return __( 'Card', 'happy-elementor-addons' );
33
  }
34
 
 
 
 
 
35
  /**
36
  * Get widget icon.
37
  *
32
  return __( 'Card', 'happy-elementor-addons' );
33
  }
34
 
35
+ public function get_custom_help_url() {
36
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/card/';
37
+ }
38
+
39
  /**
40
  * Get widget icon.
41
  *
widgets/carousel/widget.php CHANGED
@@ -33,6 +33,10 @@ class Carousel extends Base {
33
  return __( 'Carousel', 'happy-elementor-addons' );
34
  }
35
 
 
 
 
 
36
  /**
37
  * Get widget icon.
38
  *
33
  return __( 'Carousel', 'happy-elementor-addons' );
34
  }
35
 
36
+ public function get_custom_help_url() {
37
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/carousel/';
38
+ }
39
+
40
  /**
41
  * Get widget icon.
42
  *
widgets/cf7/widget.php CHANGED
@@ -28,6 +28,10 @@ class CF7 extends Base {
28
  return __( 'Contact Form 7', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
28
  return __( 'Contact Form 7', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/contact-7-form/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *
widgets/dual-button/widget.php CHANGED
@@ -28,6 +28,10 @@ class Dual_Button extends Base {
28
  return __( 'Dual Button', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
28
  return __( 'Dual Button', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/dual-button/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *
widgets/flip-box/widget.php CHANGED
@@ -32,6 +32,10 @@ class Flip_Box extends Base {
32
  return __( 'Flip Box', 'happy-elementor-addons' );
33
  }
34
 
 
 
 
 
35
  /**
36
  * Get widget icon.
37
  *
32
  return __( 'Flip Box', 'happy-elementor-addons' );
33
  }
34
 
35
+ public function get_custom_help_url() {
36
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/flip-box/';
37
+ }
38
+
39
  /**
40
  * Get widget icon.
41
  *
widgets/fun-factor/widget.php ADDED
@@ -0,0 +1,818 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Fun Factor widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+
8
+ namespace Happy_Addons\Elementor\Widget;
9
+
10
+ use Elementor\Group_Control_Text_Shadow;
11
+ use Elementor\Icons_Manager;
12
+ use Elementor\Scheme_Typography;
13
+ use Elementor\Utils;
14
+ use Elementor\Controls_Manager;
15
+ use Elementor\Group_Control_Border;
16
+ use Elementor\Group_Control_Box_Shadow;
17
+ use Elementor\Group_Control_Image_Size;
18
+ use Elementor\Group_Control_Typography;
19
+
20
+ defined('ABSPATH') || die();
21
+
22
+ class Fun_Factor extends Base {
23
+
24
+ /**
25
+ * Get widget title.
26
+ *
27
+ * @return string Widget title.
28
+ * @since 1.0.0
29
+ * @access public
30
+ *
31
+ */
32
+ public function get_title() {
33
+ return __('Fun Factor', 'happy-elementor-addons');
34
+ }
35
+
36
+ /**
37
+ * Get widget icon.
38
+ *
39
+ * @return string Widget icon.
40
+ * @since 1.0.0
41
+ * @access public
42
+ *
43
+ */
44
+ public function get_icon() {
45
+ return 'hm hm-cross-game';
46
+ }
47
+
48
+ public function get_keywords() {
49
+ return ['fun', 'factor', 'animation', 'info', 'box', 'number', 'animated'];
50
+ }
51
+
52
+ protected function register_content_controls() {
53
+ $this->start_controls_section(
54
+ '_section_contents',
55
+ [
56
+ 'label' => __('Contents', 'happy-elementor-addons'),
57
+ 'tab' => Controls_Manager::TAB_CONTENT
58
+ ]
59
+ );
60
+
61
+ $this->add_control(
62
+ 'media_type',
63
+ [
64
+ 'label' => __('Media Type', 'happy-elementor-addons'),
65
+ 'type' => Controls_Manager::CHOOSE,
66
+ 'label_block' => false,
67
+ 'options' => [
68
+ 'icon' => [
69
+ 'title' => __('Icon', 'happy-elementor-addons'),
70
+ 'icon' => 'fa fa-smile-o',
71
+ ],
72
+ 'image' => [
73
+ 'title' => __('Image', 'happy-elementor-addons'),
74
+ 'icon' => 'fa fa-image',
75
+ ],
76
+ ],
77
+ 'default' => 'icon',
78
+ 'toggle' => false,
79
+ 'style_transfer' => true,
80
+ ]
81
+ );
82
+
83
+ $this->add_control(
84
+ 'image',
85
+ [
86
+ 'label' => __('Image', 'happy-elementor-addons'),
87
+ 'type' => Controls_Manager::MEDIA,
88
+ 'default' => [
89
+ 'url' => Utils::get_placeholder_image_src(),
90
+ ],
91
+ 'condition' => [
92
+ 'media_type' => 'image'
93
+ ],
94
+ 'dynamic' => [
95
+ 'active' => true,
96
+ ]
97
+ ]
98
+ );
99
+
100
+ $this->add_group_control(
101
+ Group_Control_Image_Size::get_type(),
102
+ [
103
+ 'name' => 'thumbnail',
104
+ 'default' => 'medium_large',
105
+ 'separator' => 'none',
106
+ 'exclude' => [
107
+ 'full',
108
+ 'custom',
109
+ 'large',
110
+ 'shop_catalog',
111
+ 'shop_single',
112
+ 'shop_thumbnail'
113
+ ],
114
+ 'condition' => [
115
+ 'media_type' => 'image'
116
+ ]
117
+ ]
118
+ );
119
+
120
+ $this->add_control(
121
+ 'icons',
122
+ [
123
+ 'label' => __('Icons', 'happy-elementor-addons'),
124
+ 'type' => Controls_Manager::ICONS,
125
+ 'show_label' => true,
126
+ 'default' => [
127
+ 'value' => 'far fa-grin-wink',
128
+ 'library' => 'solid',
129
+ ],
130
+ 'condition' => [
131
+ 'media_type' => 'icon',
132
+ ],
133
+
134
+ ]
135
+ );
136
+
137
+ $this->add_control(
138
+ 'image_icon_position',
139
+ [
140
+ 'label' => __('Position', 'happy-elementor-addons'),
141
+ 'type' => Controls_Manager::CHOOSE,
142
+ 'label_block' => false,
143
+ 'options' => [
144
+ 'left' => [
145
+ 'title' => __('Left', 'happy-elementor-addons'),
146
+ 'icon' => 'eicon-h-align-left',
147
+ ],
148
+ 'top' => [
149
+ 'title' => __('Top', 'happy-elementor-addons'),
150
+ 'icon' => 'eicon-v-align-top',
151
+ ],
152
+ 'right' => [
153
+ 'title' => __('Right', 'happy-elementor-addons'),
154
+ 'icon' => 'eicon-h-align-right',
155
+ ],
156
+ ],
157
+ 'toggle' => false,
158
+ 'default' => 'top',
159
+ 'prefix_class' => 'ha-ff-icon--',
160
+ 'style_transfer' => true,
161
+ ]
162
+ );
163
+
164
+ /*
165
+ * number section
166
+ */
167
+
168
+ $this->add_control(
169
+ 'fun_factor_number',
170
+ [
171
+ 'label' => __('Number', 'happy-elementor-addons'),
172
+ 'type' => Controls_Manager::TEXT,
173
+ 'default' => '507',
174
+ 'dynamic' => [
175
+ 'active' => true,
176
+ ],
177
+ 'separator' => 'before'
178
+ ]
179
+ );
180
+
181
+ $this->add_control(
182
+ 'fun_factor_title',
183
+ [
184
+ 'label' => __('Title', 'happy-elementor-addons'),
185
+ 'type' => Controls_Manager::TEXT,
186
+ 'default' => __('Happy Clients', 'happy-elementor-addons'),
187
+ ]
188
+ );
189
+
190
+ $this->add_control(
191
+ 'animate_number',
192
+ [
193
+ 'label' => __('Animate', 'happy-elementor-addons'),
194
+ 'description' => __('Only number is animatable'),
195
+ 'type' => Controls_Manager::SWITCHER,
196
+ 'label_on' => __('Yes', 'happy-elementor-addons'),
197
+ 'label_off' => __('No', 'happy-elementor-addons'),
198
+ 'return_value' => 'yes',
199
+ 'separator' => 'before',
200
+ 'default' => 'yes'
201
+ ]
202
+ );
203
+
204
+ $this->add_control(
205
+ 'animate_duration',
206
+ [
207
+ 'label' => __('Duration', 'happy-elementor-addons'),
208
+ 'type' => Controls_Manager::NUMBER,
209
+ 'min' => 100,
210
+ 'max' => 10000,
211
+ 'step' => 10,
212
+ 'default' => 500,
213
+ 'condition' => [
214
+ 'animate_number!' => ''
215
+ ],
216
+ ]
217
+ );
218
+
219
+ $this->end_controls_section();
220
+
221
+ // options section in contents tab
222
+
223
+ $this->start_controls_section(
224
+ '_section_options',
225
+ [
226
+ 'label' => __('Options', 'happy-elementor-addons'),
227
+ 'tab' => Controls_Manager::TAB_CONTENT
228
+ ]
229
+ );
230
+
231
+ $this->add_control(
232
+ 'title_tag',
233
+ [
234
+ 'label' => __('Title HTML Tag', 'happy-elementor-addons'),
235
+ 'type' => Controls_Manager::CHOOSE,
236
+ 'options' => [
237
+ 'h1' => [
238
+ 'title' => __('H1', 'happy-elementor-addons'),
239
+ 'icon' => 'eicon-editor-h1'
240
+ ],
241
+ 'h2' => [
242
+ 'title' => __('H2', 'happy-elementor-addons'),
243
+ 'icon' => 'eicon-editor-h2'
244
+ ],
245
+ 'h3' => [
246
+ 'title' => __('H3', 'happy-elementor-addons'),
247
+ 'icon' => 'eicon-editor-h3'
248
+ ],
249
+ 'h4' => [
250
+ 'title' => __('H4', 'happy-elementor-addons'),
251
+ 'icon' => 'eicon-editor-h4'
252
+ ],
253
+ 'h5' => [
254
+ 'title' => __('H5', 'happy-elementor-addons'),
255
+ 'icon' => 'eicon-editor-h5'
256
+ ],
257
+ 'h6' => [
258
+ 'title' => __('H6', 'happy-elementor-addons'),
259
+ 'icon' => 'eicon-editor-h6'
260
+ ]
261
+ ],
262
+ 'default' => 'h2',
263
+ 'toggle' => false,
264
+ ]
265
+ );
266
+
267
+ $this->add_responsive_control(
268
+ 'text_align',
269
+ [
270
+ 'label' => __('Text Alignment', 'happy-elementor-addons'),
271
+ 'type' => Controls_Manager::CHOOSE,
272
+ 'options' => [
273
+ 'left' => [
274
+ 'title' => __('Left', 'happy-elementor-addons'),
275
+ 'icon' => 'eicon-text-align-left',
276
+ ],
277
+ 'center' => [
278
+ 'title' => __('Center', 'happy-elementor-addons'),
279
+ 'icon' => 'eicon-text-align-center',
280
+ ],
281
+ 'right' => [
282
+ 'title' => __('Right', 'happy-elementor-addons'),
283
+ 'icon' => 'eicon-text-align-right',
284
+ ],
285
+ ],
286
+ 'toggle' => true,
287
+ 'selectors' => [
288
+ '{{WRAPPER}} .ha-ff-container, {{WRAPPER}} .ha-fun-factor-image-section' => 'text-align: {{VALUE}};',
289
+ ],
290
+ 'default' => 'center',
291
+ 'render_type' => 'template',
292
+ ]
293
+ );
294
+
295
+ $this->add_control(
296
+ 'divider_show_hide',
297
+ [
298
+ 'label' => __('Show Divider', 'happy-elementor-addons'),
299
+ 'type' => Controls_Manager::SWITCHER,
300
+ 'label_on' => __('Show', 'happy-elementor-addons'),
301
+ 'label_off' => __('Hide', 'happy-elementor-addons'),
302
+ 'return_value' => 'yes',
303
+ 'default' => 'yes',
304
+ ]
305
+ );
306
+
307
+ $this->end_controls_section();
308
+ }
309
+
310
+ protected function register_style_controls() {
311
+ $this->start_controls_section(
312
+ '_section_style_icon_image',
313
+ [
314
+ 'label' => __('Icon / Image', 'happy-elementor-addons'),
315
+ 'tab' => Controls_Manager::TAB_STYLE,
316
+ ]
317
+ );
318
+
319
+ $this->add_responsive_control(
320
+ 'image_width',
321
+ [
322
+ 'label' => __('Width', 'happy-elementor-addons'),
323
+ 'type' => Controls_Manager::SLIDER,
324
+ 'size_units' => ['px', '%'],
325
+ 'range' => [
326
+ 'px' => [
327
+ 'min' => 150,
328
+ 'max' => 1024,
329
+ ],
330
+ '%' => [
331
+ 'min' => 30,
332
+ 'max' => 100,
333
+ ],
334
+ ],
335
+ 'default' => [
336
+ 'unit' => 'px',
337
+ ],
338
+ 'selectors' => [
339
+ '{{WRAPPER}} .ha-fun-factor-image-section img' => 'width: {{SIZE}}{{UNIT}};',
340
+ '{{WRAPPER}} .ha-fun-factor-image-section, {{WRAPPER}} .ha-fun-factor-icon-section' => 'flex: 0 0 {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}};',
341
+ ],
342
+ 'condition' => [
343
+ 'media_type' => 'image',
344
+ ]
345
+ ]
346
+ );
347
+
348
+ $this->add_responsive_control(
349
+ 'image_height',
350
+ [
351
+ 'label' => __('Height', 'happy-elementor-addons'),
352
+ 'type' => Controls_Manager::SLIDER,
353
+ 'size_units' => ['px', '%'],
354
+ 'range' => [
355
+ 'px' => [
356
+ 'min' => 150,
357
+ 'max' => 1024,
358
+ ],
359
+ '%' => [
360
+ 'min' => 30,
361
+ 'max' => 100,
362
+ ],
363
+ ],
364
+ 'default' => [
365
+ 'unit' => 'px',
366
+ ],
367
+ 'selectors' => [
368
+ '{{WRAPPER}} .ha-fun-factor-image-section img' => 'height: {{SIZE}}{{UNIT}};',
369
+ ],
370
+ 'condition' => [
371
+ 'media_type' => 'image',
372
+ ]
373
+ ]
374
+ );
375
+
376
+ $this->add_responsive_control(
377
+ 'icon_size',
378
+ [
379
+ 'label' => __('Size (em)', 'happy-elementor-addons'),
380
+ 'type' => Controls_Manager::SLIDER,
381
+ 'size_units' => ['em'],
382
+ 'range' => [
383
+ 'em' => [
384
+ 'min' => 1,
385
+ 'max' => 10,
386
+ 'step' => 1,
387
+ ],
388
+ ],
389
+ 'devices' => ['desktop', 'tablet', 'mobile'],
390
+ 'desktop_default' => [
391
+ 'unit' => 'em',
392
+ 'size' => 3,
393
+ ],
394
+ 'tablet_default' => [
395
+ 'unit' => 'em',
396
+ 'size' => 2,
397
+ ],
398
+ 'mobile_default' => [
399
+ 'unit' => 'em',
400
+ 'size' => 2,
401
+ ],
402
+ 'selectors' => [
403
+ '{{WRAPPER}} .ha-fun-factor-icon' => 'font-size: {{SIZE}}{{UNIT}};',
404
+ ],
405
+ 'condition' => [
406
+ 'media_type' => 'icon',
407
+ ],
408
+ 'render_type' => 'template',
409
+ ]
410
+ );
411
+
412
+ $this->add_control(
413
+ 'icon_color',
414
+ [
415
+ 'label' => __('Icon Color', 'happy-elementor-addons'),
416
+ 'type' => Controls_Manager::COLOR,
417
+ 'selectors' => [
418
+ '{{WRAPPER}} .ha-fun-factor-icon' => 'color: {{VALUE}};',
419
+ ],
420
+ 'condition' => [
421
+ 'media_type' => 'icon',
422
+ ],
423
+ ]
424
+ );
425
+
426
+ $this->add_responsive_control(
427
+ 'media_padding',
428
+ [
429
+ 'label' => __('Padding', 'happy-elementor-addons'),
430
+ 'type' => Controls_Manager::SLIDER,
431
+ 'size_units' => ['px'],
432
+ 'selectors' => [
433
+ '{{WRAPPER}} .ha-fun-factor-image-section img, {{WRAPPER}} .ha-fun-factor-icon-section' => 'padding: {{SIZE}}{{UNIT}};',
434
+ ],
435
+ ]
436
+ );
437
+
438
+ $this->add_group_control(
439
+ Group_Control_Border::get_type(),
440
+ [
441
+ 'name' => 'media_border',
442
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-image-section img, {{WRAPPER}} .ha-fun-factor-icon-section',
443
+ 'separator' => 'before'
444
+ ]
445
+ );
446
+
447
+ $this->add_responsive_control(
448
+ 'media_border_radius',
449
+ [
450
+ 'label' => __('Border Radius', 'happy-elementor-addons'),
451
+ 'type' => Controls_Manager::DIMENSIONS,
452
+ 'size_units' => ['px', '%'],
453
+ 'selectors' => [
454
+ '{{WRAPPER}} .ha-fun-factor-image-section img, {{WRAPPER}} .ha-fun-factor-icon-section' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
455
+ ],
456
+ ]
457
+ );
458
+
459
+ $this->add_group_control(
460
+ Group_Control_Box_Shadow::get_type(),
461
+ [
462
+ 'name' => 'media_box_shadow',
463
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-image-section img, {{WRAPPER}} .ha-fun-factor-icon-section',
464
+ ]
465
+ );
466
+
467
+ $this->add_responsive_control(
468
+ 'icon_image_bottom_spacing',
469
+ [
470
+ 'label' => __('Bottom Spacing', 'happy-elementor-addons'),
471
+ 'type' => Controls_Manager::SLIDER,
472
+ 'selectors' => [
473
+ '{{WRAPPER}} .ha-fun-factor-icon-section, {{WRAPPER}} .ha-fun-factor-image-section' => 'margin-bottom: {{SIZE}}{{UNIT}};',
474
+ ],
475
+ ]
476
+ );
477
+
478
+ $this->add_control(
479
+ 'icon_bg_color',
480
+ [
481
+ 'label' => __('Background Color', 'happy-elementor-addons'),
482
+ 'type' => Controls_Manager::COLOR,
483
+ 'selectors' => [
484
+ '{{WRAPPER}} .ha-fun-factor-icon-section, {{WRAPPER}} .ha-fun-factor-image-section' => 'background-color: {{VALUE}};',
485
+ ],
486
+ 'condition' => [
487
+ 'media_type' => 'icon'
488
+ ]
489
+ ]
490
+ );
491
+
492
+ $this->add_control(
493
+ 'offset_toggle',
494
+ [
495
+ 'label' => __('Offset', 'happy-elementor-addons'),
496
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
497
+ 'label_off' => __('No', 'happy-elementor-addons'),
498
+ 'label_on' => __('Yes', 'happy-elementor-addons'),
499
+ 'return_value' => 'yes',
500
+ ]
501
+ );
502
+
503
+ $this->start_popover();
504
+
505
+ $this->add_responsive_control(
506
+ 'media_offset_x',
507
+ [
508
+ 'label' => __('Offset Left', 'happy-elementor-addons'),
509
+ 'type' => Controls_Manager::SLIDER,
510
+ 'size_units' => ['px'],
511
+ 'condition' => [
512
+ 'offset_toggle' => 'yes'
513
+ ],
514
+ 'range' => [
515
+ 'px' => [
516
+ 'min' => -1000,
517
+ 'max' => 1000,
518
+ ],
519
+ ],
520
+ ]
521
+ );
522
+
523
+ $this->add_responsive_control(
524
+ 'media_offset_y',
525
+ [
526
+ 'label' => __('Offset Top', 'happy-elementor-addons'),
527
+ 'type' => Controls_Manager::SLIDER,
528
+ 'size_units' => ['px'],
529
+ 'condition' => [
530
+ 'offset_toggle' => 'yes'
531
+ ],
532
+ 'range' => [
533
+ 'px' => [
534
+ 'min' => -1000,
535
+ 'max' => 1000,
536
+ ],
537
+ ],
538
+
539
+ 'selectors' => [
540
+ // Left image position styles
541
+ '(desktop){{WRAPPER}}.ha-ff-icon--left .ha-fun-factor-content' => 'margin-left: {{media_offset_x.SIZE || 0}}{{UNIT}}; max-width: calc((100% - {{image_width.SIZE || 50}}{{image_width.UNIT}}) + (-1 * {{media_offset_x.SIZE || 0}}{{UNIT}}));',
542
+ '(tablet){{WRAPPER}}.ha-ff-icon--left .ha-fun-factor-content' => 'margin-left: {{media_offset_x_tablet.SIZE || 0}}{{UNIT}}; max-width: calc((100% - {{image_width_tablet.SIZE || 50}}{{image_width_tablet.UNIT}}) + (-1 * {{media_offset_x_tablet.SIZE || 0}}{{UNIT}}));',
543
+ '(mobile){{WRAPPER}}.ha-ff-icon--left .ha-fun-factor-content' => 'margin-left: {{media_offset_x_mobile.SIZE || 0}}{{UNIT}}; max-width: calc((100% - {{image_width_mobile.SIZE || 50}}{{image_width_mobile.UNIT}}) + (-1 * {{media_offset_x_mobile.SIZE || 0}}{{UNIT}}));',
544
+ // Image right position styles
545
+ '(desktop){{WRAPPER}}.ha-ff-icon--right .ha-fun-factor-content' => 'margin-right: calc(-1 * {{media_offset_x.SIZE || 0}}{{UNIT}}); max-width: calc((100% - {{image_width.SIZE || 50}}{{image_width.UNIT}}) + {{media_offset_x.SIZE || 0}}{{UNIT}});',
546
+ '(tablet){{WRAPPER}}.ha-ff-icon--right .ha-fun-factor-content' => 'margin-right: calc(-1 * {{media_offset_x_tablet.SIZE || 0}}{{UNIT}}); max-width: calc((100% - {{image_width_tablet.SIZE || 50}}{{image_width_tablet.UNIT}}) + {{media_offset_x_tablet.SIZE || 0}}{{UNIT}});',
547
+ '(mobile){{WRAPPER}}.ha-ff-icon--right .ha-fun-factor-content' => 'margin-right: calc(-1 * {{media_offset_x_mobile.SIZE || 0}}{{UNIT}}); max-width: calc((100% - {{image_width_mobile.SIZE || 50}}{{image_width_mobile.UNIT}}) + {{media_offset_x_mobile.SIZE || 0}}{{UNIT}});',
548
+ // Image translate styles
549
+ '(desktop){{WRAPPER}} .ha-fun-factor-icon-section, {{WRAPPER}} .ha-fun-factor-image-section' => '-ms-transform: translate({{media_offset_x.SIZE || 0}}{{UNIT}}, {{media_offset_y.SIZE || 0}}{{UNIT}}); -webkit-transform: translate({{media_offset_x.SIZE || 0}}{{UNIT}}, {{media_offset_y.SIZE || 0}}{{UNIT}}); transform: translate({{media_offset_x.SIZE || 0}}{{UNIT}}, {{media_offset_y.SIZE || 0}}{{UNIT}});',
550
+ '(tablet){{WRAPPER}} .ha-fun-factor-icon-section, {WRAPPER}} .ha-fun-factor-image-section' => '-ms-transform: translate({{media_offset_x_tablet.SIZE || 0}}{{UNIT}}, {{media_offset_y_tablet.SIZE || 0}}{{UNIT}}); -webkit-transform: translate({{media_offset_x_tablet.SIZE || 0}}{{UNIT}}, {{media_offset_y_tablet.SIZE || 0}}{{UNIT}}); transform: translate({{media_offset_x_tablet.SIZE || 0}}{{UNIT}}, {{media_offset_y_tablet.SIZE || 0}}{{UNIT}});',
551
+ '(mobile){{WRAPPER}} .ha-fun-factor-icon-section, {{WRAPPER}} .ha-fun-factor-image-section' => '-ms-transform: translate({{media_offset_x_mobile.SIZE || 0}}{{UNIT}}, {{media_offset_y_mobile.SIZE || 0}}{{UNIT}}); -webkit-transform: translate({{media_offset_x_mobile.SIZE || 0}}{{UNIT}}, {{media_offset_y_mobile.SIZE || 0}}{{UNIT}}); transform: translate({{media_offset_x_mobile.SIZE || 0}}{{UNIT}}, {{media_offset_y_mobile.SIZE || 0}}{{UNIT}});',
552
+ // Fun Factor body styles
553
+ '{{WRAPPER}}.ha-ff-icon--top .ha-fun-factor-content' => 'margin-top: {{SIZE}}{{UNIT}};',
554
+ ],
555
+ ]
556
+ );
557
+ $this->end_popover();
558
+
559
+ $this->end_controls_section();
560
+
561
+ /*
562
+ * Number section styling
563
+ */
564
+
565
+ $this->start_controls_section(
566
+ '_section_style_number_title',
567
+ [
568
+ 'label' => __('Number & Title', 'happy-elementor-addons'),
569
+ 'tab' => Controls_Manager::TAB_STYLE
570
+ ]
571
+ );
572
+
573
+ $this->add_responsive_control(
574
+ 'content_padding',
575
+ [
576
+ 'label' => __('Padding', 'happy-elementor-addons'),
577
+ 'type' => Controls_Manager::DIMENSIONS,
578
+ 'selectors' => [
579
+ '{{WRAPPER}} .ha-fun-factor-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
580
+ ]
581
+ ]
582
+ );
583
+
584
+ $this->add_control(
585
+ 'fun_factor_number_heading',
586
+ [
587
+ 'label' => __('Number', 'happy-elementor-addons'),
588
+ 'type' => Controls_Manager::HEADING
589
+ ]
590
+ );
591
+
592
+ $this->add_control(
593
+ 'fun_factor_number_bottom_spacing',
594
+ [
595
+ 'label' => __('Bottom Spacing', 'happy-elementor-addons'),
596
+ 'type' => Controls_Manager::SLIDER,
597
+ 'size_units' => ['px', '%', 'em'],
598
+ 'selectors' => [
599
+ '{{WRAPPER}} .ha-fun-factor-content-number' => 'margin-bottom: {{SIZE}}{{UNIT}};'
600
+ ]
601
+ ]
602
+ );
603
+
604
+ $this->add_control(
605
+ 'fun_factor_number_color',
606
+ [
607
+ 'label' => __('Color', 'happy-elementor-addons'),
608
+ 'type' => Controls_Manager::COLOR,
609
+ 'selectors' => [
610
+ '{{WRAPPER}} .ha-fun-factor-content-number' => 'color: {{VALUE}} !important;',
611
+ ],
612
+ ]
613
+ );
614
+
615
+ $this->add_group_control(
616
+ Group_Control_Typography::get_type(),
617
+ [
618
+ 'name' => 'number_typography',
619
+ 'label' => __('Typography', 'happy-elementor-addons'),
620
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
621
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-content-number',
622
+ ]
623
+ );
624
+
625
+ $this->add_group_control(
626
+ Group_Control_Text_Shadow::get_type(),
627
+ [
628
+ 'name' => 'fun_factor_number_shadow',
629
+ 'label' => __('Text Shadow', 'happy-elementor-addons'),
630
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-content-number',
631
+ ]
632
+ );
633
+
634
+ /*
635
+ * Title section
636
+ */
637
+
638
+ $this->add_control(
639
+ 'content_title_heading_style',
640
+ [
641
+ 'label' => __('Title', 'happy-elementor-addons'),
642
+ 'type' => Controls_Manager::HEADING,
643
+ 'separator' => 'before'
644
+ ]
645
+ );
646
+
647
+ $this->add_control(
648
+ 'fun_factor_content_bottom_spacing',
649
+ [
650
+ 'label' => __('Bottom Spacing', 'happy-elementor-addons'),
651
+ 'type' => Controls_Manager::SLIDER,
652
+ 'size_units' => ['px'],
653
+ 'selectors' => [
654
+ '{{WRAPPER}} .ha-fun-factor-content-text' => 'margin-bottom: {{SIZE}}{{UNIT}};'
655
+ ]
656
+ ]
657
+ );
658
+
659
+ $this->add_control(
660
+ 'fun_factor_content_color',
661
+ [
662
+ 'label' => __('Color', 'happy-elementor-addons'),
663
+ 'type' => Controls_Manager::COLOR,
664
+ 'selectors' => [
665
+ '{{WRAPPER}} .ha-fun-factor-content-text' => 'color: {{VALUE}};',
666
+ ],
667
+ ]
668
+ );
669
+
670
+ $this->add_group_control(
671
+ Group_Control_Typography::get_type(),
672
+ [
673
+ 'name' => 'content_typography',
674
+ 'label' => __('Typography', 'happy-elementor-addons'),
675
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
676
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-content-text',
677
+ ]
678
+ );
679
+
680
+ $this->add_group_control(
681
+ Group_Control_Text_Shadow::get_type(),
682
+ [
683
+ 'name' => 'fun_factor_content_shadow',
684
+ 'label' => __('Text Shadow', 'happy-elementor-addons'),
685
+ 'selector' => '{{WRAPPER}} .ha-fun-factor-content-text',
686
+ ]
687
+ );
688
+
689
+ $this->end_controls_section();
690
+
691
+ /*
692
+ * Divider style section
693
+ */
694
+ $this->start_controls_section(
695
+ '_section_divider',
696
+ [
697
+ 'label' => __('Divider', 'happy-elementor-addons'),
698
+ 'tab' => Controls_Manager::TAB_STYLE,
699
+ 'condition' => [
700
+ 'divider_show_hide' => 'yes'
701
+ ]
702
+ ]
703
+ );
704
+
705
+ $this->add_responsive_control(
706
+ 'divider_width',
707
+ [
708
+ 'label' => __('Width', 'happy-elementor-addons'),
709
+ 'type' => Controls_Manager::SLIDER,
710
+ 'size_units' => ['%'],
711
+ 'range' => [
712
+ '%' => [
713
+ 'min' => 10,
714
+ 'max' => 100
715
+ ],
716
+ ],
717
+ 'default' => [
718
+ 'unit' => '%'
719
+ ],
720
+ 'selectors' => [
721
+ '{{WRAPPER}} .ha-fun-factor-divider' => 'width: {{SIZE}}{{UNIT}} !important;',
722
+ ],
723
+ ]
724
+ );
725
+
726
+ $this->add_responsive_control(
727
+ 'divider_height',
728
+ [
729
+ 'label' => __('Height', 'happy-elementor-addons'),
730
+ 'type' => Controls_Manager::SLIDER,
731
+ 'size_units' => ['px', '%', 'em'],
732
+ 'default' => [
733
+ 'px' => 1
734
+ ],
735
+ 'selectors' => [
736
+ '{{WRAPPER}} .ha-fun-factor-divider' => 'height: {{SIZE}}{{UNIT}} !important;',
737
+ ],
738
+ ]
739
+ );
740
+
741
+ $this->add_responsive_control(
742
+ 'divider_border_radius',
743
+ [
744
+ 'label' => __('Border Radius', 'happy-elementor-addons'),
745
+ 'type' => Controls_Manager::DIMENSIONS,
746
+ 'selectors' => [
747
+ '{{WRAPPER}} .ha-fun-factor-divider' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
748
+ ],
749
+ ]
750
+ );
751
+
752
+ $this->add_control(
753
+ 'divider_color',
754
+ [
755
+ 'label' => __('Color', 'happy-elementor-addons'),
756
+ 'type' => Controls_Manager::COLOR,
757
+ 'selectors' => [
758
+ '{{WRAPPER}} .ha-fun-factor-divider' => 'background-color: {{VALUE}} !important;',
759
+ ],
760
+ ]
761
+ );
762
+
763
+ $this->add_control(
764
+ 'divider_bottom_spacing',
765
+ [
766
+ 'label' => __('Bottom Spacing', 'happy-elementor-addons'),
767
+ 'type' => Controls_Manager::SLIDER,
768
+ 'size_units' => ['px'],
769
+ 'selectors' => [
770
+ '{{WRAPPER}} .ha-fun-factor-divider' => 'margin-bottom: {{SIZE}}{{UNIT}};',
771
+ ],
772
+ ]
773
+ );
774
+
775
+ $this->end_controls_section();
776
+ }
777
+
778
+ protected function render() {
779
+ $settings = $this->get_settings_for_display();
780
+
781
+ $this->add_render_attribute('fun_factor_number', 'class', 'ha-fun-factor-content-number');
782
+ $number = $settings['fun_factor_number'];
783
+ $fun_factor_title = $settings['fun_factor_title'];
784
+
785
+ if ($settings['animate_number']) {
786
+ $data = [
787
+ 'toValue' => intval($settings['fun_factor_number']),
788
+ 'duration' => intval($settings['animate_duration']),
789
+ ];
790
+ $this->add_render_attribute('fun_factor_number', 'data-animation', wp_json_encode($data));
791
+ $number = 0;
792
+ }
793
+ ?>
794
+
795
+ <div class="ha-ff-container">
796
+ <?php if ( ! empty( $settings['icons']['value'] ) ) : ?>
797
+ <div class="ha-fun-factor-icon-section">
798
+ <?php Icons_Manager::render_icon( $settings['icons'], ['aria-hidden' => 'true', 'class' => 'ha-fun-factor-icon']); ?>
799
+ </div>
800
+ <?php elseif ( $settings['image']['url'] || $settings['image']['id']) : ?>
801
+ <div class="ha-fun-factor-image-section">
802
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
803
+ </div>
804
+ <?php endif; ?>
805
+
806
+ <div class="ha-fun-factor-content">
807
+ <p <?php $this->print_render_attribute_string( 'fun_factor_number' ); ?> > <?php echo esc_html($number); ?></p>
808
+ <?php if ('yes' === $settings['divider_show_hide']) : ?>
809
+ <span class="ha-fun-factor-divider ha-fun-factor-divider-align-<?php echo $settings['text_align']; ?>"></span>
810
+ <?php endif; ?>
811
+ <<?php echo tag_escape( $settings['title_tag'] ); ?> class="ha-fun-factor-content-text"><?php echo esc_html( $fun_factor_title ); ?>
812
+ </<?php echo tag_escape( $settings['title_tag'] ); ?>>
813
+ </div>
814
+ </div>
815
+
816
+ <?php
817
+ }
818
+ }
widgets/gradient-heading/widget.php CHANGED
@@ -28,7 +28,11 @@ class Gradient_Heading extends Base {
28
  return __( 'Gradient Heading', 'happy-elementor-addons' );
29
  }
30
 
31
- /**
 
 
 
 
32
  * Get widget icon.
33
  *
34
  * @since 1.0.0
28
  return __( 'Gradient Heading', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/gradient-heading/';
33
+ }
34
+
35
+ /**
36
  * Get widget icon.
37
  *
38
  * @since 1.0.0
widgets/gravityforms/widget.php CHANGED
@@ -28,6 +28,10 @@ class GravityForms extends Base {
28
  return __( 'Gravity Forms', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
@@ -153,7 +157,7 @@ class GravityForms extends Base {
153
  'type' => Controls_Manager::DIMENSIONS,
154
  'size_units' => [ 'px', '%' ],
155
  'selectors' => [
156
- '{{WRAPPER}} .gform_body .gfield .ginput_container:not(.ginput_container_fileupload) > input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
157
  '{{WRAPPER}} .gform_body .gfield .ginput_container.ginput_complex input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
158
  '{{WRAPPER}} .gform_body .gfield textarea' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
159
  ],
@@ -336,11 +340,12 @@ class GravityForms extends Base {
336
  $this->add_responsive_control(
337
  'label_padding',
338
  [
339
- 'label' => __( 'Padding', 'happy-elementor-addons' ),
340
  'type' => Controls_Manager::DIMENSIONS,
341
- 'size_units' => [ 'px', 'em', '%' ],
342
  'selectors' => [
343
  '{{WRAPPER}} .gform_body .gfield .gfield_label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
 
344
  ],
345
  ]
346
  );
@@ -353,7 +358,7 @@ class GravityForms extends Base {
353
  'size_units' => [ 'px', '%' ],
354
  'separator' => 'after',
355
  'selectors' => [
356
- '{{WRAPPER}} .gform_body .gfield .ginput_complex label' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
357
  ],
358
  ]
359
  );
@@ -363,7 +368,7 @@ class GravityForms extends Base {
363
  [
364
  'name' => 'label_typography',
365
  'label' => __( 'Label Typography', 'happy-elementor-addons' ),
366
- 'selector' => '{{WRAPPER}} .gform_body .gfield .gfield_label',
367
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
368
  ]
369
  );
@@ -373,7 +378,7 @@ class GravityForms extends Base {
373
  [
374
  'name' => 'sub_label_typography',
375
  'label' => __( 'Sub Label Typography', 'happy-elementor-addons' ),
376
- 'selector' => '{{WRAPPER}} .gform_body .gfield .ginput_complex label',
377
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
378
  ]
379
  );
@@ -386,7 +391,18 @@ class GravityForms extends Base {
386
  'selectors' => [
387
  '{{WRAPPER}} .gform_body .gfield .gfield_label' => 'color: {{VALUE}}',
388
  '{{WRAPPER}} .gform_body .gfield .ginput_complex label' => 'color: {{VALUE}}',
389
- '{{WRAPPER}} .gfield .gfield_list thead th' => 'color: {{VALUE}}',
 
 
 
 
 
 
 
 
 
 
 
390
  ],
391
  ]
392
  );
@@ -724,6 +740,19 @@ class GravityForms extends Base {
724
  ]
725
  );
726
 
 
 
 
 
 
 
 
 
 
 
 
 
 
727
  $this->add_group_control(
728
  Group_Control_Box_Shadow::get_type(),
729
  [
@@ -754,6 +783,16 @@ class GravityForms extends Base {
754
  ]
755
  );
756
 
 
 
 
 
 
 
 
 
 
 
757
  $this->start_controls_tabs( 'page_break_tabs_button_style' );
758
 
759
  $this->start_controls_tab(
28
  return __( 'Gravity Forms', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/gravity-forms/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *
157
  'type' => Controls_Manager::DIMENSIONS,
158
  'size_units' => [ 'px', '%' ],
159
  'selectors' => [
160
+ '{{WRAPPER}} .gform_body .gfield .ginput_container:not(.ginput_container_fileupload) > input:not(.ginput_quantity)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
161
  '{{WRAPPER}} .gform_body .gfield .ginput_container.ginput_complex input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
162
  '{{WRAPPER}} .gform_body .gfield textarea' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
163
  ],
340
  $this->add_responsive_control(
341
  'label_padding',
342
  [
343
+ 'label' => __( 'Label Padding', 'happy-elementor-addons' ),
344
  'type' => Controls_Manager::DIMENSIONS,
345
+ 'size_units' => [ 'px', '%' ],
346
  'selectors' => [
347
  '{{WRAPPER}} .gform_body .gfield .gfield_label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
348
+ '{{WRAPPER}} table.gfield_list thead th' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
349
  ],
350
  ]
351
  );
358
  'size_units' => [ 'px', '%' ],
359
  'separator' => 'after',
360
  'selectors' => [
361
+ '{{WRAPPER}} .gform_body .gfield .gfield_description' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
362
  ],
363
  ]
364
  );
368
  [
369
  'name' => 'label_typography',
370
  'label' => __( 'Label Typography', 'happy-elementor-addons' ),
371
+ 'selector' => '{{WRAPPER}} .gform_body .gfield .gfield_label, {{WRAPPER}} table.gfield_list thead th',
372
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
373
  ]
374
  );
378
  [
379
  'name' => 'sub_label_typography',
380
  'label' => __( 'Sub Label Typography', 'happy-elementor-addons' ),
381
+ 'selector' => '{{WRAPPER}} .gform_body .gfield .gfield_description',
382
  'scheme' => Scheme_Typography::TYPOGRAPHY_3,
383
  ]
384
  );
391
  'selectors' => [
392
  '{{WRAPPER}} .gform_body .gfield .gfield_label' => 'color: {{VALUE}}',
393
  '{{WRAPPER}} .gform_body .gfield .ginput_complex label' => 'color: {{VALUE}}',
394
+ '{{WRAPPER}} table.gfield_list thead th' => 'color: {{VALUE}}',
395
+ ],
396
+ ]
397
+ );
398
+
399
+ $this->add_control(
400
+ 'sub_label_color',
401
+ [
402
+ 'label' => __( 'Sub Label Text Color', 'happy-elementor-addons' ),
403
+ 'type' => Controls_Manager::COLOR,
404
+ 'selectors' => [
405
+ '{{WRAPPER}} .gform_body .gfield .gfield_description' => 'color: {{VALUE}}',
406
  ],
407
  ]
408
  );
740
  ]
741
  );
742
 
743
+ $this->add_control(
744
+ 'page_break_button_paddding',
745
+ [
746
+ 'label' => __( 'Button Padding', 'happy-elementor-addons' ),
747
+ 'type' => Controls_Manager::DIMENSIONS,
748
+ 'size_units' => [ 'px', '%' ],
749
+ 'selectors' => [
750
+ '{{WRAPPER}} .gform_next_button.button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
751
+ '{{WRAPPER}} .gform_previous_button.button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
752
+ ],
753
+ ]
754
+ );
755
+
756
  $this->add_group_control(
757
  Group_Control_Box_Shadow::get_type(),
758
  [
783
  ]
784
  );
785
 
786
+ $this->add_group_control(
787
+ Group_Control_Typography::get_type(),
788
+ [
789
+ 'name' => 'page_break_button_typography',
790
+ 'label' => __( 'Button Typography', 'happy-elementor-addons' ),
791
+ 'selector' => '{{WRAPPER}} .gform_next_button.button, {{WRAPPER}} .gform_previous_button.button',
792
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4
793
+ ]
794
+ );
795
+
796
  $this->start_controls_tabs( 'page_break_tabs_button_style' );
797
 
798
  $this->start_controls_tab(
widgets/icon-box/widget.php CHANGED
@@ -30,6 +30,10 @@ class Icon_Box extends Base {
30
  return __( 'Icon Box', 'happy-elementor-addons' );
31
  }
32
 
 
 
 
 
33
  /**
34
  * Get widget icon.
35
  *
30
  return __( 'Icon Box', 'happy-elementor-addons' );
31
  }
32
 
33
+ public function get_custom_help_url() {
34
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/icon-box/';
35
+ }
36
+
37
  /**
38
  * Get widget icon.
39
  *
widgets/image-compare/widget.php CHANGED
@@ -31,6 +31,10 @@ class Image_Compare extends Base {
31
  return __( 'Image Compare', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Image Compare', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/image-compare/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/image-grid/widget.php CHANGED
@@ -31,6 +31,10 @@ class Image_Grid extends Base {
31
  return __( 'Image Grid', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Image Grid', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/image-grid/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/infobox/widget.php CHANGED
@@ -31,6 +31,10 @@ class InfoBox extends Base {
31
  return __( 'Info Box', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Info Box', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/info-box/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/justified-gallery/widget.php CHANGED
@@ -31,6 +31,10 @@ class Justified_Gallery extends Base {
31
  return __( 'Justified Grid', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Justified Grid', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/justified-grid/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/logo-grid/widget.php CHANGED
@@ -29,6 +29,10 @@ class Logo_Grid extends Base {
29
  return __('Logo Grid', 'happy-elementor-addons');
30
  }
31
 
 
 
 
 
32
  /**
33
  * Get widget icon.
34
  *
29
  return __('Logo Grid', 'happy-elementor-addons');
30
  }
31
 
32
+ public function get_custom_help_url() {
33
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/logo-grid/';
34
+ }
35
+
36
  /**
37
  * Get widget icon.
38
  *
widgets/member/widget.php CHANGED
@@ -33,6 +33,10 @@ class Member extends Base {
33
  return __( 'Team Member', 'happy-elementor-addons' );
34
  }
35
 
 
 
 
 
36
  /**
37
  * Get widget icon.
38
  *
33
  return __( 'Team Member', 'happy-elementor-addons' );
34
  }
35
 
36
+ public function get_custom_help_url() {
37
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/team-member/';
38
+ }
39
+
40
  /**
41
  * Get widget icon.
42
  *
widgets/news-ticker/widget.php CHANGED
@@ -31,6 +31,10 @@ class News_Ticker extends Base {
31
  return __( 'News Ticker', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'News Ticker', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/news-ticker/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/ninjaform/widget.php CHANGED
@@ -28,6 +28,10 @@ class NinjaForm extends Base {
28
  return __( 'Ninja Forms', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
28
  return __( 'Ninja Forms', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/ninja-forms/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *
widgets/number/widget.php CHANGED
@@ -34,6 +34,10 @@ class Number extends Base {
34
  return __( 'Number', 'happy-elementor-addons' );
35
  }
36
 
 
 
 
 
37
  /**
38
  * Get widget icon.
39
  *
34
  return __( 'Number', 'happy-elementor-addons' );
35
  }
36
 
37
+ public function get_custom_help_url() {
38
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/number/';
39
+ }
40
+
41
  /**
42
  * Get widget icon.
43
  *
widgets/pricing-table/widget.php CHANGED
@@ -30,6 +30,10 @@ class Pricing_Table extends Base {
30
  return __( 'Pricing Table', 'happy-elementor-addons' );
31
  }
32
 
 
 
 
 
33
  /**
34
  * Get widget icon.
35
  *
30
  return __( 'Pricing Table', 'happy-elementor-addons' );
31
  }
32
 
33
+ public function get_custom_help_url() {
34
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/pricing-table/';
35
+ }
36
+
37
  /**
38
  * Get widget icon.
39
  *
widgets/review/widget.php CHANGED
@@ -32,7 +32,11 @@ class Review extends Base {
32
  return __( 'Review', 'happy-elementor-addons' );
33
  }
34
 
35
- /**
 
 
 
 
36
  * Get widget icon.
37
  *
38
  * @since 1.0.0
32
  return __( 'Review', 'happy-elementor-addons' );
33
  }
34
 
35
+ public function get_custom_help_url() {
36
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/review/';
37
+ }
38
+
39
+ /**
40
  * Get widget icon.
41
  *
42
  * @since 1.0.0
widgets/skills/widget.php CHANGED
@@ -29,6 +29,10 @@ class Skills extends Base {
29
  return __( 'Skill Bars', 'happy-elementor-addons' );
30
  }
31
 
 
 
 
 
32
  /**
33
  * Get widget icon.
34
  *
29
  return __( 'Skill Bars', 'happy-elementor-addons' );
30
  }
31
 
32
+ public function get_custom_help_url() {
33
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/skill-bars/';
34
+ }
35
+
36
  /**
37
  * Get widget icon.
38
  *
widgets/slider/widget.php CHANGED
@@ -31,6 +31,10 @@ class Slider extends Base {
31
  return __( 'Slider', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Slider', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/slider/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/step-flow/widget.php CHANGED
@@ -28,6 +28,10 @@ class Step_Flow extends Base {
28
  return __( 'Step Flow', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
@@ -682,7 +686,7 @@ class Step_Flow extends Base {
682
  if ( ! empty( $settings['link']['url'] ) ) {
683
  $title = sprintf(
684
  '<a %1$s>%2$s</a>',
685
- $this->print_render_attribute_string( 'link' ),
686
  ha_kses_basic( $settings['title'] )
687
  );
688
  } else {
28
  return __( 'Step Flow', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/step-flow/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *
686
  if ( ! empty( $settings['link']['url'] ) ) {
687
  $title = sprintf(
688
  '<a %1$s>%2$s</a>',
689
+ $this->get_render_attribute_string( 'link' ),
690
  ha_kses_basic( $settings['title'] )
691
  );
692
  } else {
widgets/testimonial/widget.php CHANGED
@@ -31,6 +31,10 @@ class Testimonial extends Base {
31
  return __( 'Testimonial', 'happy-elementor-addons' );
32
  }
33
 
 
 
 
 
34
  /**
35
  * Get widget icon.
36
  *
31
  return __( 'Testimonial', 'happy-elementor-addons' );
32
  }
33
 
34
+ public function get_custom_help_url() {
35
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/testimonial/';
36
+ }
37
+
38
  /**
39
  * Get widget icon.
40
  *
widgets/weform/widget.php CHANGED
@@ -29,7 +29,11 @@ class WeForm extends Base {
29
  return __( 'weForms', 'happy-elementor-addons' );
30
  }
31
 
32
- /**
 
 
 
 
33
  * Get widget icon.
34
  *
35
  * @since 1.0.0
29
  return __( 'weForms', 'happy-elementor-addons' );
30
  }
31
 
32
+ public function get_custom_help_url() {
33
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/weforms/';
34
+ }
35
+
36
+ /**
37
  * Get widget icon.
38
  *
39
  * @since 1.0.0
widgets/wpform/widget.php CHANGED
@@ -28,6 +28,10 @@ class WPForm extends Base {
28
  return __( 'WPForms', 'happy-elementor-addons' );
29
  }
30
 
 
 
 
 
31
  /**
32
  * Get widget icon.
33
  *
28
  return __( 'WPForms', 'happy-elementor-addons' );
29
  }
30
 
31
+ public function get_custom_help_url() {
32
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/wp-forms/';
33
+ }
34
+
35
  /**
36
  * Get widget icon.
37
  *