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

Version Description

  • 18 May 2020 =

  • New: 360 Rotation widget

  • New: Taxonomy List widget

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.10.0
Comparing to
See all releases

Code changes from version 2.9.0 to 2.10.0

assets/css/main.css CHANGED
@@ -3498,3 +3498,158 @@ span.ha-post-list-icon {
3498
  display: inline-block;
3499
  }
3500
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3498
  display: inline-block;
3499
  }
3500
  }
3501
+
3502
+ .ha-taxonomy-list {
3503
+ margin: 0;
3504
+ padding: 0;
3505
+ list-style: none;
3506
+ }
3507
+
3508
+ .ha-taxonomy-list.ha-taxonomy-list-inline {
3509
+ display: -webkit-box;
3510
+ display: -webkit-flex;
3511
+ display: -ms-flexbox;
3512
+ display: flex;
3513
+ -webkit-flex-wrap: wrap;
3514
+ -ms-flex-wrap: wrap;
3515
+ flex-wrap: wrap;
3516
+ }
3517
+
3518
+ .ha-taxonomy-list .ha-taxonomy-list-item {
3519
+ display: -webkit-box;
3520
+ display: -webkit-flex;
3521
+ display: -ms-flexbox;
3522
+ display: flex;
3523
+ margin: 0;
3524
+ margin-bottom: 10px;
3525
+ padding: 0;
3526
+ }
3527
+
3528
+ .ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item {
3529
+ margin-right: 21px;
3530
+ }
3531
+
3532
+ .ha-taxonomy-list .ha-taxonomy-list-item:last-child,
3533
+ .ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item:last-child {
3534
+ margin-right: 0;
3535
+ margin-bottom: 0;
3536
+ }
3537
+
3538
+ .ha-taxonomy-list .ha-taxonomy-list-item a {
3539
+ display: -webkit-box;
3540
+ display: -webkit-flex;
3541
+ display: -ms-flexbox;
3542
+ display: flex;
3543
+ -webkit-box-align: center;
3544
+ -webkit-align-items: center;
3545
+ align-items: center;
3546
+ -ms-flex-align: center;
3547
+ width: 100%;
3548
+ }
3549
+
3550
+ .ha-taxonomy-list-title {
3551
+ display: block;
3552
+ margin-top: 0;
3553
+ margin-bottom: 0;
3554
+ color: #242424;
3555
+ font-size: 1rem;
3556
+ -webkit-transition: all .4s;
3557
+ transition: all .4s;
3558
+ }
3559
+
3560
+ .ha-taxonomy-list .ha-taxonomy-list-item a:hover .ha-taxonomy-list-title {
3561
+ color: #e04d8b;
3562
+ }
3563
+
3564
+ .ha-taxonomy-list span.ha-taxonomy-list-icon {
3565
+ margin-right: 8px;
3566
+ color: #242424;
3567
+ font-size: 14px;
3568
+ }
3569
+
3570
+ .ha-taxonomy-list span.ha-taxonomy-list-image {
3571
+ margin-right: 15px;
3572
+ line-height: 1;
3573
+ }
3574
+
3575
+ .ha-taxonomy-list span.ha-taxonomy-list-image img {
3576
+ width: 50px;
3577
+ }
3578
+
3579
+ .ha-threesixty-rotation-inner {
3580
+ overflow: hidden;
3581
+ background: #0c5460;
3582
+ }
3583
+
3584
+ .ha-threesixty-rotation-inner img {
3585
+ cursor: move;
3586
+ }
3587
+
3588
+ .ha-img-magnifier-glass {
3589
+ position: absolute;
3590
+ width: 200px;
3591
+ height: 200px;
3592
+ border: 3px solid #000;
3593
+ border-radius: 50%;
3594
+ cursor: none;
3595
+ }
3596
+
3597
+ span.ha-threesixty-rotation-magnify {
3598
+ position: absolute;
3599
+ top: 15px;
3600
+ right: 15px;
3601
+ display: inline-block;
3602
+ font-size: 22px;
3603
+ line-height: 1;
3604
+ }
3605
+
3606
+ .ha-threesixty-rotation-autoplay {
3607
+ display: none;
3608
+ }
3609
+
3610
+ .ha-threesixty-rotation-autoplay-button button {
3611
+ display: inline-block;
3612
+ padding: .4rem 2rem;
3613
+ outline: none;
3614
+ border-radius: 40px;
3615
+ background-color: #e2498a;
3616
+ color: #fff;
3617
+ text-decoration: none;
3618
+ text-transform: uppercase;
3619
+ font-size: 24px;
3620
+ -webkit-transition: all .3s;
3621
+ transition: all .3s;
3622
+ }
3623
+
3624
+ .ha-threesixty-rotation-autoplay-button button:focus {
3625
+ outline: none;
3626
+ }
3627
+
3628
+ .ha-threesixty-rotation-autoplay-button button:hover {
3629
+ outline: none;
3630
+ background-color: #562dd4;
3631
+ color: #fff;
3632
+ }
3633
+
3634
+ .ha-threesixty-rotation-360img {
3635
+ position: absolute;
3636
+ top: 0;
3637
+ right: 0;
3638
+ bottom: 0;
3639
+ left: 0;
3640
+ z-index: 2;
3641
+ margin: auto;
3642
+ width: 100px;
3643
+ height: 100px;
3644
+ border-radius: 50%;
3645
+ background-color: rgba(38, 39, 39, .5);
3646
+ background-position: 50% 50%;
3647
+ background-size: contain;
3648
+ background-repeat: no-repeat;
3649
+ box-shadow: rgba(255, 255, 255, .5) 0 0 4px;
3650
+ color: #505050;
3651
+ text-align: center;
3652
+ line-height: 100px;
3653
+ -webkit-transition: all .5s ease 0s;
3654
+ transition: all .5s ease 0s;
3655
+ }
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,a.ha-social-icon:after,a.ha-social-icon:before{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,.ha-post-list-meta-wrap span: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}.ha-social-icons-wrapper,.ha-social-icons-wrapper a{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-social-icons-wrapper a{padding:15px;border-radius:4px;color:#fff;font-size:30px;-webkit-transition:all .3s;transition:all .3s}a.ha-social-icon:hover{position:relative;z-index:1;background:#e2498a}.ha-social-icons-wrapper a.elementor-social-icon-label{color:#d30c5c}.ha-social-icon:not(:last-child){margin-right:2px}.ha-social-icon i,.ha-social-icon svg{position:relative;display:initial}.ha-social-icon svg,.ha-social-icon-label{width:100%;height:100%}.ha-social-icon i{width:1em;height:1em}.ha-social-icon-label{margin:0 0 0 10px;font-size:18px;font-family:Roboto,sans-serif;line-height:1}.elementor-social-icon-label .ha-social-icon-label{margin-left:0}.elementor-element-edit-mode .ha-social-icon-sticky{z-index:9999}.ha-social-icons:not(.elementor-element-edit-mode) .ha-social-icon-sticky{position:fixed}.ha-social-icon-separator{margin-right:10px}.ha-separator--stroke .ha-social-icon-separator{width:1px;height:1em;background:#d30c5c}.ha-separator--custom .ha-social-icon-separator{color:#d30c5c;font-size:24px}.ha-social-icon-separator:last-child{display:none}.ha-twitter-feed .ha-tweeter-feed-icon i{position:absolute;top:15px;right:15px;color:#1da1f2;font-size:22px}.ha-twitter-feed .ha-tweet-items{display:-ms-grid;display:grid;grid-gap:30px}.ha-twitter-feed .ha-tweet-item{position:relative;z-index:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:1px 1px 8px 1px rgba(0,0,0,.1)}.ha-twitter-feed .ha-tweet-content:before,.ha-twitter-feed .ha-tweet-item:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-twitter-feed .ha-tweet-inner-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:30px 10px}.ha-twitter-feed .ha-tweet-author,.ha-twitter-feed .ha-tweet-inner-wrapper,.ha-twitter-feed .ha-tweet-user{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-twitter-feed .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:10px}.ha-twitter-feed .ha-tweet-avatar{width:45px;border-radius:50%}.ha-twitter-feed .ha-tweet-user{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed .ha-tweet-author-name,.ha-twitter-feed .ha-tweet-content p a:hover{color:#e2498a}.ha-twitter-feed .ha-tweet-author-name:hover,.ha-twitter-feed .ha-tweet-content p a{color:#562dd4}.ha-twitter-feed .ha-tweet-username{color:#a7a7a7}.ha-twitter-feed .ha-tweet-username:hover{color:#818181}.ha-twitter-feed .ha-tweet-content{position:relative;color:#222}.ha-twitter-feed .ha-tweet-content p{margin-bottom:5px}.ha-twitter-feed .ha-tweet-footer{position:absolute;bottom:15px;left:0;padding:0 15px;width:100%;text-align:right}.ha-twitter-feed .ha-tweet-date{color:#a7a7a7}.ha-twitter-feed .ha-tweet-meta{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;padding:15px}.ha-twitter-feed .ha-tweet-favorite,.ha-twitter-feed .ha-tweet-retweet{display:inline-block;color:#a7a7a7}.ha-twitter-feed .ha-tweet-favorite{margin-right:12px}.ha-twitter-feed .ha-twitter-load-more-wrapper{margin-top:30px;text-align:center}.ha-twitter-feed .ha-twitter-load-more{display:inline-block;padding:10px 25px;outline:none;border:none;border-radius:50px;background-color:#302a8c;color:#fff;text-align:center;font-weight:400;font-size:16px;-webkit-transition:all .3s;transition:all .3s}.ha-twitter-feed .ha-twitter-load-more:hover{background-color:#e2498a}.ha-twitter-feed .ha-tweet-error-message{padding:20px;border-left:4px solid #ff7726;background-color:#fff9f5}.ha-post-list-item a img,.ha-twitter-feed.ha-twitter-left .ha-tweet-avatar{margin-right:15px}.ha-twitter-feed.ha-twitter-left .ha-tweet-content{text-align:left}.ha-twitter-feed.ha-twitter-center .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed.ha-twitter-center .ha-tweet-content{text-align:center}.ha-twitter-feed.ha-twitter-right .ha-tweeter-feed-icon i{right:auto;left:5px;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-twitter-feed.ha-twitter-right .ha-tweet-author{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-twitter-feed.ha-twitter-right .ha-tweet-content{text-align:right}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-inner-wrapper{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-author{margin-top:10px;margin-bottom:0}.ha-twitter-feed.ha-tweet-glassy-yes .ha-tweet-content:before{background-color:rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ha-post-list{margin:0;padding:0;list-style:none}.ha-post-list .ha-post-list-item,.ha-post-list.ha-post-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list.ha-post-list-inline{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-list .ha-post-list-item{margin:0 0 10px;padding:0}.ha-post-list.ha-post-list-inline .ha-post-list-item{margin-right:21px}.ha-post-list .ha-post-list-item:last-child,.ha-post-list.ha-post-list-inline .ha-post-list-item:last-child{margin-right:0;margin-bottom:0}.ha-post-list .ha-post-list-item a{width:100%}.ha-post-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-post-list .ha-post-list-item a:hover .ha-post-list-title{color:#e04d8b}span.ha-post-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-post-list .ha-post-list-item a,.ha-post-list-meta-wrap,.ha-post-tab span.ha-post-tab-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list-meta-wrap{margin-top:3px}.ha-post-list-meta-wrap span{margin-right:10px;color:#8c8c8c;font-size:13px}.ha-post-list-meta-wrap span i{margin-right:3px}.ha-post-tab .ha-post-tab-filter{padding:0;border-bottom:1px solid #ddd;list-style:none}.ha-post-tab .ha-post-tab-filter li{display:inline-block;margin:0 5px 0 0;padding:15px 25px;background:#fff;color:#333;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab .ha-post-tab-filter li.active,.ha-post-tab .ha-post-tab-filter li:hover,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li.active,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li:hover{background:#6d39ef;color:#fff}.ha-post-tab .ha-post-tab-item-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:hidden;overflow:hidden;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;height:0;opacity:0}.ha-post-tab span.ha-post-tab-loading{-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;width:100%;height:100%;text-align:center;font-size:60px;opacity:.5}.ha-post-tab .ha-post-tab-item-wrapper.active{visibility:visible;height:auto;opacity:1}.ha-post-tab .ha-post-tab-item{margin-bottom:30px;padding-right:15px;padding-left:15px}.ha-post-tab .ha-post-tab-item-inner{box-sizing:border-box;padding:20px;height:100%;border-radius:5px;background:#fff;box-shadow:0 1px 20px rgba(0,0,0,.09)}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb{position:relative;display:block;overflow:hidden;margin-bottom:15px;padding-right:0;padding-left:0}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img{max-width:100%;height:auto}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title{margin-top:0;margin-bottom:10px;font-size:16px}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a,.ha-post-tab .ha-post-tab-meta span a{color:#333;text-decoration:none;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span a:hover,.ha-post-tab .ha-post-tab-title a:hover{color:#6d39ef}.ha-post-tab .ha-post-tab-meta{font-size:14px}.ha-post-tab .ha-post-tab-meta span{display:inline-block;margin-top:10px;margin-right:15px;color:#9b9b9b;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span i{padding-right:5px}.ha-post-tab .ha-post-tab-meta span a{color:#9b9b9b}.ha-post-tab .ha-post-tab-excerpt p{margin:0}.ha-post-tab.ha-post-tab-left,.ha-post-tab.ha-post-tab-right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-right:1px solid #f1f1f1;border-bottom:none}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:left;display:block;margin:0;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:right}.ha-post-tab.ha-post-tab-left .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-bottom:none;border-left:1px solid #f1f1f1}.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}@media (max-width:767px){.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;border-right:0;border-bottom:1px solid #f1f1f1;border-left:0}.ha-post-tab.ha-post-tab-left .ha-post-tab-content,.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;min-height:100%}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{display:inline-block}}
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,a.ha-social-icon:after,a.ha-social-icon:before{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,.ha-post-list-meta-wrap span: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}.ha-social-icons-wrapper,.ha-social-icons-wrapper a{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-social-icons-wrapper a{padding:15px;border-radius:4px;color:#fff;font-size:30px;-webkit-transition:all .3s;transition:all .3s}a.ha-social-icon:hover{position:relative;z-index:1;background:#e2498a}.ha-social-icons-wrapper a.elementor-social-icon-label{color:#d30c5c}.ha-social-icon:not(:last-child){margin-right:2px}.ha-social-icon i,.ha-social-icon svg{position:relative;display:initial}.ha-social-icon svg,.ha-social-icon-label{width:100%;height:100%}.ha-social-icon i{width:1em;height:1em}.ha-social-icon-label{margin:0 0 0 10px;font-size:18px;font-family:Roboto,sans-serif;line-height:1}.elementor-social-icon-label .ha-social-icon-label{margin-left:0}.elementor-element-edit-mode .ha-social-icon-sticky{z-index:9999}.ha-social-icons:not(.elementor-element-edit-mode) .ha-social-icon-sticky{position:fixed}.ha-social-icon-separator{margin-right:10px}.ha-separator--stroke .ha-social-icon-separator{width:1px;height:1em;background:#d30c5c}.ha-separator--custom .ha-social-icon-separator{color:#d30c5c;font-size:24px}.ha-social-icon-separator:last-child{display:none}.ha-twitter-feed .ha-tweeter-feed-icon i{position:absolute;top:15px;right:15px;color:#1da1f2;font-size:22px}.ha-twitter-feed .ha-tweet-items{display:-ms-grid;display:grid;grid-gap:30px}.ha-twitter-feed .ha-tweet-item{position:relative;z-index:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:1px 1px 8px 1px rgba(0,0,0,.1)}.ha-twitter-feed .ha-tweet-content:before,.ha-twitter-feed .ha-tweet-item:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-twitter-feed .ha-tweet-inner-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:30px 10px}.ha-twitter-feed .ha-tweet-author,.ha-twitter-feed .ha-tweet-inner-wrapper,.ha-twitter-feed .ha-tweet-user{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-twitter-feed .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:10px}.ha-twitter-feed .ha-tweet-avatar{width:45px;border-radius:50%}.ha-twitter-feed .ha-tweet-user{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed .ha-tweet-author-name,.ha-twitter-feed .ha-tweet-content p a:hover{color:#e2498a}.ha-twitter-feed .ha-tweet-author-name:hover,.ha-twitter-feed .ha-tweet-content p a{color:#562dd4}.ha-twitter-feed .ha-tweet-username{color:#a7a7a7}.ha-twitter-feed .ha-tweet-username:hover{color:#818181}.ha-twitter-feed .ha-tweet-content{position:relative;color:#222}.ha-twitter-feed .ha-tweet-content p{margin-bottom:5px}.ha-twitter-feed .ha-tweet-footer{position:absolute;bottom:15px;left:0;padding:0 15px;width:100%;text-align:right}.ha-twitter-feed .ha-tweet-date{color:#a7a7a7}.ha-twitter-feed .ha-tweet-meta{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;padding:15px}.ha-twitter-feed .ha-tweet-favorite,.ha-twitter-feed .ha-tweet-retweet{display:inline-block;color:#a7a7a7}.ha-twitter-feed .ha-tweet-favorite{margin-right:12px}.ha-twitter-feed .ha-twitter-load-more-wrapper{margin-top:30px;text-align:center}.ha-twitter-feed .ha-twitter-load-more{display:inline-block;padding:10px 25px;outline:none;border:none;border-radius:50px;background-color:#302a8c;color:#fff;text-align:center;font-weight:400;font-size:16px;-webkit-transition:all .3s;transition:all .3s}.ha-twitter-feed .ha-twitter-load-more:hover{background-color:#e2498a}.ha-twitter-feed .ha-tweet-error-message{padding:20px;border-left:4px solid #ff7726;background-color:#fff9f5}.ha-post-list-item a img,.ha-twitter-feed.ha-twitter-left .ha-tweet-avatar{margin-right:15px}.ha-twitter-feed.ha-twitter-left .ha-tweet-content{text-align:left}.ha-twitter-feed.ha-twitter-center .ha-tweet-author{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-twitter-feed.ha-twitter-center .ha-tweet-content{text-align:center}.ha-twitter-feed.ha-twitter-right .ha-tweeter-feed-icon i{right:auto;left:5px;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-twitter-feed.ha-twitter-right .ha-tweet-author{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-twitter-feed.ha-twitter-right .ha-tweet-content{text-align:right}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-inner-wrapper{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.ha-twitter-feed.ha-twitter-user-bottom .ha-tweet-author{margin-top:10px;margin-bottom:0}.ha-twitter-feed.ha-tweet-glassy-yes .ha-tweet-content:before{background-color:rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ha-post-list{margin:0;padding:0;list-style:none}.ha-post-list .ha-post-list-item,.ha-post-list.ha-post-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list.ha-post-list-inline{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-list .ha-post-list-item{margin:0 0 10px;padding:0}.ha-post-list.ha-post-list-inline .ha-post-list-item{margin-right:21px}.ha-post-list .ha-post-list-item:last-child,.ha-post-list.ha-post-list-inline .ha-post-list-item:last-child{margin-right:0;margin-bottom:0}.ha-post-list .ha-post-list-item a{width:100%}.ha-post-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-post-list .ha-post-list-item a:hover .ha-post-list-title,.ha-taxonomy-list .ha-taxonomy-list-item a:hover .ha-taxonomy-list-title{color:#e04d8b}span.ha-post-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-post-list .ha-post-list-item a,.ha-post-list-meta-wrap,.ha-post-tab span.ha-post-tab-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-post-list-meta-wrap{margin-top:3px}.ha-post-list-meta-wrap span{margin-right:10px;color:#8c8c8c;font-size:13px}.ha-post-list-meta-wrap span i{margin-right:3px}.ha-post-tab .ha-post-tab-filter{padding:0;border-bottom:1px solid #ddd;list-style:none}.ha-post-tab .ha-post-tab-filter li{display:inline-block;margin:0 5px 0 0;padding:15px 25px;background:#fff;color:#333;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab .ha-post-tab-filter li.active,.ha-post-tab .ha-post-tab-filter li:hover,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li.active,.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li:hover{background:#6d39ef;color:#fff}.ha-post-tab .ha-post-tab-item-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:hidden;overflow:hidden;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;height:0;opacity:0}.ha-post-tab span.ha-post-tab-loading{-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;width:100%;height:100%;text-align:center;font-size:60px;opacity:.5}.ha-post-tab .ha-post-tab-item-wrapper.active{visibility:visible;height:auto;opacity:1}.ha-post-tab .ha-post-tab-item{margin-bottom:30px;padding-right:15px;padding-left:15px}.ha-post-tab .ha-post-tab-item-inner{box-sizing:border-box;padding:20px;height:100%;border-radius:5px;background:#fff;box-shadow:0 1px 20px rgba(0,0,0,.09)}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb{position:relative;display:block;overflow:hidden;margin-bottom:15px;padding-right:0;padding-left:0}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-thumb img{max-width:100%;height:auto}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title{margin-top:0;margin-bottom:10px;font-size:16px}.ha-post-tab .ha-post-tab-item-inner .ha-post-tab-title a,.ha-post-tab .ha-post-tab-meta span a{color:#333;text-decoration:none;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span a:hover,.ha-post-tab .ha-post-tab-title a:hover{color:#6d39ef}.ha-post-tab .ha-post-tab-meta{font-size:14px}.ha-post-tab .ha-post-tab-meta span{display:inline-block;margin-top:10px;margin-right:15px;color:#9b9b9b;-webkit-transition:all .4s;transition:all .4s}.ha-post-tab .ha-post-tab-meta span i{padding-right:5px}.ha-post-tab .ha-post-tab-meta span a{color:#9b9b9b}.ha-post-tab .ha-post-tab-excerpt p{margin:0}.ha-post-tab.ha-post-tab-left,.ha-post-tab.ha-post-tab-right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-right:1px solid #f1f1f1;border-bottom:none}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:left;display:block;margin:0;text-decoration:none;-webkit-transition:all .3s;transition:all .3s}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{text-align:right}.ha-post-tab.ha-post-tab-left .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;min-width:200px;border-bottom:none;border-left:1px solid #f1f1f1}.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 200px);-ms-flex:0 0 calc(100% - 200px);flex:0 0 calc(100% - 200px);min-width:calc(100% - 200px);min-height:100%}@media (max-width:767px){.ha-post-tab.ha-post-tab-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;border-right:0;border-bottom:1px solid #f1f1f1;border-left:0}.ha-post-tab.ha-post-tab-left .ha-post-tab-content,.ha-post-tab.ha-post-tab-right .ha-post-tab-content{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;min-height:100%}.ha-post-tab.ha-post-tab-left .ha-post-tab-filter li,.ha-post-tab.ha-post-tab-right .ha-post-tab-filter li{display:inline-block}}.ha-taxonomy-list{margin:0;padding:0;list-style:none}.ha-taxonomy-list.ha-taxonomy-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-taxonomy-list .ha-taxonomy-list-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 10px;padding:0}.ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item{margin-right:21px}.ha-taxonomy-list .ha-taxonomy-list-item:last-child,.ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item:last-child{margin-right:0;margin-bottom:0}.ha-taxonomy-list .ha-taxonomy-list-item a{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;width:100%}.ha-taxonomy-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-taxonomy-list span.ha-taxonomy-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-taxonomy-list span.ha-taxonomy-list-image{margin-right:15px;line-height:1}.ha-taxonomy-list span.ha-taxonomy-list-image img{width:50px}.ha-threesixty-rotation-inner{overflow:hidden;background:#0c5460}.ha-threesixty-rotation-inner img{cursor:move}.ha-img-magnifier-glass{position:absolute;width:200px;height:200px;border:3px solid #000;border-radius:50%;cursor:none}span.ha-threesixty-rotation-magnify{position:absolute;top:15px;right:15px;display:inline-block;font-size:22px;line-height:1}.ha-threesixty-rotation-autoplay{display:none}.ha-threesixty-rotation-autoplay-button button{display:inline-block;padding:.4rem 2rem;outline:none;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:24px;-webkit-transition:all .3s;transition:all .3s}.ha-threesixty-rotation-autoplay-button button:focus{outline:none}.ha-threesixty-rotation-autoplay-button button:hover{outline:none;background-color:#562dd4;color:#fff}.ha-threesixty-rotation-360img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;margin:auto;width:100px;height:100px;border-radius:50%;background-color:rgba(38,39,39,.5);background-position:50% 50%;background-size:contain;background-repeat:no-repeat;box-shadow:rgba(255,255,255,.5) 0 0 4px;color:#505050;text-align:center;line-height:100px;-webkit-transition:all .5s ease 0s;transition:all .5s ease 0s}
assets/css/widgets/taxonomy-list.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ha-taxonomy-list{margin:0;padding:0;list-style:none}.ha-taxonomy-list.ha-taxonomy-list-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ha-taxonomy-list .ha-taxonomy-list-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 10px;padding:0}.ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item{margin-right:21px}.ha-taxonomy-list .ha-taxonomy-list-item:last-child,.ha-taxonomy-list.ha-taxonomy-list-inline .ha-taxonomy-list-item:last-child{margin-right:0;margin-bottom:0}.ha-taxonomy-list .ha-taxonomy-list-item a{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;width:100%}.ha-taxonomy-list-title{display:block;margin-top:0;margin-bottom:0;color:#242424;font-size:1rem;-webkit-transition:all .4s;transition:all .4s}.ha-taxonomy-list .ha-taxonomy-list-item a:hover .ha-taxonomy-list-title{color:#e04d8b}.ha-taxonomy-list span.ha-taxonomy-list-icon{margin-right:8px;color:#242424;font-size:14px}.ha-taxonomy-list span.ha-taxonomy-list-image{margin-right:15px;line-height:1}.ha-taxonomy-list span.ha-taxonomy-list-image img{width:50px}
assets/css/widgets/threesixty-rotation.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ha-threesixty-rotation-inner{overflow:hidden;background:#0c5460}.ha-threesixty-rotation-inner img{cursor:move}.ha-img-magnifier-glass{position:absolute;width:200px;height:200px;border:3px solid #000;border-radius:50%;cursor:none}span.ha-threesixty-rotation-magnify{position:absolute;top:15px;right:15px;display:inline-block;font-size:22px;line-height:1}.ha-threesixty-rotation-autoplay{display:none}.ha-threesixty-rotation-autoplay-button button{display:inline-block;padding:.4rem 2rem;outline:none;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:24px;-webkit-transition:all .3s;transition:all .3s}.ha-threesixty-rotation-autoplay-button button:focus{outline:none}.ha-threesixty-rotation-autoplay-button button:hover{outline:none;background-color:#562dd4;color:#fff}.ha-threesixty-rotation-360img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;margin:auto;width:100px;height:100px;border-radius:50%;background-color:rgba(38,39,39,.5);background-position:50% 50%;background-size:contain;background-repeat:no-repeat;box-shadow:rgba(255,255,255,.5) 0 0 4px;color:#505050;text-align:center;line-height:100px;-webkit-transition:all .5s ease 0s;transition:all .5s ease 0s}
assets/imgs/360_view.svg ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:#FFFFFF;}
8
+ </style>
9
+ <g>
10
+ <g>
11
+ <path class="st0" d="M10.7,10.2L9.9,10c0.2-0.8,0.8-1.2,1.7-1.2c0.5,0,0.9,0.1,1.1,0.3c0.3,0.2,0.4,0.5,0.4,0.9
12
+ c0,0.5-0.3,0.9-0.8,1.1c0.7,0.2,1,0.5,1,1.2c0,0.4-0.2,0.8-0.5,1c-0.3,0.3-0.7,0.4-1.2,0.4c-0.5,0-0.8-0.1-1.2-0.3
13
+ c-0.3-0.2-0.5-0.5-0.6-1l0.8-0.2c0.1,0.5,0.5,0.8,1,0.8c0.2,0,0.4-0.1,0.6-0.2s0.3-0.4,0.3-0.6c0-0.2-0.1-0.4-0.2-0.6
14
+ c-0.2-0.1-0.4-0.2-0.8-0.2h-0.3v-0.6h0.3c0.2,0,0.4,0,0.5-0.1c0.1,0,0.2-0.1,0.3-0.2c0.1-0.1,0.1-0.3,0.1-0.5
15
+ c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.3-0.2-0.5-0.2C11.1,9.5,10.8,9.7,10.7,10.2z"/>
16
+ <path class="st0" d="M17.5,10l-0.7,0.2c-0.1-0.5-0.4-0.8-0.8-0.8c-0.3,0-0.6,0.2-0.7,0.5c-0.2,0.3-0.2,0.8-0.3,1.4
17
+ c0.2-0.5,0.6-0.7,1.1-0.7c0.4,0,0.8,0.1,1,0.4c0.3,0.3,0.4,0.7,0.4,1.1c0,0.5-0.2,0.9-0.5,1.2s-0.7,0.4-1.2,0.4
18
+ c-0.5,0-1-0.2-1.3-0.6c-0.3-0.4-0.5-1-0.5-1.8c0-0.8,0.2-1.5,0.5-2C15,9,15.4,8.8,16,8.8c0.4,0,0.7,0.1,1,0.3
19
+ C17.2,9.3,17.5,9.6,17.5,10z M16.7,12.2c0-0.3-0.1-0.6-0.2-0.7c-0.1-0.2-0.3-0.2-0.6-0.2c-0.3,0-0.5,0.1-0.6,0.3
20
+ c-0.1,0.2-0.2,0.4-0.2,0.7c0,0.3,0.1,0.5,0.2,0.7c0.2,0.2,0.4,0.3,0.6,0.3C16.5,13.2,16.7,12.9,16.7,12.2z"/>
21
+ <path class="st0" d="M21.7,11.3c0,0.9-0.1,1.5-0.4,2c-0.3,0.4-0.7,0.6-1.3,0.6c-1.2,0-1.7-0.8-1.7-2.5c0-0.9,0.1-1.5,0.4-2
22
+ c0.3-0.4,0.7-0.6,1.3-0.6C21.1,8.9,21.7,9.7,21.7,11.3z M20.7,11.3c0-0.7-0.1-1.2-0.2-1.5c-0.1-0.3-0.3-0.4-0.6-0.4
23
+ c-0.3,0-0.5,0.1-0.6,0.4c-0.2,0.3-0.2,0.8-0.2,1.5c0,0.8,0.1,1.3,0.2,1.5c0.2,0.3,0.4,0.4,0.6,0.4c0.3,0,0.5-0.1,0.6-0.4
24
+ C20.7,12.6,20.7,12.1,20.7,11.3z"/>
25
+ <path class="st0" d="M24.3,10c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.8,0.3c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.5-0.3-0.8
26
+ c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3c0.3,0,0.6,0.1,0.8,0.3C24.2,9.4,24.3,9.7,24.3,10z M23.8,10
27
+ c0-0.2-0.1-0.3-0.2-0.5c-0.1-0.1-0.2-0.2-0.4-0.2s-0.3,0.1-0.4,0.2c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.5
28
+ c0.1,0.1,0.2,0.2,0.4,0.2c0.1,0,0.3-0.1,0.4-0.2C23.8,10.3,23.8,10.2,23.8,10z"/>
29
+ <path class="st0" d="M12.1,15.6h0.6l0.5,1.8l0.5-1.8h0.5l-0.8,2.6h-0.5L12.1,15.6z"/>
30
+ <path class="st0" d="M15.2,15.2h-0.6v-0.6h0.6V15.2z M14.6,15.6h0.6v2.6h-0.6V15.6z"/>
31
+ <path class="st0" d="M18,17h-1.7c0,0.3,0.1,0.6,0.2,0.7c0.1,0.1,0.2,0.2,0.4,0.2c0.3,0,0.4-0.2,0.5-0.5l0.5,0.1
32
+ c-0.1,0.5-0.5,0.8-1.1,0.8c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.5-0.3-1s0.1-0.8,0.3-1c0.2-0.3,0.5-0.4,0.8-0.4
33
+ c0.2,0,0.4,0.1,0.6,0.2c0.2,0.1,0.3,0.3,0.4,0.5C17.9,16.4,18,16.6,18,17z M17.4,16.6c0-0.5-0.2-0.7-0.5-0.7
34
+ c-0.3,0-0.5,0.2-0.5,0.7H17.4z"/>
35
+ <path class="st0" d="M18.1,15.6h0.6l0.4,1.8l0.4-1.8h0.5l0.4,1.8l0.5-1.8h0.5l-0.7,2.6h-0.5l-0.4-1.8l-0.4,1.8h-0.5L18.1,15.6z"/>
36
+ </g>
37
+ <path class="st0" d="M8.7,14.1v1.5c0,0-4.4,1.7,1.5,3.8c0,0,3.2,0.9,6.4,0.9V19l4.4,2l-4.4,2.3v-1.5c0,0-11.3,0-11.3-4.4
38
+ C5.2,17.5,5.2,15.2,8.7,14.1z"/>
39
+ <path class="st0" d="M21.5,19c0.3,0,3.5-0.9,3.5-2.3s-1.2-1.7-1.2-1.7v-0.9c0,0,2.9,0.6,2.9,3.2c0,0,0,2.2-3.2,3.2L21.5,19z"/>
40
+ </g>
41
+ </svg>
assets/js/happy-addons.js CHANGED
@@ -565,6 +565,84 @@
565
  }
566
  });
567
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
568
  $('[data-ha-element-link]').each(function() {
569
  var link = $(this).data('ha-element-link');
570
  $(this).on('click.haElementOnClick', function() {
@@ -583,7 +661,8 @@
583
  'ha-skills.default': SkillHandler,
584
  'ha-fun-factor.default': FunFactor,
585
  'ha-bar-chart.default': BarChart,
586
- 'ha-twitter-feed.default': TwitterFeed
 
587
  };
588
 
589
  $.each( handlersFnMap, function( widgetName, handlerFn ) {
565
  }
566
  });
567
 
568
+ //Threesixty Rotation
569
+ var Threesixty_Rotation = function($scope) {
570
+ var ha_circlr = $scope.find('.ha-threesixty-rotation-inner');
571
+ var cls = ha_circlr.data('selector');
572
+ var autoplay = ha_circlr.data('autoplay');
573
+ var glass_on = $scope.find('.ha-threesixty-rotation-magnify');
574
+ var t360 = $scope.find('.ha-threesixty-rotation-360img');
575
+ var zoom = glass_on.data('zoom');
576
+ //console.log(autoplay);
577
+ var playb = $scope.find('.ha-threesixty-rotation-play');
578
+
579
+ var crl = circlr(cls, {
580
+ play : true,
581
+ // vertical : true,
582
+ // scroll : true,
583
+ //interval : 340,
584
+ });
585
+ //console.log(crl);
586
+ if( 'on' ===autoplay ){
587
+ var autoplay_btn = $scope.find('.ha-threesixty-rotation-autoplay');
588
+ autoplay_btn.on('click', function(el) {
589
+ el.preventDefault();
590
+ crl.play();
591
+ t360.remove();
592
+ });
593
+ setTimeout(function(){
594
+ autoplay_btn.trigger('click');
595
+ autoplay_btn.remove();
596
+ },1000);
597
+ }else {
598
+ playb.on('click', function(el) {
599
+ el.preventDefault();
600
+ var $self = $(this);
601
+ var $i = $self.find('i');
602
+ if($i.hasClass('hm-play-button')){
603
+ $i.removeClass('hm-play-button');
604
+ $i.addClass('hm-stop');
605
+ crl.play();
606
+ }else{
607
+ $i.removeClass('hm-stop');
608
+ $i.addClass('hm-play-button');
609
+ crl.stop();
610
+ }
611
+ t360.remove();
612
+ });
613
+ }
614
+
615
+ glass_on.on('click', function(el) {
616
+ var img_block = $scope.find('img');
617
+ img_block.each(function(){
618
+ var style = $(this).attr('style');
619
+ if( -1 !== style.indexOf("block") ){
620
+ HappySimplaMagnify($(this)[0],zoom);
621
+ glass_on.css('display','none');
622
+ t360.remove();
623
+ }
624
+ });
625
+ });
626
+
627
+ $(document).on('click', function (e) {
628
+ var t = $(e.target);
629
+ var magnifier = $scope.find('.ha-img-magnifier-glass');
630
+ var i = glass_on.find('i');
631
+ if( magnifier.length && t[0] !== i[0] ){
632
+ magnifier.remove();
633
+ glass_on.removeAttr('style');
634
+ }
635
+ if( t[0] === ha_circlr[0] ){
636
+ t360.remove();
637
+ }
638
+ });
639
+
640
+ ha_circlr.on('mouseup mousedown', function (e) {
641
+ t360.remove();
642
+ });
643
+
644
+ };
645
+
646
  $('[data-ha-element-link]').each(function() {
647
  var link = $(this).data('ha-element-link');
648
  $(this).on('click.haElementOnClick', function() {
661
  'ha-skills.default': SkillHandler,
662
  'ha-fun-factor.default': FunFactor,
663
  'ha-bar-chart.default': BarChart,
664
+ 'ha-twitter-feed.default': TwitterFeed,
665
+ 'ha-threesixty-rotation.default': Threesixty_Rotation
666
  };
667
 
668
  $.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 a=this,s=arguments,o=function(){n=null,i||t.apply(a,s)},r=i&&!n;clearTimeout(n),n=setTimeout(o,e),r&&t.apply(a,s)}}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 a(e,i,n,a){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:a,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 s=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(){s.trigger("resize.twentytwenty"),clearTimeout(t)},400)})},r=function(e){var i=e.find(".hajs-justified-gallery"),s=i.getHappySettings(),o=s.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},s)),a(e,".ha-js-popup",o,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?s.lastRow:"nojustify",filter:t}),a(e,"*"!==t?t:".ha-js-popup",o,"justifiedgallery")})};s.on("elementor/frontend/init",function(){var e=elementorFrontend,s=elementorModules,l=s.frontend.handlers.Base.extend({onInit:function(){s.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=s.frontend.handlers.Base.extend({onInit:function(){s.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=s.frontend.handlers.Base.extend({onInit:function(){s.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";a(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")}),a(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),u=s.frontend.handlers.Base.extend({onInit:function(){s.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"),a=n.find(".ha-news-ticker-item"),s=this.wrapper.data("scroll-direction"),o="scroll"+s+e+i,r=this.wrapper.data("duration"),l="normal",g=10,h={transform:"translateX(0"+i+"px)"},f={transform:"translateX(-101%)"};"right"===s&&(l="reverse"),a.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=function(t){e.waypoint(t,function(){var e=t.find(".ha-fun-factor-content-number");e.numerator(e.data("animation"))})},p=function(i){e.waypoint(i,function(){var e=t(this),i=e.find(".ha-bar-chart-container"),n=e.find("#ha-bar-chart"),a=i.data("settings");i.length&&new Chart(n,a)})},m=function(e){var i=e.find(".ha-twitter-load-more"),n=e.find(".ha-tweet-items");i.on("click",function(i){i.preventDefault();var a=t(this),s=a.data("settings"),o=a.data("total"),r=e.find(".ha-tweet-item").length;t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_twitter_feed_action",security:HappyLocalize.nonce,query_settings:s,loaded_item:r},success:function(e){o>r?t(e).appendTo(n):(a.text("All Loaded").addClass("loaded"),setTimeout(function(){a.css({display:"none"})},800))},error:function(t){}})})},_=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-post-tab"),this.run()},run:function(){var e=this.wrapper.find(".ha-post-tab-filter"),n=e.find("li"),a=this.wrapper.data("event"),s=this.wrapper.data("query-args");n.on(a,i(function(e){e.preventDefault();var i=t(this),a=i.data("term"),o=i.closest(".ha-post-tab"),r=o.find(".ha-post-tab-content"),l=r.find(".ha-post-tab-loading"),g=r.find(".ha-post-tab-item-wrapper"),h=!1;0===l.length&&(n.removeClass("active"),g.removeClass("active"),i.addClass("active"),g.each(function(){var e=t(this),i=e.data("term");a===i&&(e.addClass("active"),h=!0)}),!1===h&&t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_post_tab_action",security:HappyLocalize.nonce,post_tab_query:s,term_id:a},beforeSend:function(){r.append('<span class="ha-post-tab-loading"><i class="eicon-spinner eicon-animation-spin"></i></span>')},success:function(t){r.find(".ha-post-tab-loading").remove(),r.append(t)},error:function(t){}}))},200))}});t("[data-ha-element-link]").each(function(){var e=t(this).data("ha-element-link");t(this).on("click.haElementOnClick",function(){e.is_external?window.open(e.url):location.href=e.url})});var y={"ha-image-compare.default":o,"ha-justified-gallery.default":r,"ha-number.default":h,"ha-skills.default":f,"ha-fun-factor.default":c,"ha-bar-chart.default":p,"ha-twitter-feed.default":m};t.each(y,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var C={"ha-slider.default":g,"ha-carousel.default":g,"ha-image-grid.default":d,"ha-news-ticker.default":u,"ha-post-tab.default":_,widget:l};t.each(C,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 a=this,o=arguments,s=function(){n=null,i||t.apply(a,o)},r=i&&!n;clearTimeout(n),n=setTimeout(s,e),r&&t.apply(a,o)}}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 a(e,i,n,a){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:a,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 o=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var s=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(){o.trigger("resize.twentytwenty"),clearTimeout(t)},400)})},r=function(e){var i=e.find(".hajs-justified-gallery"),o=i.getHappySettings(),s=o.enable_popup;i.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},o)),a(e,".ha-js-popup",s,"justifiedgallery"),n(e,function(t){i.justifiedGallery({lastRow:"*"===t?o.lastRow:"nojustify",filter:t}),a(e,"*"!==t?t:".ha-js-popup",s,"justifiedgallery")})};o.on("elementor/frontend/init",function(){var e=elementorFrontend,o=elementorModules,l=o.frontend.handlers.Base.extend({onInit:function(){o.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))}}),h=o.frontend.handlers.Base.extend({onInit:function(){o.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"))})},g=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=o.frontend.handlers.Base.extend({onInit:function(){o.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";a(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")}),a(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),u=o.frontend.handlers.Base.extend({onInit:function(){o.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"),a=n.find(".ha-news-ticker-item"),o=this.wrapper.data("scroll-direction"),s="scroll"+o+e+i,r=this.wrapper.data("duration"),l="normal",h=10,f={transform:"translateX(0"+i+"px)"},g={transform:"translateX(-101%)"};"right"===o&&(l="reverse"),a.each(function(){h+=t(this).outerWidth(!0)}),n.css({width:h,display:"flex"}),t.keyframe.define([{name:s,"0%":f,"100%":g}]),n.playKeyframe({name:s,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=function(i){e.waypoint(i,function(){var e=t(this),i=e.find(".ha-bar-chart-container"),n=e.find("#ha-bar-chart"),a=i.data("settings");i.length&&new Chart(n,a)})},m=function(e){var i=e.find(".ha-twitter-load-more"),n=e.find(".ha-tweet-items");i.on("click",function(i){i.preventDefault();var a=t(this),o=a.data("settings"),s=a.data("total"),r=e.find(".ha-tweet-item").length;t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_twitter_feed_action",security:HappyLocalize.nonce,query_settings:o,loaded_item:r},success:function(e){s>r?t(e).appendTo(n):(a.text("All Loaded").addClass("loaded"),setTimeout(function(){a.css({display:"none"})},800))},error:function(t){}})})},y=o.frontend.handlers.Base.extend({onInit:function(){o.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.wrapper=this.$element.find(".ha-post-tab"),this.run()},run:function(){var e=this.wrapper.find(".ha-post-tab-filter"),n=e.find("li"),a=this.wrapper.data("event"),o=this.wrapper.data("query-args");n.on(a,i(function(e){e.preventDefault();var i=t(this),a=i.data("term"),s=i.closest(".ha-post-tab"),r=s.find(".ha-post-tab-content"),l=r.find(".ha-post-tab-loading"),h=r.find(".ha-post-tab-item-wrapper"),f=!1;0===l.length&&(n.removeClass("active"),h.removeClass("active"),i.addClass("active"),h.each(function(){var e=t(this),i=e.data("term");a===i&&(e.addClass("active"),f=!0)}),!1===f&&t.ajax({url:HappyLocalize.ajax_url,type:"POST",data:{action:"ha_post_tab_action",security:HappyLocalize.nonce,post_tab_query:o,term_id:a},beforeSend:function(){r.append('<span class="ha-post-tab-loading"><i class="eicon-spinner eicon-animation-spin"></i></span>')},success:function(t){r.find(".ha-post-tab-loading").remove(),r.append(t)},error:function(t){}}))},200))}}),_=function(e){var i=e.find(".ha-threesixty-rotation-inner"),n=i.data("selector"),a=i.data("autoplay"),o=e.find(".ha-threesixty-rotation-magnify"),s=e.find(".ha-threesixty-rotation-360img"),r=o.data("zoom"),l=e.find(".ha-threesixty-rotation-play"),h=circlr(n,{play:!0});if("on"===a){var f=e.find(".ha-threesixty-rotation-autoplay");f.on("click",function(t){t.preventDefault(),h.play(),s.remove()}),setTimeout(function(){f.trigger("click"),f.remove()},1e3)}else l.on("click",function(e){e.preventDefault();var i=t(this),n=i.find("i");n.hasClass("hm-play-button")?(n.removeClass("hm-play-button"),n.addClass("hm-stop"),h.play()):(n.removeClass("hm-stop"),n.addClass("hm-play-button"),h.stop()),s.remove()});o.on("click",function(i){e.find("img").each(function(){-1!==t(this).attr("style").indexOf("block")&&(HappySimplaMagnify(t(this)[0],r),o.css("display","none"),s.remove())})}),t(document).on("click",function(n){var a=t(n.target),r=e.find(".ha-img-magnifier-glass"),l=o.find("i");r.length&&a[0]!==l[0]&&(r.remove(),o.removeAttr("style")),a[0]===i[0]&&s.remove()}),i.on("mouseup mousedown",function(t){s.remove()})};t("[data-ha-element-link]").each(function(){var e=t(this).data("ha-element-link");t(this).on("click.haElementOnClick",function(){e.is_external?window.open(e.url):location.href=e.url})});var v={"ha-image-compare.default":s,"ha-justified-gallery.default":r,"ha-number.default":f,"ha-skills.default":g,"ha-fun-factor.default":c,"ha-bar-chart.default":p,"ha-twitter-feed.default":m,"ha-threesixty-rotation.default":_};t.each(v,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var C={"ha-slider.default":h,"ha-carousel.default":h,"ha-image-grid.default":d,"ha-news-ticker.default":u,"ha-post-tab.default":y,widget:l};t.each(C,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
assets/vendor/threesixty-rotation/circlr.js ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ var Emitter = require('component-emitter');
3
+ var wheel = require('eventwheel');
4
+
5
+ module.exports = Rotation;
6
+
7
+ function Rotation(el) {
8
+ if (!(this instanceof Rotation)) return new Rotation(el);
9
+ if (typeof el === 'string') el = document.querySelector(el);
10
+ this.el = el;
11
+ this.current = 0;
12
+ this.cycle(true);
13
+ this.interval(75);
14
+ this.start(0);
15
+ this.onTouchStart = this.onTouchStart.bind(this);
16
+ this.onTouchMove = this.onTouchMove.bind(this);
17
+ this.onTouchEnd = this.onTouchEnd.bind(this);
18
+ this.onWheel = this.onWheel.bind(this);
19
+ this.bind();
20
+ }
21
+
22
+ Emitter(Rotation.prototype);
23
+
24
+ Rotation.prototype.scroll = function (n) {
25
+ if (this._scroll === n) return this;
26
+ this._scroll = n;
27
+
28
+ if (this._scroll) {
29
+ wheel.bind(this.el, this.onWheel);
30
+ } else {
31
+ wheel.unbind(this.el, this.onWheel);
32
+ }
33
+
34
+ return this;
35
+ };
36
+
37
+ Rotation.prototype.vertical = function (n) {
38
+ this._vertical = n;
39
+ return this;
40
+ };
41
+
42
+ Rotation.prototype.reverse = function (n) {
43
+ this._reverse = n;
44
+ return this;
45
+ };
46
+
47
+ Rotation.prototype.cycle = function (n) {
48
+ this._cycle = n;
49
+ return this;
50
+ };
51
+
52
+ Rotation.prototype.interval = function (ms) {
53
+ this._interval = ms;
54
+ return this;
55
+ };
56
+
57
+ Rotation.prototype.start = function (n) {
58
+ var children = this.children();
59
+ this.el.style.position = 'relative';
60
+ this.el.style.width = '100%';
61
+
62
+ for (var i = 0, len = children.length; i < len; i++) {
63
+ children[i].style.display = 'none';
64
+ children[i].style.width = '100%';
65
+ }
66
+
67
+ this.show(n);
68
+ return this;
69
+ };
70
+
71
+ Rotation.prototype.play = function (n) {
72
+ if (this.timer) return;
73
+ var self = this;
74
+
75
+ function timer() {
76
+ if (n === undefined || n > self.current) self.next();
77
+ if (n < self.current) self.prev();
78
+ if (n === self.current) self.stop();
79
+ }
80
+
81
+ this.timer = setInterval(timer, this._interval);
82
+ return this;
83
+ };
84
+
85
+ Rotation.prototype.stop = function () {
86
+ clearInterval(this.timer);
87
+ this.timer = null;
88
+ return this;
89
+ };
90
+
91
+ Rotation.prototype.prev = function () {
92
+ return this.show(this.current - 1);
93
+ };
94
+
95
+ Rotation.prototype.next = function () {
96
+ return this.show(this.current + 1);
97
+ };
98
+
99
+ Rotation.prototype.show = function (n) {
100
+ var children = this.children();
101
+ var len = children.length;
102
+ if (n < 0) n = this._cycle ? n + len : 0;
103
+ if (n > len - 1) n = this._cycle ? n - len : len - 1;
104
+ children[this.current].style.display = 'none';
105
+ children[n].style.display = 'block';
106
+ if (n !== this.current) this.emit('show', n, len);
107
+ this.current = n;
108
+ return this;
109
+ };
110
+
111
+ Rotation.prototype.bind = function () {
112
+ this.el.addEventListener('touchstart', this.onTouchStart, false);
113
+ this.el.addEventListener('touchmove', this.onTouchMove, false);
114
+ this.el.addEventListener('touchend', this.onTouchEnd, false);
115
+ this.el.addEventListener('mousedown', this.onTouchStart, false);
116
+ this.el.addEventListener('mousemove', this.onTouchMove, false);
117
+ document.addEventListener('mouseup', this.onTouchEnd, false);
118
+ if (this._scroll) wheel.bind(this.el, this.onWheel);
119
+ };
120
+
121
+ Rotation.prototype.unbind = function () {
122
+ this.el.removeEventListener('touchstart', this.onTouchStart, false);
123
+ this.el.removeEventListener('touchmove', this.onTouchMove, false);
124
+ this.el.removeEventListener('touchend', this.onTouchEnd, false);
125
+ this.el.removeEventListener('mousedown', this.onTouchStart, false);
126
+ this.el.removeEventListener('mousemove', this.onTouchMove, false);
127
+ document.removeEventListener('mouseup', this.onTouchEnd, false);
128
+ if (this._scroll) wheel.unbind(this.el, this.onWheel);
129
+ };
130
+
131
+ Rotation.prototype.onTouchStart = function (event) {
132
+ if (this.timer) this.stop();
133
+ event.preventDefault();
134
+ this.touch = this.getTouch(event);
135
+ this.currentTouched = this.current;
136
+ };
137
+
138
+ Rotation.prototype.onTouchMove = function (event) {
139
+ if (typeof this.touch !== 'number') return;
140
+ event.preventDefault();
141
+ var touch = this.getTouch(event);
142
+ var len = this.children().length;
143
+ var max = this.el[this._vertical ? 'clientHeight' : 'clientWidth'];
144
+ var offset = touch - this.touch;
145
+ offset = this._reverse ? -offset : offset;
146
+ offset = Math.floor(offset / max * len);
147
+ this.show(this.currentTouched + offset);
148
+ };
149
+
150
+ Rotation.prototype.onTouchEnd = function (event) {
151
+ if (typeof this.touch !== 'number') return;
152
+ event.preventDefault();
153
+ this.touch = null;
154
+ };
155
+
156
+ Rotation.prototype.onWheel = function (event) {
157
+ if (this.timer) this.stop();
158
+ event.preventDefault();
159
+ var delta = event.deltaY || event.detail || (-event.wheelDelta);
160
+ delta = delta !== 0 ? delta / Math.abs(delta) : delta;
161
+ delta = this._reverse ? -delta : delta;
162
+ this[delta > 0 ? 'next' : 'prev']();
163
+ };
164
+
165
+ Rotation.prototype.children = function () {
166
+ var nodes = this.el.childNodes;
167
+ var elements = [];
168
+
169
+ for (var i = 0, len = nodes.length; i < len; i++) {
170
+ if (nodes[i].nodeType === 1) elements.push(nodes[i]);
171
+ }
172
+
173
+ return elements;
174
+ };
175
+
176
+ Rotation.prototype.getTouch = function (event) {
177
+ event = /^touch/.test(event.type) ? event.changedTouches[0] : event;
178
+
179
+ return this._vertical ?
180
+ event.clientY - this.el.offsetTop :
181
+ event.clientX - this.el.offsetLeft;
182
+ };
assets/vendor/threesixty-rotation/circlr.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ // Circlr © 2014-2015 Andrey Polischuk github.com/andrepolischuk/circlr
2
+ !function(){"use strict";function b(b){function p(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,function(){c.call(a,window.event)})}function q(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function r(a){c=!1,q(a),a="touchstart"===a.type?a.changedTouches[0]:a,i=!0,b.vertical?m.Y=a.clientY-d.offsetTop:m.X=a.clientX-d.offsetLeft}function s(a){return 0>a?a=b.cycle?a+f:0:a>f-1&&(a=b.cycle?a-f:f-1),a}function t(a){if(i){q(a),a="touchmove"===a.type?a.changedTouches[0]:a;var c=b.vertical?a.clientY-d.offsetTop-m.Y:a.clientX-d.offsetLeft-m.X;c=b.reverse?-c:c;var e=h/f,g=l;c=Math.floor(c/e),c!==l&&(l=s(m.frame+c),g!==l&&(d.getElementsByTagName("img")[g].style.display="none",d.getElementsByTagName("img")[l].style.display="block","function"==typeof n.change&&n.change(l,f)))}}function u(a){q(a),i=!1,m.frame=l}function v(a){c=!1,q(a);var e=a.deltaY||a.detail||-a.wheelDelta;e/=Math.abs(e),e=b.reverse?-e:e,l=s(l+e),d.getElementsByTagName("img")[m.frame].style.display="none",d.getElementsByTagName("img")[l].style.display="block",m.frame=l,"function"==typeof n.change&&n.change(l,f)}function w(){if(e&&(e.style.display="none"),0===k.length){var a=s(b.start);if(d.getElementsByTagName("img")[a].style.display="block",l=a,d.style.position="relative",d.style.width="100%","ontouchstart"in window||"onmsgesturechange"in window)(b.mouse||b.scroll)&&(p(d,"touchstart",r),p(d,"touchmove",t),p(d,"touchend",u));else if(b.mouse&&(p(d,"mousedown",r),p(d,"mousemove",t),p(document,"mouseup",u)),b.scroll)for(var f=0;f<o.length;f++)if("on"+o[f]in window){p(d,o[f],v);break}c&&B()}"function"==typeof n.ready&&n.ready(k)}function x(a){a.onload=function(){j.push(this.src),j.length+k.length===f&&w()},a.onerror=function(){k.push(this.src),j.length+k.length===f&&w()},a.onreadystatechange=function(){this.onload()}}function y(){var a;e&&(e.style.display="block");for(var b=0;f>b;b++)a=d.getElementsByTagName("img")[b],a.style.display="none",a.style.width="100%",a.setAttribute("src",a.getAttribute("data-src")),a.setAttribute("data-index",b),a.removeAttribute("data-src"),x(a);g=g||d.clientHeight,h=h||d.clientWidth}function z(a){d.getElementsByTagName("img")[l].style.display="none",d.getElementsByTagName("img")[a].style.display="block",m.frame=l=a}b.mouse=b.mouse||!0,b.scroll=b.scroll||!1,b.vertical=b.vertical||!1,b.reverse=b.reverse||!1,b.cycle=b.cycle||!0,b.start=b.start||0,b.speed=b.speed||50;var c=b.autoplay||!1;b.playSpeed=b.playSpeed||100;var d=this.el=b.element;d.setAttribute("data-circlr",!0);var l,e=b.loader?document.getElementById(b.loader):void 0,f=this.length=d.getElementsByTagName("img").length,g=b.height||void 0,h=b.width||void 0,i=!1,j=[],k=[],m={};m.Y=null,m.X=null,m.frame=0;var n={};n.ready=b.ready||void 0,n.change=b.change||void 0;var o=["wheel","mousewheel","scroll","DOMMouseScroll"];y();var A=this.turn=function(a){a=s(a),c=!0,function d(){a!==l&&c?(z(s(l>a?l-1:l+1)),setTimeout(d,"undefined"==typeof a?b.playSpeed:b.speed)):a===l&&(m.frame=l=a,c=!1,"function"==typeof n.change&&n.change(l,f))}()};this.go=function(a){a!==l&&(z(a),"function"==typeof n.change&&n.change(l,f))};var B=this.play=function(){c=!0,A()};this.stop=function(){c=!1},this.show=function(){d.style.display="block"},this.hide=function(){d.style.display="none"},this.set=function(c){for(var e,d=0;d<a.length;d++)e=a[d],b[e]="undefined"!=typeof c[e]?c[e]:b[e]}}function c(a,c){return a=document.getElementById(a),a.getAttribute("data-circlr")?void 0:(c=c||{},c.element=a,new b(c))}var a=["vertical","reverse","cycle","speed","playSpeed"];"function"==typeof define&&define.amd?define([],function(){return c}):"undefined"!=typeof module&&module.exports?module.exports=c:this.circlr=c}.call(this);
assets/vendor/threesixty-rotation/happy-simple-magnify.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function($, w) {
2
+ w.HappySimplaMagnify = function magnify(selector, zoom) {
3
+
4
+ var img, glass, w, h, bw;
5
+ //img = document.getElementById(imgID);
6
+ img = selector;
7
+
8
+ /* Create magnifier glass: */
9
+ glass = document.createElement("DIV");
10
+ glass.setAttribute("class", "ha-img-magnifier-glass");
11
+
12
+ /* Insert magnifier glass: */
13
+ img.parentElement.insertBefore(glass, img);
14
+
15
+ /* Set background properties for the magnifier glass: */
16
+ glass.style.backgroundImage = "url('" + img.src + "')";
17
+ glass.style.backgroundRepeat = "no-repeat";
18
+ glass.style.backgroundSize = (img.width * zoom) + "px " + (img.height * zoom) + "px";
19
+ bw = 3;
20
+ w = glass.offsetWidth / 2;
21
+ h = glass.offsetHeight / 2;
22
+
23
+ /* Execute a function when someone moves the magnifier glass over the image: */
24
+ glass.addEventListener("mousemove", moveMagnifier);
25
+ img.addEventListener("mousemove", moveMagnifier);
26
+
27
+ /*and also for touch screens:*/
28
+ glass.addEventListener("touchmove", moveMagnifier);
29
+ img.addEventListener("touchmove", moveMagnifier);
30
+
31
+ function moveMagnifier(e) {
32
+ var pos, x, y;
33
+ /* Prevent any other actions that may occur when moving over the image */
34
+ e.preventDefault();
35
+ /* Get the cursor's x and y positions: */
36
+ pos = getCursorPos(e);
37
+ x = pos.x;
38
+ y = pos.y;
39
+ /* Prevent the magnifier glass from being positioned outside the image: */
40
+ if (x > img.width - (w / zoom)) {x = img.width - (w / zoom);}
41
+ if (x < w / zoom) {x = w / zoom;}
42
+ if (y > img.height - (h / zoom)) {y = img.height - (h / zoom);}
43
+ if (y < h / zoom) {y = h / zoom;}
44
+ /* Set the position of the magnifier glass: */
45
+ glass.style.left = (x - w) + "px";
46
+ glass.style.top = (y - h) + "px";
47
+ /* Display what the magnifier glass "sees": */
48
+ glass.style.backgroundPosition = "-" + ((x * zoom) - w + bw) + "px -" + ((y * zoom) - h + bw) + "px";
49
+ }
50
+
51
+ function getCursorPos(e) {
52
+ var a, x = 0, y = 0;
53
+ e = e || window.event;
54
+ /* Get the x and y positions of the image: */
55
+ a = img.getBoundingClientRect();
56
+ /* Calculate the cursor's x and y coordinates, relative to the image: */
57
+ x = e.pageX - a.left;
58
+ y = e.pageY - a.top;
59
+ /* Consider any page scrolling: */
60
+ x = x - window.pageXOffset;
61
+ y = y - window.pageYOffset;
62
+ return {x : x, y : y};
63
+ }
64
+
65
+ }
66
+ }(jQuery, window));
changelog.txt CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  = 2.9.0 - 29 April 2020 =
2
 
3
  - New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
1
+ = 2.10.0 - 18 May 2020 =
2
+
3
+ - New: 360° Rotation widget
4
+ - New: Taxonomy List widget
5
+
6
  = 2.9.0 - 29 April 2020 =
7
 
8
  - New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
classes/assets-manager.php CHANGED
@@ -212,6 +212,23 @@ class Assets_Manager {
212
  true
213
  );
214
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
  // Hover css
216
  wp_register_style(
217
  'hover-css',
212
  true
213
  );
214
 
215
+ // Threesixty Rotation js
216
+ wp_register_script(
217
+ 'circlr',
218
+ HAPPY_ADDONS_ASSETS . 'vendor/threesixty-rotation/circlr.min.js',
219
+ ['jquery'],
220
+ HAPPY_ADDONS_VERSION,
221
+ true
222
+ );
223
+ // happy magnify js
224
+ wp_register_script(
225
+ 'ha-simple-magnify',
226
+ HAPPY_ADDONS_ASSETS . 'vendor/threesixty-rotation/happy-simple-magnify.js',
227
+ ['jquery'],
228
+ HAPPY_ADDONS_VERSION,
229
+ true
230
+ );
231
+
232
  // Hover css
233
  wp_register_style(
234
  'hover-css',
classes/select2-handler.php CHANGED
@@ -13,6 +13,7 @@ class Select2_Handler {
13
  public static function init () {
14
  add_action( 'wp_ajax_ha_post_list_query', [ __CLASS__, 'ha_post_list_query' ] );
15
  add_action( 'wp_ajax_ha_post_tab_select_query', [ __CLASS__, 'post_tab_query' ] );
 
16
  }
17
 
18
  /**
@@ -100,4 +101,45 @@ class Select2_Handler {
100
 
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
13
  public static function init () {
14
  add_action( 'wp_ajax_ha_post_list_query', [ __CLASS__, 'ha_post_list_query' ] );
15
  add_action( 'wp_ajax_ha_post_tab_select_query', [ __CLASS__, 'post_tab_query' ] );
16
+ add_action( 'wp_ajax_ha_taxonomy_list_query', [ __CLASS__, 'taxonomy_list_query' ] );
17
  }
18
 
19
  /**
101
 
102
  }
103
 
104
+ /**
105
+ * Return Taxonomy query value
106
+ */
107
+ public static function taxonomy_list_query () {
108
+ $security = check_ajax_referer( 'HappyAddons_Select2_Secret', 'security' );
109
+ if ( ! $security ) return;
110
+ $taxonomy_type = isset( $_POST['taxonomy_type'] ) ? sanitize_text_field( $_POST['taxonomy_type'] ) : '';
111
+ if ( ! $taxonomy_type ) return;
112
+
113
+ $select_type = isset( $_POST['select_type'] ) ? $_POST['select_type'] : false;
114
+ $search = isset( $_POST['q'] ) ? sanitize_text_field( $_POST['q'] ) : '';
115
+ $ids = isset( $_POST['id'] ) ? $_POST['id'] : array();
116
+
117
+ $arg = [
118
+ 'taxonomy' => $taxonomy_type,
119
+ 'hide_empty' => true,
120
+ 'include' => $ids,
121
+ ];
122
+ if($search)
123
+ $arg['search'] = $search;
124
+ $terms = get_terms( $arg );
125
+
126
+ $data = [];
127
+ if ( $select_type === 'choose' ) {
128
+ foreach ($terms as $value){
129
+ $data[] = [
130
+ 'id' => $value->term_id,
131
+ 'text' => $value->name,
132
+ ];
133
+ }
134
+ }
135
+ if ( $select_type === 'selected' ) {
136
+ foreach ($terms as $value){
137
+ $data[ $value->term_id ] = $value->name;
138
+ }
139
+ }
140
+ // return the results in json.
141
+ wp_send_json( $data );
142
+
143
+ }
144
+
145
  }
classes/widgets-manager.php CHANGED
@@ -529,6 +529,26 @@ class Widgets_Manager {
529
  'js' => [],
530
  ],
531
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  ];
533
  }
534
 
529
  'js' => [],
530
  ],
531
  ],
532
+ 'taxonomy-list' => [
533
+ 'title' => __( 'Taxonomy List', 'happy-elementor-addons' ),
534
+ 'icon' => 'hm hm-clip-board',
535
+ 'css' => ['taxonomy-list'],
536
+ 'js' => [],
537
+ 'vendor' => [
538
+ 'css' => [],
539
+ 'js' => [],
540
+ ],
541
+ ],
542
+ 'threesixty-rotation' => [
543
+ 'title' => __( 'Threesixty Rotation', 'happy-elementor-addons' ),
544
+ 'icon' => 'hm hm-3d-rotate',
545
+ 'css' => ['threesixty-rotation'],
546
+ 'js' => [],
547
+ 'vendor' => [
548
+ 'css' => [],
549
+ 'js' => ['circlr','ha-simple-magnify'],
550
+ ],
551
+ ]
552
  ];
553
  }
554
 
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.9.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.9.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.10.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.10.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,10 +1,10 @@
1
  === Happy Addons for Elementor ===
2
  Plugin Name: Happy Addons for Elementor
3
- Version: 2.9.0
4
  Author: weDevs
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
7
- Tags: Elementor Page Builder, Elementor addons, Elementor Widgets, Elementor Editor, Web Page Builder
8
  Requires at least: 4.7
9
  Tested up to: 5.4.1
10
  Stable tag: trunk
@@ -22,7 +22,9 @@ This Elementor based plugin is the latest addition in the list of [weDevs](https
22
 
23
  This Elementor based plugin is the latest addition in the list of [weDevs](https://wedevs.com/) premium product library. Enjoy this freemium (free+premium) page builder for Elementor that consists of cutting-edge widgets that are surely set to take your page building experience with Elementor editor to the next level.
24
 
25
- ### **32+ FREE PREMIUM-LIKE WIDGETS AND MORE ON ITS WAY**
 
 
26
 
27
  Unlike most other Elementor addons, Happy Addons offers itself with many robust free widgets. These free yet important widgets would surely give you a feel of premium widgets making you wonder how come these widgets are free. Let's explore all the magical free widgets of Happy Addons:
28
 
@@ -53,22 +55,16 @@ Unlike most other Elementor addons, Happy Addons offers itself with many robust
53
  - [**Image Grid**](https://demo.happyaddons.com/elementor-image-grid-widget-demo/) – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that's literally going to blow your mind.
54
  - [**Gravity Forms**](https://demo.happyaddons.com/elementor-gravity-form-widget-demo/) – While using Gravity forms, you may want to change the appearance of the form fields. With the Happy Addons, you can spruce up your Gravity forms like a pro.
55
  - [**News Ticker**](https://demo.happyaddons.com/elementor-news-ticker-widget-demo/) – Want to show updates, popular content or messages on your website? With the Happy Elementor Addons Content Ticker widget, you can do this at your disposal with great customizability.
56
- - **[Twitter Fee](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/)d** – Showcase your awesome team decorating in the Twitter feed mode applying various styles, texts, images, and social links.
57
- - **[Bar Chart](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/)**– Display charts in an animated and customizable bar form essentially in case of imaging different data and other relevant statistical visualizations.
58
- - **[Social Icon](https://demo.happyaddons.com/elementor-social-icon-widget-demo/)s** – Beautifully insert and display your social links onto your webpage using this widget to easily connect with your site visitor.
59
- - **[Post Tab](https://demo.happyaddons.com/elementor-post-tab-widget-demo/)**– Enable users to present your post in multiple workable tabs ideally useful for grouped and related content.
60
- - **[Post List](https://demo.happyaddons.com/elementor-post-list-widget-demo/)**– List any post elegantly using this widget displaying them in a creative and innovative manner with multiple options to play with.
 
 
61
 
62
  New free widgets or features are added every month. With all these awesome free widgets, this nifty plugin, not just aims to the trendy and sophisticated WordPress website design philosophy but also effortlessly aligns with any Elementor powered WordPress website design requirements.
63
 
64
- Now have a look at the Happy Addons feature and widget demo explained by our well-wisher, **Adam Preiser, Founder of WP Crafter**
65
-
66
- https://www.youtube.com/watch?v=XpWm7zdvUoM
67
-
68
- He also acknowledged Happy Addons saying:-
69
-
70
- > HappyAddons is a unique Elementor Addon. It might be the best addon package for Elementor.
71
-
72
 
73
  ### **FREE BUILT-IN EXTENSIONS FOR AN UNPRECEDENTED WEB-PAGE DESIGNING EXPERIENCE**
74
 
@@ -197,6 +193,10 @@ Integrating Appsero SDK **DOES NOT IMMEDIATELY** start gathering data, **without
197
 
198
  Learn more about how [Appsero collects and uses this data](https://appsero.com/privacy-policy/). Additionally, read weDevs [privacy policy](https://wedevs.com/privacy-policy/) for better knowledge on it.
199
 
 
 
 
 
200
 
201
  == Frequently Asked Questions ==
202
 
@@ -253,6 +253,11 @@ For a more detailed explanation check out the following documentation
253
 
254
  == Changelog ==
255
 
 
 
 
 
 
256
  = 2.9.0 - 29 April 2020 =
257
 
258
  - New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
1
  === Happy Addons for Elementor ===
2
  Plugin Name: Happy Addons for Elementor
3
+ Version: 2.10.0
4
  Author: weDevs
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
7
+ Tags: Elementor Page Builder, Elementor Addons, Widgets, Editor, Web Page Builder
8
  Requires at least: 4.7
9
  Tested up to: 5.4.1
10
  Stable tag: trunk
22
 
23
  This Elementor based plugin is the latest addition in the list of [weDevs](https://wedevs.com/) premium product library. Enjoy this freemium (free+premium) page builder for Elementor that consists of cutting-edge widgets that are surely set to take your page building experience with Elementor editor to the next level.
24
 
25
+ Officially recommended by Elementor Page Builder! We are now listed on their [official addons page](https://elementor.com/addons/).
26
+
27
+ ### **34+ FREE PREMIUM-LIKE WIDGETS AND MORE ON ITS WAY**
28
 
29
  Unlike most other Elementor addons, Happy Addons offers itself with many robust free widgets. These free yet important widgets would surely give you a feel of premium widgets making you wonder how come these widgets are free. Let's explore all the magical free widgets of Happy Addons:
30
 
55
  - [**Image Grid**](https://demo.happyaddons.com/elementor-image-grid-widget-demo/) – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that's literally going to blow your mind.
56
  - [**Gravity Forms**](https://demo.happyaddons.com/elementor-gravity-form-widget-demo/) – While using Gravity forms, you may want to change the appearance of the form fields. With the Happy Addons, you can spruce up your Gravity forms like a pro.
57
  - [**News Ticker**](https://demo.happyaddons.com/elementor-news-ticker-widget-demo/) – Want to show updates, popular content or messages on your website? With the Happy Elementor Addons Content Ticker widget, you can do this at your disposal with great customizability.
58
+ - [**Twitter Fee**](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/) – Showcase your awesome team decorating in the Twitter feed mode applying various styles, texts, images, and social links.
59
+ - [**Bar Chart**](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/) Display charts in an animated and customizable bar form essentially in case of imaging different data and other relevant statistical visualizations.
60
+ - [**Social Icon**](https://demo.happyaddons.com/elementor-social-icon-widget-demo/) – Beautifully insert and display your social links onto your webpage using this widget to easily connect with your site visitor.
61
+ - [**Post Tab**](https://demo.happyaddons.com/elementor-post-tab-widget-demo/) Enable users to present your post in multiple workable tabs ideally useful for grouped and related content.
62
+ - [**Post List**](https://demo.happyaddons.com/elementor-post-list-widget-demo/) List any post elegantly using this widget displaying them in a creative and innovative manner with multiple options to play with.
63
+ - [**360° Rotation**](https://happyaddons.com/docs/happy-addons-for-elementor/widgets/360-degree-rotation/) - Create 360 Degree rotated images for your Products with this widget. Flexibility to add auto-rotate or click to the rotation functionality. Also, you can add Magnify Button to Zoom-in your pictures.
64
+ - [**Taxonomy List**](https://happyaddons.com/docs/happy-addons-for-elementor/widgets/taxonomy/) - This widget will help you to create a list of posts by sorting categories, tags, post formats.
65
 
66
  New free widgets or features are added every month. With all these awesome free widgets, this nifty plugin, not just aims to the trendy and sophisticated WordPress website design philosophy but also effortlessly aligns with any Elementor powered WordPress website design requirements.
67
 
 
 
 
 
 
 
 
 
68
 
69
  ### **FREE BUILT-IN EXTENSIONS FOR AN UNPRECEDENTED WEB-PAGE DESIGNING EXPERIENCE**
70
 
193
 
194
  Learn more about how [Appsero collects and uses this data](https://appsero.com/privacy-policy/). Additionally, read weDevs [privacy policy](https://wedevs.com/privacy-policy/) for better knowledge on it.
195
 
196
+ ### **ABOUT THE MAKER**
197
+
198
+ Despite Happy Addons for Elementor, being the newest addition to the product line up of [weDevs](https://wedevs.com/), it has already managed to win the heart of its users with a staggering 5-star rating. The plugin is programmed in a way so you don't require any prior coding know-how and is completely cross-browser compatible with mobile responsive feature.
199
+
200
 
201
  == Frequently Asked Questions ==
202
 
253
 
254
  == Changelog ==
255
 
256
+ = 2.10.0 - 18 May 2020 =
257
+
258
+ - New: 360° Rotation widget
259
+ - New: Taxonomy List widget
260
+
261
  = 2.9.0 - 29 April 2020 =
262
 
263
  - New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
widgets/taxonomy-list/widget.php ADDED
@@ -0,0 +1,757 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Taxonomy List widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+
8
+ namespace Happy_Addons\Elementor\Widget;
9
+
10
+ use Elementor\Controls_Manager;
11
+ use Elementor\Group_Control_Border;
12
+ use Elementor\Group_Control_Box_Shadow;
13
+ use Elementor\Group_Control_Typography;
14
+ use Elementor\Icons_Manager;
15
+ use Elementor\Repeater;
16
+ use Elementor\Utils;
17
+ use Elementor\Core\Schemes;
18
+ use Elementor\Group_Control_Background;
19
+ use Happy_Addons\Elementor\Controls\Select2;
20
+ use Elementor\Group_Control_Css_Filter;
21
+
22
+ defined( 'ABSPATH' ) || die();
23
+
24
+ class Taxonomy_List extends Base {
25
+
26
+ /**
27
+ * Get widget title.
28
+ *
29
+ * @return string Widget title.
30
+ * @since 1.0.0
31
+ * @access public
32
+ *
33
+ */
34
+ public function get_title() {
35
+ return __( 'Taxonomy List', 'happy-elementor-addons' );
36
+ }
37
+
38
+ public function get_custom_help_url() {
39
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/taxonomy-list/';
40
+ }
41
+
42
+ /**
43
+ * Get widget icon.
44
+ *
45
+ * @return string Widget icon.
46
+ * @since 1.0.0
47
+ * @access public
48
+ *
49
+ */
50
+ public function get_icon() {
51
+ return 'hm hm-clip-board';
52
+ }
53
+
54
+ public function get_keywords() {
55
+ return [ 'taxonomies', 'taxonomy', 'taxonomy-list', 'category', 'category-list', 'list' ];
56
+ }
57
+
58
+ /**
59
+ * Get a list of Taxonomy
60
+ *
61
+ * @return array
62
+ */
63
+ public static function get_taxonomies( $taxonomy_type = '' ) {
64
+ $list = [];
65
+ if ( $taxonomy_type ) {
66
+ $tax = ha_get_taxonomies( [ 'public' => true, "object_type" => [ $taxonomy_type ] ], 'object', true );
67
+ $list[$taxonomy_type] = count( $tax ) !== 0 ? $tax : '';
68
+ } else {
69
+ $list = ha_get_taxonomies( [ 'public' => true ], 'object', true );
70
+ }
71
+ return $list;
72
+ }
73
+
74
+ protected function register_content_controls() {
75
+ $this->start_controls_section(
76
+ '_section_taxonomy_list',
77
+ [
78
+ 'label' => __( 'List', 'happy-elementor-addons' ),
79
+ 'tab' => Controls_Manager::TAB_CONTENT,
80
+ ]
81
+ );
82
+
83
+ $this->add_control(
84
+ 'taxonomy_type',
85
+ [
86
+ 'label' => __( 'Source', 'happy-elementor-addons' ),
87
+ 'type' => Controls_Manager::SELECT,
88
+ 'options' => $this->get_taxonomies(),
89
+ 'default' => key( $this->get_taxonomies() ),
90
+ ]
91
+ );
92
+
93
+ $repeater = [];
94
+
95
+ foreach ( $this->get_taxonomies() as $key => $value ) {
96
+
97
+ $repeater[$key] = new Repeater();
98
+
99
+ $repeater[$key]->add_control(
100
+ 'title',
101
+ [
102
+ 'label' => __( 'Custom Title', 'happy-elementor-addons' ),
103
+ 'type' => Controls_Manager::TEXT,
104
+ 'label_block' => true,
105
+ 'placeholder' => __( 'Customize Title', 'happy-elementor-addons' ),
106
+ 'dynamic' => [
107
+ 'active' => true,
108
+ ],
109
+ ]
110
+ );
111
+
112
+ $repeater[$key]->add_control(
113
+ 'individual_icon',
114
+ [
115
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
116
+ 'type' => Controls_Manager::CHOOSE,
117
+ 'options' => [
118
+ 'icon' => [
119
+ 'title' => __( 'Icon', 'happy-elementor-addons' ),
120
+ 'icon' => 'fas fa-star',
121
+ ],
122
+ 'image' => [
123
+ 'title' => __( 'Image', 'happy-elementor-addons' ),
124
+ 'icon' => 'fas fa-image',
125
+ ],
126
+ ],
127
+ 'toggle' => true,
128
+ //'default' => 'icon',
129
+ ]
130
+ );
131
+
132
+ $repeater[$key]->add_control(
133
+ 'icon',
134
+ [
135
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
136
+ 'show_label' => false,
137
+ 'type' => Controls_Manager::ICONS,
138
+ 'default' => [
139
+ 'value' => 'far fa-check-circle',
140
+ 'library' => 'reguler'
141
+ ],
142
+ 'condition' => [
143
+ 'individual_icon' => 'icon',
144
+ ]
145
+ ]
146
+ );
147
+
148
+ $repeater[$key]->add_control(
149
+ 'image',
150
+ [
151
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
152
+ 'show_label' => false,
153
+ 'type' => Controls_Manager::MEDIA,
154
+ 'default' => [
155
+ 'url' => Utils::get_placeholder_image_src(),
156
+ ],
157
+ 'dynamic' => [
158
+ 'active' => true,
159
+ ],
160
+ 'condition' => [
161
+ 'individual_icon' => 'image',
162
+ ]
163
+ ]
164
+ );
165
+
166
+ $repeater[$key]->add_control(
167
+ 'tax_id',
168
+ [
169
+ 'label' => __( 'Select ', 'happy-elementor-addons' ) . $value,
170
+ 'label_block' => true,
171
+ 'type' => Select2::TYPE,
172
+ 'multiple' => false,
173
+ 'placeholder' => 'Search ' . $value,
174
+ 'data_options' => [
175
+ 'taxonomy_type' => $key,
176
+ 'action' => 'ha_taxonomy_list_query'
177
+ ],
178
+ ]
179
+ );
180
+
181
+ $this->add_control(
182
+ 'selected_list_' . $key,
183
+ [
184
+ 'label' => '',
185
+ 'type' => Controls_Manager::REPEATER,
186
+ 'fields' => $repeater[$key]->get_controls(),
187
+ 'title_field' => '{{ title }}',
188
+ 'condition' => [
189
+ 'taxonomy_type' => $key
190
+ ],
191
+ ]
192
+ );
193
+ }
194
+
195
+ $this->end_controls_section();
196
+
197
+ //Settings
198
+ $this->start_controls_section(
199
+ '_section_settings',
200
+ [
201
+ 'label' => __( 'Settings', 'happy-elementor-addons' ),
202
+ 'tab' => Controls_Manager::TAB_CONTENT,
203
+ ]
204
+ );
205
+
206
+ $this->add_control(
207
+ 'view',
208
+ [
209
+ 'label' => __( 'Layout', 'happy-elementor-addons' ),
210
+ 'label_block' => false,
211
+ 'type' => Controls_Manager::CHOOSE,
212
+ 'default' => 'list',
213
+ 'options' => [
214
+ 'list' => [
215
+ 'title' => __( 'List', 'happy-elementor-addons' ),
216
+ 'icon' => 'eicon-editor-list-ul',
217
+ ],
218
+ 'inline' => [
219
+ 'title' => __( 'Inline', 'happy-elementor-addons' ),
220
+ 'icon' => 'eicon-ellipsis-h',
221
+ ],
222
+ ],
223
+ 'style_transfer' => true,
224
+ ]
225
+ );
226
+
227
+ $this->add_control(
228
+ 'common_icon_enable',
229
+ [
230
+ 'label' => __( 'Common icon enable?', 'happy-elementor-addons' ),
231
+ 'description' => __( 'If you want to use individual icon disable common icon.', 'happy-elementor-addons' ),
232
+ 'type' => Controls_Manager::SWITCHER,
233
+ 'return_value' => 'yes',
234
+ 'default' => 'yes',
235
+ ]
236
+ );
237
+
238
+ $this->add_control(
239
+ 'common_icon',
240
+ [
241
+ 'label' => __( 'Common Icon', 'happy-elementor-addons' ),
242
+ 'type' => Controls_Manager::CHOOSE,
243
+ 'options' => [
244
+ 'icon' => [
245
+ 'title' => __( 'Icon', 'happy-elementor-addons' ),
246
+ 'icon' => 'fas fa-star',
247
+ ],
248
+ 'image' => [
249
+ 'title' => __( 'Image', 'happy-elementor-addons' ),
250
+ 'icon' => 'fas fa-image',
251
+ ],
252
+ ],
253
+ 'condition' => [
254
+ 'common_icon_enable' => 'yes',
255
+ ],
256
+ 'toggle' => false,
257
+ 'default' => 'icon',
258
+ ]
259
+ );
260
+
261
+ $this->add_control(
262
+ 'icon',
263
+ [
264
+ 'label' => __( 'Icon', 'happy-elementor-addons' ),
265
+ 'description' => __( 'Common icon will overwrite individual icon.', 'happy-elementor-addons' ),
266
+ 'show_label' => false,
267
+ 'type' => Controls_Manager::ICONS,
268
+ 'default' => [
269
+ 'value' => 'far fa-check-circle',
270
+ 'library' => 'reguler'
271
+ ],
272
+ 'condition' => [
273
+ 'common_icon_enable' => 'yes',
274
+ 'common_icon' => 'icon',
275
+ ]
276
+ ]
277
+ );
278
+
279
+ $this->add_control(
280
+ 'image',
281
+ [
282
+ 'label' => __( 'Image', 'happy-elementor-addons' ),
283
+ 'description' => __( 'Common icon will overwrite individual icon.', 'happy-elementor-addons' ),
284
+ 'show_label' => false,
285
+ 'type' => Controls_Manager::MEDIA,
286
+ 'default' => [
287
+ 'url' => Utils::get_placeholder_image_src(),
288
+ ],
289
+ 'dynamic' => [
290
+ 'active' => true,
291
+ ],
292
+ 'condition' => [
293
+ 'common_icon_enable' => 'yes',
294
+ 'common_icon' => 'image',
295
+ ]
296
+ ]
297
+ );
298
+
299
+ $this->add_control(
300
+ 'item_align',
301
+ [
302
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
303
+ 'type' => Controls_Manager::CHOOSE,
304
+ 'options' => [
305
+ 'left' => [
306
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
307
+ 'icon' => 'fa fa-align-left',
308
+ ],
309
+ 'center' => [
310
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
311
+ 'icon' => 'fa fa-align-center',
312
+ ],
313
+ 'right' => [
314
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
315
+ 'icon' => 'fa fa-align-right',
316
+ ],
317
+ ],
318
+ 'toggle' => true,
319
+ 'selectors_dictionary' => [
320
+ 'left' => 'justify-content: flex-start',
321
+ 'center' => 'justify-content: center',
322
+ 'right' => 'justify-content: flex-end',
323
+ ],
324
+ 'selectors' => [
325
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item a' => '{{VALUE}};'
326
+ ],
327
+ 'condition' => [
328
+ 'view' => 'list',
329
+ ]
330
+ ]
331
+ );
332
+
333
+ $this->end_controls_section();
334
+ }
335
+
336
+ protected function register_style_controls() {
337
+
338
+ $this->start_controls_section(
339
+ '_section_taxonomy_list_style',
340
+ [
341
+ 'label' => __( 'List', 'happy-elementor-addons' ),
342
+ 'tab' => Controls_Manager::TAB_STYLE,
343
+ ]
344
+ );
345
+
346
+ $this->add_responsive_control(
347
+ 'list_item_common',
348
+ [
349
+ 'label' => __( 'Common', 'happy-elementor-addons' ),
350
+ 'type' => Controls_Manager::HEADING,
351
+ ]
352
+ );
353
+
354
+ $this->add_responsive_control(
355
+ 'list_item_margin',
356
+ [
357
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
358
+ 'type' => Controls_Manager::DIMENSIONS,
359
+ 'size_units' => [ 'px', '%' ],
360
+ 'selectors' => [
361
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
362
+ ]
363
+ ]
364
+ );
365
+
366
+ $this->add_responsive_control(
367
+ 'list_item_padding',
368
+ [
369
+ 'label' => __( 'Padding', 'happy-elementor-addons' ),
370
+ 'type' => Controls_Manager::DIMENSIONS,
371
+ 'size_units' => [ 'px', 'em', '%' ],
372
+ 'selectors' => [
373
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
374
+ ]
375
+ ]
376
+ );
377
+
378
+ $this->add_group_control(
379
+ Group_Control_Background::get_type(),
380
+ [
381
+ 'name' => 'list_item_background',
382
+ 'label' => __( 'Background', 'happy-elementor-addons' ),
383
+ 'types' => [ 'classic', 'gradient' ],
384
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item',
385
+ ]
386
+ );
387
+
388
+ $this->add_group_control(
389
+ Group_Control_Box_Shadow::get_type(),
390
+ [
391
+ 'name' => 'list_item_box_shadow',
392
+ 'label' => __( 'Box Shadow', 'happy-elementor-addons' ),
393
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item',
394
+ ]
395
+ );
396
+
397
+ $this->add_group_control(
398
+ Group_Control_Border::get_type(),
399
+ [
400
+ 'name' => 'list_item_border',
401
+ 'label' => __( 'Border', 'happy-elementor-addons' ),
402
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item',
403
+ ]
404
+ );
405
+
406
+ $this->add_responsive_control(
407
+ 'list_item_border_radius',
408
+ [
409
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
410
+ 'type' => Controls_Manager::DIMENSIONS,
411
+ 'size_units' => [ 'px', 'em', '%' ],
412
+ 'selectors' => [
413
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
414
+ ]
415
+ ]
416
+ );
417
+
418
+ $this->add_control(
419
+ 'advance_style',
420
+ [
421
+ 'label' => __( 'Advance Style', 'happy-elementor-addons' ),
422
+ 'type' => Controls_Manager::SWITCHER,
423
+ 'label_on' => __( 'On', 'happy-elementor-addons' ),
424
+ 'label_off' => __( 'Off', 'happy-elementor-addons' ),
425
+ 'return_value' => 'yes',
426
+ 'default' => '',
427
+ ]
428
+ );
429
+
430
+ $this->add_responsive_control(
431
+ 'list_item_first',
432
+ [
433
+ 'label' => __( 'First Item', 'happy-elementor-addons' ),
434
+ 'type' => Controls_Manager::HEADING,
435
+ 'separator' => 'before',
436
+ 'condition' => [
437
+ 'advance_style' => 'yes',
438
+ ]
439
+ ]
440
+ );
441
+
442
+ $this->add_responsive_control(
443
+ 'list_item_first_child_margin',
444
+ [
445
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
446
+ 'type' => Controls_Manager::DIMENSIONS,
447
+ 'size_units' => [ 'px', '%' ],
448
+ 'selectors' => [
449
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item:first-child' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
450
+ ],
451
+ 'condition' => [
452
+ 'advance_style' => 'yes',
453
+ ]
454
+ ]
455
+ );
456
+
457
+ $this->add_group_control(
458
+ Group_Control_Border::get_type(),
459
+ [
460
+ 'name' => 'list_item_first_child_border',
461
+ 'label' => __( 'Border', 'happy-elementor-addons' ),
462
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item:first-child',
463
+ 'condition' => [
464
+ 'advance_style' => 'yes',
465
+ ]
466
+ ]
467
+ );
468
+
469
+ $this->add_responsive_control(
470
+ 'list_item_last',
471
+ [
472
+ 'label' => __( 'Last Item', 'happy-elementor-addons' ),
473
+ 'type' => Controls_Manager::HEADING,
474
+ 'separator' => 'before',
475
+ 'condition' => [
476
+ 'advance_style' => 'yes',
477
+ ]
478
+ ]
479
+ );
480
+
481
+ $this->add_responsive_control(
482
+ 'list_item_last_child_margin',
483
+ [
484
+ 'label' => __( 'Margin', 'happy-elementor-addons' ),
485
+ 'type' => Controls_Manager::DIMENSIONS,
486
+ 'size_units' => [ 'px', '%' ],
487
+ 'selectors' => [
488
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item:last-child' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
489
+ ],
490
+ 'condition' => [
491
+ 'advance_style' => 'yes',
492
+ ]
493
+ ]
494
+ );
495
+
496
+ $this->add_group_control(
497
+ Group_Control_Border::get_type(),
498
+ [
499
+ 'name' => 'list_item_last_child_border',
500
+ 'label' => __( 'Border', 'happy-elementor-addons' ),
501
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item:last-child',
502
+ 'condition' => [
503
+ 'advance_style' => 'yes',
504
+ ]
505
+ ]
506
+ );
507
+
508
+ $this->end_controls_section();
509
+ //Title Style
510
+ $this->start_controls_section(
511
+ '_section_taxonomy_list_title_style',
512
+ [
513
+ 'label' => __( 'Title', 'happy-elementor-addons' ),
514
+ 'tab' => Controls_Manager::TAB_STYLE,
515
+ ]
516
+ );
517
+
518
+ $this->add_group_control(
519
+ Group_Control_Typography::get_type(),
520
+ [
521
+ 'name' => 'title_typography',
522
+ 'label' => __( 'Typography', 'happy-elementor-addons' ),
523
+ 'scheme' => Schemes\Typography::TYPOGRAPHY_2,
524
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list-title',
525
+ ]
526
+ );
527
+
528
+ $this->start_controls_tabs( 'title_tabs' );
529
+ $this->start_controls_tab(
530
+ 'title_normal_tab',
531
+ [
532
+ 'label' => __( 'Normal', 'happy-elementor-addons' ),
533
+ ]
534
+ );
535
+
536
+ $this->add_control(
537
+ 'title_color',
538
+ [
539
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
540
+ 'type' => Controls_Manager::COLOR,
541
+ 'selectors' => [
542
+ '{{WRAPPER}} .ha-taxonomy-list-title' => 'color: {{VALUE}}',
543
+ ],
544
+ ]
545
+ );
546
+ $this->end_controls_tab();
547
+
548
+ $this->start_controls_tab(
549
+ 'title_hover_tab',
550
+ [
551
+ 'label' => __( 'Hover', 'happy-elementor-addons' ),
552
+ ]
553
+ );
554
+
555
+ $this->add_control(
556
+ 'title_hvr_color',
557
+ [
558
+ 'label' => __( 'Color', 'happy-elementor-addons' ),
559
+ 'type' => Controls_Manager::COLOR,
560
+ 'selectors' => [
561
+ '{{WRAPPER}} .ha-taxonomy-list .ha-taxonomy-list-item a:hover .ha-taxonomy-list-title' => 'color: {{VALUE}}',
562
+ ],
563
+ ]
564
+ );
565
+ $this->end_controls_tab();
566
+ $this->end_controls_tabs();
567
+
568
+ $this->end_controls_section();
569
+ //List Icon Style
570
+ $this->start_controls_section(
571
+ '_section_icon_style',
572
+ [
573
+ 'label' => __( 'Icon & Image', 'happy-elementor-addons' ),
574
+ 'tab' => Controls_Manager::TAB_STYLE,
575
+ ]
576
+ );
577
+
578
+ $this->add_control(
579
+ 'icon_color',
580
+ [
581
+ 'label' => __( 'Icon Color', 'happy-elementor-addons' ),
582
+ 'type' => Controls_Manager::COLOR,
583
+ 'default' => '',
584
+ 'selectors' => [
585
+ '{{WRAPPER}} span.ha-taxonomy-list-icon' => 'color: {{VALUE}};',
586
+ ],
587
+ ]
588
+ );
589
+
590
+ $this->add_responsive_control(
591
+ 'icon_size',
592
+ [
593
+ 'label' => __( 'Icon Size', 'happy-elementor-addons' ),
594
+ 'type' => Controls_Manager::SLIDER,
595
+ 'selectors' => [
596
+ '{{WRAPPER}} span.ha-taxonomy-list-icon' => 'font-size: {{SIZE}}{{UNIT}};',
597
+ ],
598
+ ]
599
+ );
600
+
601
+ $this->add_responsive_control(
602
+ 'icon_line_height',
603
+ [
604
+ 'label' => __( 'Icon Line Height', 'happy-elementor-addons' ),
605
+ 'type' => Controls_Manager::SLIDER,
606
+ 'selectors' => [
607
+ '{{WRAPPER}} span.ha-taxonomy-list-icon' => 'line-height: {{SIZE}}{{UNIT}};',
608
+ ],
609
+ ]
610
+ );
611
+
612
+ $this->add_responsive_control(
613
+ 'image_width',
614
+ [
615
+ 'label' => __( 'Image Width', 'happy-elementor-addons' ),
616
+ 'type' => Controls_Manager::SLIDER,
617
+ 'range' => [
618
+ 'px' => [
619
+ 'min' => 0,
620
+ 'max' => 1000,
621
+ 'step' => 1,
622
+ ],
623
+ ],
624
+ 'selectors' => [
625
+ '{{WRAPPER}} .ha-taxonomy-list-image img' => 'width: {{SIZE}}{{UNIT}};',
626
+ ],
627
+ ]
628
+ );
629
+
630
+ $this->add_group_control(
631
+ Group_Control_Css_Filter::get_type(),
632
+ [
633
+ 'name' => 'image_css_filter',
634
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list-image img',
635
+ ]
636
+ );
637
+
638
+ $this->add_group_control(
639
+ Group_Control_Border::get_type(),
640
+ [
641
+ 'name' => 'image_boder',
642
+ 'label' => __( 'Border', 'happy-elementor-addons' ),
643
+ 'selector' => '{{WRAPPER}} .ha-taxonomy-list-item a img',
644
+ ]
645
+ );
646
+
647
+ $this->add_responsive_control(
648
+ 'image_boder_radius',
649
+ [
650
+ 'label' => __( 'Border Radius', 'happy-elementor-addons' ),
651
+ 'type' => Controls_Manager::DIMENSIONS,
652
+ 'size_units' => [ 'px', '%' ],
653
+ 'selectors' => [
654
+ '{{WRAPPER}} .ha-taxonomy-list-image img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
655
+ ],
656
+ ]
657
+ );
658
+
659
+ $this->add_responsive_control(
660
+ 'icon_margin_right',
661
+ [
662
+ 'label' => __( 'Margin Right', 'happy-elementor-addons' ),
663
+ 'type' => Controls_Manager::SLIDER,
664
+ 'selectors' => [
665
+ '{{WRAPPER}} span.ha-taxonomy-list-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
666
+ '{{WRAPPER}} span.ha-taxonomy-list-image' => 'margin-right: {{SIZE}}{{UNIT}};',
667
+ ],
668
+ ]
669
+ );
670
+
671
+ $this->end_controls_section();
672
+ }
673
+
674
+ protected function render() {
675
+
676
+ $settings = $this->get_settings_for_display();
677
+ if ( !$settings['taxonomy_type'] ) return;
678
+ $customize_title = [];
679
+ $ids = [];
680
+ $lists = $settings['selected_list_' . $settings['taxonomy_type']];
681
+ if ( !empty( $lists ) ) {
682
+ foreach ( $lists as $index => $value ) {
683
+ $ids[] = $value['tax_id'];
684
+ if ( $value['title'] ) $customize_title[$value['tax_id']] = $value['title'];
685
+ }
686
+ }
687
+ $terms = [];
688
+ if ( count( $ids ) !== 0 ) {
689
+ $args = [
690
+ 'taxonomy' => $settings['taxonomy_type'],
691
+ 'hide_empty' => true,
692
+ 'include' => $ids,
693
+ 'orderby' => 'include',
694
+ ];
695
+ $terms = get_terms( $args );
696
+ }
697
+ $loop_count = count($terms) - 1;
698
+ $this->add_render_attribute( 'wrapper', 'class', [ 'ha-taxonomy-list-wrapper' ] );
699
+ $this->add_render_attribute( 'wrapper-inner', 'class', [ 'ha-taxonomy-list' ] );
700
+ if ( 'inline' === $settings['view'] ) {
701
+ $this->add_render_attribute( 'wrapper-inner', 'class', [ 'ha-taxonomy-list-inline' ] );
702
+ }
703
+ $this->add_render_attribute( 'item', 'class', [ 'ha-taxonomy-list-item' ] );
704
+
705
+ if ( count( $terms ) !== 0 && count( $lists ) !== 0 ) :?>
706
+ <div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
707
+ <ul <?php $this->print_render_attribute_string( 'wrapper-inner' ); ?> >
708
+ <?php foreach ( $lists as $index => $value ):
709
+ if ( !$value['tax_id'] ) continue; ?>
710
+ <li <?php $this->print_render_attribute_string( 'item' ); ?>>
711
+ <a href="<?php echo esc_url( get_term_link( $terms[$index]->term_id ) ); ?>">
712
+ <?php
713
+ $icon_settings = 'yes' === $settings['common_icon_enable'] && !empty( $settings['common_icon'] ) ? $settings['common_icon'] : $value['individual_icon'];
714
+
715
+ $icon = 'yes' === $settings['common_icon_enable'] && !empty( $settings['icon'] ) ? $settings['icon'] : $value['icon'];
716
+
717
+ $image_url = 'yes' === $settings['common_icon_enable'] && !empty( $settings['image']['url'] ) ? $settings['image']['url'] : $value['image']['url'];
718
+ ?>
719
+ <?php if ( $icon_settings ) :
720
+ echo '<span class="ha-taxonomy-list-' . esc_attr( $icon_settings ) . '">';
721
+ if ( 'icon' === $icon_settings && !empty( $icon ) ) :
722
+ Icons_Manager::render_icon( $icon, [ 'aria-hidden' => 'true' ] );
723
+ elseif ( 'image' === $icon_settings && !empty( $image_url ) ) :
724
+ echo '<img src="' . esc_url( $image_url ) . '">';
725
+ endif;
726
+ echo '</span>';
727
+ endif; ?>
728
+ <?php
729
+ //Term Title
730
+ $title = $terms[$index]->name;
731
+ if ( array_key_exists( $terms[$index]->term_id, $customize_title ) ) {
732
+ $title = $customize_title[$terms[$index]->term_id];
733
+ }
734
+ if ( $title ) {
735
+ printf( '<%1$s %2$s>%3$s</%1$s>',
736
+ 'h4',
737
+ 'class="ha-taxonomy-list-title"',
738
+ esc_html( $title )
739
+ );
740
+ }
741
+ ?>
742
+ </a>
743
+ </li>
744
+ <?php if ( $loop_count === $index ) break; ?>
745
+ <?php endforeach; ?>
746
+ </ul>
747
+ </div>
748
+ <?php
749
+ else:
750
+ printf( '%1$s %2$s %3$s',
751
+ __( 'No ', 'happy-elementor-addons' ),
752
+ esc_html( str_replace( '_', ' ', $settings['taxonomy_type'] ) ),
753
+ __( 'found', 'happy-elementor-addons' )
754
+ );
755
+ endif;
756
+ }
757
+ }
widgets/threesixty-rotation/widget.php ADDED
@@ -0,0 +1,580 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Threesixty Rotation widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+
8
+ namespace Happy_Addons\Elementor\Widget;
9
+
10
+ use Elementor\Controls_Manager;
11
+ use Elementor\Group_Control_Border;
12
+ use Elementor\Group_Control_Box_Shadow;
13
+ use Elementor\Group_Control_Text_Shadow;
14
+ use Elementor\Group_Control_Typography;
15
+ use Elementor\Scheme_Typography;
16
+ use Elementor\Utils;
17
+ use Elementor\Group_Control_Background;
18
+
19
+ defined('ABSPATH') || die();
20
+
21
+ class Threesixty_Rotation extends Base {
22
+
23
+ /**
24
+ * Get widget title.
25
+ *
26
+ * @return string Widget title.
27
+ * @since 1.0.0
28
+ * @access public
29
+ *
30
+ */
31
+ public function get_title() {
32
+ return __('360 Rotation', 'happy-elementor-addons');
33
+ }
34
+
35
+ public function get_custom_help_url() {
36
+ return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/threesixty-rotation/';
37
+ }
38
+
39
+ /**
40
+ * Get widget icon.
41
+ *
42
+ * @return string Widget icon.
43
+ * @since 1.0.0
44
+ * @access public
45
+ *
46
+ */
47
+ public function get_icon() {
48
+ return 'hm hm-3d-rotate';
49
+ }
50
+
51
+ public function get_keywords() {
52
+ return ['360 deg view', 'threesixty-rotation', '360', 'slider', 'slider'];
53
+ }
54
+
55
+ protected function register_content_controls() {
56
+ $this->start_controls_section(
57
+ '_section_threesixty_rotation',
58
+ [
59
+ 'label' => __('Threesixty Rotation', 'happy-elementor-addons'),
60
+ 'tab' => Controls_Manager::TAB_CONTENT,
61
+ ]
62
+ );
63
+
64
+ $this->add_control(
65
+ 'images',
66
+ [
67
+ 'label' => __('Gallery', 'happy-elementor-addons'),
68
+ 'type' => Controls_Manager::GALLERY,
69
+ 'dynamic' => [
70
+ 'active' => true,
71
+ ]
72
+ ]
73
+ );
74
+
75
+ $this->end_controls_section();
76
+
77
+ $this->start_controls_section(
78
+ '_section_threesixty_rotation_setting',
79
+ [
80
+ 'label' => __('Settings', 'happy-elementor-addons'),
81
+ 'tab' => Controls_Manager::TAB_CONTENT,
82
+ ]
83
+ );
84
+
85
+ $this->add_control(
86
+ 'auto_play',
87
+ [
88
+ 'label' => __( 'Autoplay', 'happy-elementor-addons' ),
89
+ 'type' => Controls_Manager::SELECT,
90
+ 'default' => 'none',
91
+ 'options' => [
92
+ 'autoplay' => __( 'Autoplay', 'happy-elementor-addons' ),
93
+ 'button' => __( 'Button Play', 'happy-elementor-addons' ),
94
+ 'none' => __( 'None', 'happy-elementor-addons' ),
95
+ ],
96
+ ]
97
+ );
98
+
99
+ $this->add_control(
100
+ 'button_align',
101
+ [
102
+ 'label' => __( 'Button Alignment', 'happy-elementor-addons' ),
103
+ 'type' => Controls_Manager::CHOOSE,
104
+ 'options' => [
105
+ 'left' => [
106
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
107
+ 'icon' => 'fa fa-align-left',
108
+ ],
109
+ 'center' => [
110
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
111
+ 'icon' => 'fa fa-align-center',
112
+ ],
113
+ 'right' => [
114
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
115
+ 'icon' => 'fa fa-align-right',
116
+ ],
117
+ ],
118
+ 'selectors' => [
119
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-threesixty-rotation-autoplay-button' => 'text-align: {{VALUE}};',
120
+ ],
121
+ 'style_transfer' => true,
122
+ 'condition' => [
123
+ 'auto_play' => 'button'
124
+ ]
125
+ ]
126
+ );
127
+
128
+ $this->add_control(
129
+ 'magnify',
130
+ [
131
+ 'label' => __('Magnify', 'happy-elementor-addons'),
132
+ 'type' => Controls_Manager::SWITCHER,
133
+ 'label_on' => __('On', 'happy-elementor-addons'),
134
+ 'label_off' => __('Off', 'happy-elementor-addons'),
135
+ 'return_value' => 'yes',
136
+ 'default' => 'yes',
137
+ ]
138
+ );
139
+
140
+ $this->add_control(
141
+ 'zoom',
142
+ [
143
+ 'label' => __('Magnify Zoom', 'happy-elementor-addons'),
144
+ 'type' => Controls_Manager::NUMBER,
145
+ 'default' => '3',
146
+ 'dynamic' => [
147
+ 'active' => true,
148
+ ],
149
+ 'condition' => [
150
+ 'magnify' => 'yes'
151
+ ]
152
+ ]
153
+ );
154
+
155
+ $this->add_control(
156
+ 'wrapper_align',
157
+ [
158
+ 'label' => __( 'Alignment', 'happy-elementor-addons' ),
159
+ 'type' => Controls_Manager::CHOOSE,
160
+ 'options' => [
161
+ 'left' => [
162
+ 'title' => __( 'Left', 'happy-elementor-addons' ),
163
+ 'icon' => 'fa fa-align-left',
164
+ ],
165
+ 'center' => [
166
+ 'title' => __( 'Center', 'happy-elementor-addons' ),
167
+ 'icon' => 'fa fa-align-center',
168
+ ],
169
+ 'right' => [
170
+ 'title' => __( 'Right', 'happy-elementor-addons' ),
171
+ 'icon' => 'fa fa-align-right',
172
+ ],
173
+ ],
174
+ 'selectors' => [
175
+ '{{WRAPPER}}.ha-threesixty-rotation .elementor-widget-container' => 'text-align: {{VALUE}};',
176
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper' => 'display:inline-block;',
177
+ ],
178
+ 'style_transfer' => true,
179
+ ]
180
+ );
181
+
182
+ $this->end_controls_section();
183
+ }
184
+
185
+ protected function register_style_controls() {
186
+
187
+ $this->start_controls_section(
188
+ '_style_threesixty_rotation_wrapper',
189
+ [
190
+ 'label' => __('Wrapper', 'happy-elementor-addons'),
191
+ 'tab' => Controls_Manager::TAB_STYLE,
192
+ ]
193
+ );
194
+
195
+ $this->add_control(
196
+ 'wrapper_width',
197
+ [
198
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
199
+ 'type' => Controls_Manager::SLIDER,
200
+ 'size_units' => [ 'px', '%' ],
201
+ 'range' => [
202
+ 'px' => [
203
+ 'min' => 0,
204
+ 'max' => 1000,
205
+ 'step' => 1,
206
+ ],
207
+ '%' => [
208
+ 'min' => 0,
209
+ 'max' => 100,
210
+ ],
211
+ ],
212
+ 'selectors' => [
213
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper' => 'width: {{SIZE}}{{UNIT}};',
214
+ ],
215
+ ]
216
+ );
217
+
218
+ $this->add_group_control(
219
+ Group_Control_Background::get_type(),
220
+ [
221
+ 'name' => 'wrapper_background',
222
+ 'label' => __('Background', 'happy-elementor-addons'),
223
+ 'types' => ['classic', 'gradient'],
224
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper',
225
+ ]
226
+ );
227
+
228
+ $this->add_group_control(
229
+ Group_Control_Border::get_type(),
230
+ [
231
+ 'name' => 'wrapper_border',
232
+ 'label' => __('Border', 'happy-elementor-addons'),
233
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper',
234
+ ]
235
+ );
236
+
237
+ $this->add_control(
238
+ 'wrapper_border_radius',
239
+ [
240
+ 'label' => __('Border Radius', 'happy-elementor-addons'),
241
+ 'type' => Controls_Manager::DIMENSIONS,
242
+ 'size_units' => ['px'],
243
+ 'selectors' => [
244
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
245
+ ],
246
+ ]
247
+ );
248
+
249
+ $this->add_group_control(
250
+ Group_Control_Box_Shadow::get_type(),
251
+ [
252
+ 'name' => 'wrapper_box_shadow',
253
+ 'label' => __('Box Shadow', 'happy-elementor-addons'),
254
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper',
255
+ ]
256
+ );
257
+
258
+ $this->add_responsive_control(
259
+ 'wrapper_padding',
260
+ [
261
+ 'label' => __('Padding', 'happy-elementor-addons'),
262
+ 'type' => Controls_Manager::DIMENSIONS,
263
+ 'size_units' => ['px', '%', 'em'],
264
+ 'selectors' => [
265
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
266
+ ],
267
+ ]
268
+ );
269
+
270
+ $this->add_control(
271
+ 'sticky_title_position_left',
272
+ [
273
+ 'label' => __('Sticky Title Position Left', 'happy-elementor-addons'),
274
+ 'type' => Controls_Manager::HIDDEN,
275
+ 'default' => 'left',
276
+ 'selectors' => [
277
+ '(desktop){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'left: {{wrapper_padding.LEFT || 0}}{{wrapper_padding.UNIT}}; right:auto;',
278
+ '(tablet){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'left: {{wrapper_padding_tablet.LEFT}}{{wrapper_padding_tablet.UNIT}}; right:auto;',
279
+ '(mobile){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'left: {{wrapper_padding_mobile.LEFT}}{{wrapper_padding_mobile.UNIT}}; right:auto;',
280
+ ],
281
+ 'condition' => [
282
+ 'sticky_title!' => '',
283
+ 'sticky_title_position' => 'left',
284
+ ]
285
+ ]
286
+ );
287
+
288
+ $this->add_control(
289
+ 'sticky_title_position_right',
290
+ [
291
+ 'label' => __('Sticky Title Position Right', 'happy-elementor-addons'),
292
+ 'type' => Controls_Manager::HIDDEN,
293
+ 'default' => 'right',
294
+ 'selectors' => [
295
+ '(desktop){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'right: {{wrapper_padding.RIGHT || 0}}{{wrapper_padding.UNIT}}; left:auto;',
296
+ '(tablet){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'right: {{wrapper_padding_tablet.RIGHT}}{{wrapper_padding_tablet.UNIT}}; left:auto;',
297
+ '(mobile){{WRAPPER}} .ha-threesixty-rotation-wrapper span.ha-threesixty-rotation-sticky-title' => 'right: {{wrapper_padding_mobile.RIGHT}}{{wrapper_padding_mobile.UNIT}}; left:auto;',
298
+ ],
299
+ 'condition' => [
300
+ 'sticky_title!' => '',
301
+ 'sticky_title_position' => 'right',
302
+ ]
303
+ ]
304
+ );
305
+
306
+ $this->end_controls_section();
307
+
308
+ //Magnify Glass
309
+ $this->start_controls_section(
310
+ '_style_threesixty_rotation_magnify',
311
+ [
312
+ 'label' => __('Magnify', 'happy-elementor-addons'),
313
+ 'tab' => Controls_Manager::TAB_STYLE,
314
+ 'condition' => [
315
+ 'magnify' => 'yes',
316
+ ]
317
+ ]
318
+ );
319
+
320
+ $this->add_responsive_control(
321
+ 'glass_icon_size',
322
+ [
323
+ 'label' => __('Icon Size', 'happy-elementor-addons'),
324
+ 'type' => Controls_Manager::SLIDER,
325
+ 'size_units' => [ 'px'],
326
+ 'range' => [
327
+ 'px' => [
328
+ 'min' => 0,
329
+ 'max' => 200,
330
+ 'step' => 1,
331
+ ],
332
+ ],
333
+ 'selectors' => [
334
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-threesixty-rotation-magnify i' => 'font-size: {{SIZE}}{{UNIT}};',
335
+ ],
336
+ ]
337
+ );
338
+
339
+ $this->add_control(
340
+ 'glass_icon_color',
341
+ [
342
+ 'label' => __('Icon Color', 'happy-elementor-addons'),
343
+ 'type' => Controls_Manager::COLOR,
344
+ 'selectors' => [
345
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-threesixty-rotation-magnify i' => 'color: {{VALUE}};',
346
+ ],
347
+ ]
348
+ );
349
+
350
+ $this->add_responsive_control(
351
+ 'glass_width',
352
+ [
353
+ 'label' => __( 'Width', 'happy-elementor-addons' ),
354
+ 'type' => Controls_Manager::SLIDER,
355
+ 'size_units' => [ 'px', ],
356
+ 'range' => [
357
+ 'px' => [
358
+ 'min' => 0,
359
+ 'max' => 500,
360
+ 'step' => 1,
361
+ ],
362
+ ],
363
+ 'selectors' => [
364
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-img-magnifier-glass' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
365
+ ],
366
+ ]
367
+ );
368
+
369
+ $this->add_group_control(
370
+ Group_Control_Border::get_type(),
371
+ [
372
+ 'name' => 'glass_border',
373
+ 'label' => __('Border', 'happy-elementor-addons'),
374
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-img-magnifier-glass',
375
+ ]
376
+ );
377
+
378
+ $this->add_group_control(
379
+ Group_Control_Box_Shadow::get_type(),
380
+ [
381
+ 'name' => 'glass_box_shadow',
382
+ 'label' => __('Box Shadow', 'happy-elementor-addons'),
383
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper .ha-img-magnifier-glass',
384
+ ]
385
+ );
386
+
387
+ $this->end_controls_section();
388
+
389
+ //AutoPlay Button
390
+ $this->start_controls_section(
391
+ '_style_threesixty_rotation_button',
392
+ [
393
+ 'label' => __('AutoPlay Button', 'happy-elementor-addons'),
394
+ 'tab' => Controls_Manager::TAB_STYLE,
395
+ 'condition' => [
396
+ 'auto_play' => 'button',
397
+ ]
398
+ ]
399
+ );
400
+
401
+ $this->start_controls_tabs('_tabs_button');
402
+
403
+ $this->start_controls_tab(
404
+ '_tab_button_normal',
405
+ [
406
+ 'label' => __('Normal', 'happy-elementor-addons'),
407
+ ]
408
+ );
409
+
410
+ $this->add_control(
411
+ 'button_color',
412
+ [
413
+ 'label' => __('Title Color', 'happy-elementor-addons'),
414
+ 'type' => Controls_Manager::COLOR,
415
+ 'selectors' => [
416
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play' => 'color: {{VALUE}};',
417
+ ],
418
+ ]
419
+ );
420
+
421
+ $this->add_group_control(
422
+ Group_Control_Background::get_type(),
423
+ [
424
+ 'name' => 'button_background',
425
+ 'label' => __('Background', 'happy-elementor-addons'),
426
+ 'types' => ['classic', 'gradient'],
427
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play',
428
+ ]
429
+ );
430
+
431
+ $this->end_controls_tab();
432
+
433
+ $this->start_controls_tab(
434
+ '_tab_button_hover',
435
+ [
436
+ 'label' => __('Hover', 'happy-elementor-addons'),
437
+ ]
438
+ );
439
+
440
+ $this->add_control(
441
+ 'button_hover_color',
442
+ [
443
+ 'label' => __('Title Color', 'happy-elementor-addons'),
444
+ 'type' => Controls_Manager::COLOR,
445
+ 'selectors' => [
446
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play:hover, {{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play:focus' => 'color: {{VALUE}};',
447
+ ],
448
+ ]
449
+ );
450
+
451
+ $this->add_group_control(
452
+ Group_Control_Background::get_type(),
453
+ [
454
+ 'name' => 'button_hover_background',
455
+ 'label' => __('Background', 'happy-elementor-addons'),
456
+ 'types' => ['classic', 'gradient'],
457
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play:hover',
458
+ ]
459
+ );
460
+
461
+ $this->end_controls_tab();
462
+ $this->end_controls_tabs();
463
+
464
+ $this->add_group_control(
465
+ Group_Control_Border::get_type(),
466
+ [
467
+ 'name' => 'button_border',
468
+ 'label' => __('Border', 'happy-elementor-addons'),
469
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play',
470
+ ]
471
+ );
472
+
473
+ $this->add_control(
474
+ 'button_border_radius',
475
+ [
476
+ 'label' => __('Border Radius', 'happy-elementor-addons'),
477
+ 'type' => Controls_Manager::DIMENSIONS,
478
+ 'size_units' => ['px'],
479
+ 'selectors' => [
480
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
481
+ ],
482
+ ]
483
+ );
484
+
485
+ $this->add_group_control(
486
+ Group_Control_Box_Shadow::get_type(),
487
+ [
488
+ 'name' => 'button_box_shadow',
489
+ 'label' => __('Box Shadow', 'happy-elementor-addons'),
490
+ 'selector' => '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play',
491
+ ]
492
+ );
493
+
494
+ $this->add_responsive_control(
495
+ 'button_padding',
496
+ [
497
+ 'label' => __('Padding', 'happy-elementor-addons'),
498
+ 'type' => Controls_Manager::DIMENSIONS,
499
+ 'size_units' => ['px', '%', 'em'],
500
+ 'selectors' => [
501
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
502
+ ],
503
+ ]
504
+ );
505
+
506
+ $this->add_control(
507
+ 'button_space_top',
508
+ [
509
+ 'label' => __( 'Space Top', 'happy-elementor-addons'),
510
+ 'type' => Controls_Manager::SLIDER,
511
+ 'size_units' => [ 'px' ],
512
+ 'range' => [
513
+ 'px' => [
514
+ 'min' => 0,
515
+ 'max' => 100,
516
+ 'step' => 1,
517
+ ],
518
+ ],
519
+ 'selectors' => [
520
+ '{{WRAPPER}} .ha-threesixty-rotation-wrapper button.ha-threesixty-rotation-play' => 'margin-top: {{SIZE}}{{UNIT}};',
521
+ ],
522
+ ]
523
+ );
524
+
525
+ $this->end_controls_section();
526
+ }
527
+
528
+ protected function render() {
529
+
530
+ $settings = $this->get_settings_for_display();
531
+ $this->add_render_attribute('wrapper', 'class', 'ha-threesixty-rotation-wrapper');
532
+ $this->add_render_attribute(
533
+ 'rotation',
534
+ [
535
+ 'class' => 'ha-threesixty-rotation-inner',
536
+ 'id' => 'ha-threesixty-rotation' . $this->get_id(),
537
+ 'data-selector' => 'ha-threesixty-rotation' . $this->get_id()
538
+ ]
539
+ );
540
+ if('autoplay' === $settings['auto_play'] ){
541
+ $this->add_render_attribute('rotation', 'data-autoplay', 'on');
542
+ }
543
+ if ( 'yes' === $settings['magnify'] ) {
544
+ $this->add_render_attribute(
545
+ 'glass',
546
+ [
547
+ 'class' => 'ha-threesixty-rotation-magnify',
548
+ 'data-zoom' => esc_html($settings['zoom'])
549
+ ]
550
+ );
551
+ }
552
+ $svg_url = HAPPY_ADDONS_ASSETS . 'imgs/360_view.svg'
553
+ ?>
554
+
555
+ <div <?php $this->print_render_attribute_string('wrapper'); ?>>
556
+ <div <?php $this->print_render_attribute_string('rotation'); ?>>
557
+ <?php if ('yes' === $settings['magnify']): ?>
558
+ <span <?php $this->print_render_attribute_string('glass'); ?>>
559
+ <i class="fas fa-search"></i>
560
+ </span>
561
+ <?php endif; ?>
562
+ <?php foreach ($settings['images'] as $item) : ?>
563
+ <img data-src="<?php echo esc_url($item['url']); ?>">
564
+ <?php endforeach; ?>
565
+ <div class="ha-threesixty-rotation-360img" style='background-image:url("<?php echo esc_url($svg_url);?>")'></div>
566
+ </div>
567
+ <?php if ('autoplay' === $settings['auto_play'] ) : ?>
568
+ <button class="ha-threesixty-rotation-autoplay"></button>
569
+ <?php endif; ?>
570
+ <?php if ('button' === $settings['auto_play'] ) : ?>
571
+ <div class="ha-threesixty-rotation-autoplay-button">
572
+ <button class="ha-threesixty-rotation-play">
573
+ <i aria-hidden="true" class="hm hm-play-button"></i>
574
+ </button>
575
+ </div>
576
+ <?php endif; ?>
577
+ </div>
578
+ <?php
579
+ }
580
+ }