Version Description
18 May 2020 =
New: 360 Rotation widget
New: Taxonomy List widget
Download this release
Release Info
Developer | thehappymonster |
Plugin | 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 +155 -0
- assets/css/main.min.css +1 -1
- assets/css/widgets/taxonomy-list.min.css +1 -0
- assets/css/widgets/threesixty-rotation.min.css +1 -0
- assets/imgs/360_view.svg +41 -0
- assets/js/happy-addons.js +80 -1
- assets/js/happy-addons.min.js +1 -1
- assets/vendor/threesixty-rotation/circlr.js +182 -0
- assets/vendor/threesixty-rotation/circlr.min.js +2 -0
- assets/vendor/threesixty-rotation/happy-simple-magnify.js +66 -0
- changelog.txt +5 -0
- classes/assets-manager.php +17 -0
- classes/select2-handler.php +42 -0
- classes/widgets-manager.php +20 -0
- plugin.php +2 -2
- readme.txt +21 -16
- widgets/taxonomy-list/widget.php +757 -0
- widgets/threesixty-rotation/widget.php +580 -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.
|
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.
|
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.
|
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
|
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 |
-
|
|
|
|
|
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 |
-
- **
|
57 |
-
- **
|
58 |
-
- **
|
59 |
-
- **
|
60 |
-
- **
|
|
|
|
|
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 |
+
}
|