Elementor Page Builder - Version 1.6.5

Version Description

  • 20.08.2017 =
  • Tweak! - Added compatibility for the future release of Elementor Pro
  • Fix! - Set font size inherit for Heading widget (#2098)
  • Fix! - Anchor links smooth scrolling not working when admin bar is disabled (#2210)
Download this release

Release Info

Developer KingYes
Plugin Icon 128x128 Elementor Page Builder
Version 1.6.5
Comparing to
See all releases

Code changes from version 1.7.0-RC1 to 1.6.5

assets/css/editor-rtl.css CHANGED
@@ -2078,8 +2078,7 @@ body.elementor-editor-preview #elementor-mode-switcher {
2078
  align-items: center;
2079
  border: 1px solid #d5dadf;
2080
  padding: 10px 15px;
2081
- margin-bottom: 10px;
2082
- font-size: 11px; }
2083
  .elementor-revision-item:hover:not(.elementor-revision-current-preview) {
2084
  background-color: rgba(230, 233, 236, 0.3); }
2085
  .elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete {
@@ -2103,6 +2102,9 @@ body.elementor-editor-preview #elementor-mode-switcher {
2103
  .elementor-revision-item__tools-delete {
2104
  cursor: pointer; }
2105
 
 
 
 
2106
  .elementor-revision-meta {
2107
  padding-top: 5px;
2108
  font-size: 10px;
@@ -2111,49 +2113,6 @@ body.elementor-editor-preview #elementor-mode-switcher {
2111
  .elementor-revision-current-preview {
2112
  background-color: #e6e9ec; }
2113
 
2114
- .elementor-history-item {
2115
- display: -webkit-box;
2116
- display: -webkit-flex;
2117
- display: -ms-flexbox;
2118
- display: flex;
2119
- -webkit-box-align: center;
2120
- -webkit-align-items: center;
2121
- -ms-flex-align: center;
2122
- align-items: center;
2123
- border: 1px solid #d5dadf;
2124
- padding: 10px 15px;
2125
- margin-bottom: 10px;
2126
- font-size: 11px;
2127
- line-height: 1.4;
2128
- cursor: pointer; }
2129
- .elementor-history-item:hover {
2130
- background-color: rgba(230, 233, 236, 0.3); }
2131
- .elementor-history-item:hover .elementor-history-item__icon .fa:before {
2132
- content: '\f1da'; }
2133
- .elementor-history-item-applied {
2134
- color: #a4afb7; }
2135
- .elementor-history-item-current {
2136
- background: #e6e9ec;
2137
- cursor: inherit; }
2138
- .elementor-history-item-current .elementor-history-item__icon .fa:before, .elementor-history-item-current:hover .elementor-history-item__icon .fa:before {
2139
- content: '\f00c'; }
2140
- .elementor-history-item__details {
2141
- width: 95%; }
2142
- .elementor-history-item__title {
2143
- font-weight: bold; }
2144
- .elementor-history-item__subtitle, .elementor-history-item__action {
2145
- font-weight: lighter; }
2146
- .elementor-history-item__action {
2147
- font-style: italic;
2148
- text-decoration: underline; }
2149
- .elementor-history-item .__icon {
2150
- float: left; }
2151
-
2152
- .elementor-history-revisions-message {
2153
- font-size: 11px;
2154
- text-align: center;
2155
- padding: 5px 0; }
2156
-
2157
  #elementor-preview {
2158
  background-color: #333;
2159
  position: absolute;
2078
  align-items: center;
2079
  border: 1px solid #d5dadf;
2080
  padding: 10px 15px;
2081
+ margin-bottom: 10px; }
 
2082
  .elementor-revision-item:hover:not(.elementor-revision-current-preview) {
2083
  background-color: rgba(230, 233, 236, 0.3); }
2084
  .elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete {
2102
  .elementor-revision-item__tools-delete {
2103
  cursor: pointer; }
2104
 
2105
+ .elementor-revision-date {
2106
+ font-size: 11px; }
2107
+
2108
  .elementor-revision-meta {
2109
  padding-top: 5px;
2110
  font-size: 10px;
2113
  .elementor-revision-current-preview {
2114
  background-color: #e6e9ec; }
2115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2116
  #elementor-preview {
2117
  background-color: #333;
2118
  position: absolute;
assets/css/editor-rtl.min.css CHANGED
@@ -1,2 +1,2 @@
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
- @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:4}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-left:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}body,html{height:100%}html{background-color:#f1f1f1}iframe,img{border:0 none}li{list-style:none}a,body{text-decoration:none}body{color:#6d7882;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body a{color:#71d7f7}body a:hover{color:#9b0a46}body.elementor-editor-active #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-active #elementor-preview{right:280px}}@media (min-width:1440px){body.elementor-editor-active #elementor-preview{right:300px}}body.elementor-editor-active #elementor-panel{right:0}body.elementor-editor-active #elementor-mode-switcher-preview .fa:before{content:""}body.elementor-editor-preview #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-preview #elementor-panel{right:-280px}}@media (min-width:1440px){body.elementor-editor-preview #elementor-panel{right:-300px}}body.elementor-editor-preview #elementor-panel>.ui-resizable-e,body.elementor-editor-preview #elementor-panel>.ui-resizable-w{display:none}body.elementor-editor-preview #elementor-mode-switcher-preview .fa:before{content:""}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){-webkit-transition:right .5s,width .5s;-o-transition:right .5s,width .5s;transition:right .5s,width .5s}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:#f1f3f5;z-index:4}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:100px}.elementor-loader-wrapper .elementor-loader{height:100px;position:relative}.elementor-loader-wrapper .elementor-loader-box{background-color:#495157;position:absolute;-webkit-animation:a 1.8s linear infinite;animation:a 1.8s linear infinite}.elementor-loader-wrapper .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-wrapper .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(2){top:0;-webkit-animation-delay:-.45s;animation-delay:-.45s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(3){top:40%;-webkit-animation-delay:-.9s;animation-delay:-.9s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(4){bottom:0;-webkit-animation-delay:-1.35s;animation-delay:-1.35s}@-webkit-keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.elementor-loading-title{color:#495157;text-align:center;text-transform:uppercase;margin-top:30px;letter-spacing:7px;font-size:10px;-webkit-animation:b 1.5s linear infinite;animation:b 1.5s linear infinite}@-webkit-keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}@keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}#elementor-preview-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fff}#elementor-preview-loading i{color:#d5dadf;font-size:50px}.select2-dropdown{border-color:#a4afb7}.select2-dropdown .select2-search__field{outline:none}#elementor-fatal-error-dialog button.dialog-ok{color:#71d7f7}#elementor-fatal-error-dialog .dialog-widget-header{font-size:13px;color:#6d7882}#elementor-saved-popup .dialog-message{height:155px;width:155px;background-color:#fff;border-radius:10px}#elementor-saved-popup .elementor-dialog-message{padding:15px}#elementor-saved-popup .elementor-dialog-message .fa{font-size:85px;padding:10px}#elementor-saved-popup .elementor-dialog-message-text{text-transform:uppercase}.elementor-button{outline:none;border:none;border-radius:3px;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.elementor-button:not([disabled]){cursor:pointer}.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.elementor-button.elementor-button-success,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button{color:#fff}.elementor-button.elementor-button-success[disabled],.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button[disabled]{background-color:#c2cbd2}.elementor-button.elementor-button-success:not([disabled]),.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]){background-color:#39b54a}.elementor-button.elementor-button-success:not([disabled]):hover,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover{opacity:.85;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-success:not([disabled]):active,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-go-pro{color:#fff;background-color:#fcb92c}.elementor-button.elementor-edit-template{display:inline-block;margin-top:15px;color:#fff}.elementor-button.elementor-button-default{background-color:#a4afb7;color:#fff;font-size:11px;text-transform:uppercase;padding:6.5px 15px}.elementor-button.elementor-button-default:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-default:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-default:visited{color:#fff}.elementor-button i{margin-left:10px}.elementor-input-style,input,select,textarea{border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-input-style:not(:focus),input:not(:focus),select:not(:focus),textarea:not(:focus){border-color:#d5dadf}.elementor-input-style:focus,input:focus,select:focus,textarea:focus{border-color:#a4afb7}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:#b01b1b}.elementor-input-style,input,textarea{padding:5px 8px}.elementor-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{border:1px solid #d5dadf;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-transition:border-color .05s ease-in-out;-o-transition:.05s border-color ease-in-out;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=radio]:focus{border-color:#a4afb7}input[disabled]{background-color:#e6e9ec;cursor:not-allowed;opacity:1}select{height:27px}.ps-container{-ms-touch-action:none;overflow:hidden!important}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}#nprogress{pointer-events:none}#nprogress .bar{background:#39b54a;position:fixed;z-index:3;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);-ms-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:3;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#39b54a;border-left-color:#39b54a;border-radius:50%;-webkit-animation:c .4s linear infinite;animation:c .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:5}.elementor-panel{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px}.elementor-panel ::-moz-selection{background:#5bc0de;color:#fff}.elementor-panel ::selection{background:#5bc0de;color:#fff}.elementor-panel a{color:#9b0a46;-webkit-transition:none;-o-transition:none;transition:none}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel ::-moz-focus-inner{padding:0;border:0}.elementor-panel :focus{outline:0}.elementor-panel#elementor-panel{position:fixed;height:100%;top:0;bottom:0;overflow:visible;background-color:#e6e9ec}@media (max-width:1439px){.elementor-panel{width:280px}}@media (min-width:1440px){.elementor-panel{width:300px}}.elementor-panel>.ui-resizable-e,.elementor-panel>.ui-resizable-w{position:absolute;top:0;height:100%;width:7px;left:-5px;cursor:ew-resize}.elementor-panel #elementor-panel-inner{position:relative;height:100%;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.elementor-panel .elementor-panel-container{clear:both;padding-left:15px;padding-right:15px}.elementor-panel #elementor-panel-content-wrapper{position:absolute;bottom:40px;top:40px;left:0;width:100%}.elementor-panel .elementor-panel-hide{display:none}.elementor-panel .elementor-panel-heading{display:table;table-layout:fixed;height:40px;padding:0 20px;width:100%;border-bottom:1px solid #e6e9ec;cursor:pointer}.elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before{content:""}.elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before{content:"\f0d7"}.elementor-panel .elementor-panel-heading>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-heading-toggle{width:20px;color:#495157}.elementor-panel .elementor-panel-heading-title{color:#495157;font-weight:700}.elementor-panel .elementor-panel-box{margin-top:10px;background-color:#fff}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-control-title{font-size:12px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .select2-container{width:100%!important}.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{border-color:#d5dadf}.elementor-panel .select2-container.select2-container--focus .select2-selection--multiple,.elementor-panel .select2-container.select2-container--focus .select2-selection--single,.elementor-panel .select2-container.select2-container--open .select2-selection--multiple,.elementor-panel .select2-container.select2-container--open .select2-selection--single{border-color:#a4afb7}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{line-height:1.5;font-size:.9em;border:none;border-radius:0}.elementor-panel .select2-selection--single{height:27px}.elementor-panel .select2-selection__rendered{line-height:27px}.elementor-panel .select2-selection__arrow{height:27px;top:0}.elementor-panel #elementor-controls .pojo-widget-button-collapse{display:none}.elementor-panel .elementor-panel-alert{padding:15px;border-left:5px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:right}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}.elementor-panel .elementor-label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;text-transform:capitalize}.elementor-panel .elementor-label.elementor-label-default{background-color:#a4afb7}.elementor-panel .elementor-label.elementor-label-info{background-color:#5bc0de}.elementor-panel .elementor-label.elementor-label-success{background-color:#5cb85c}.elementor-panel .elementor-label.elementor-label-warning{background-color:#f0ad4e}.elementor-panel .elementor-label.elementor-label-danger{background-color:#d9534f}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box{padding:30px 20px;text-align:center}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-icon{font-size:52px;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-title{margin-top:20px;font-size:16px;font-weight:700}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-message{margin-top:20px;line-height:1.4;font-size:11px}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link{background-color:#fcb92c;color:#fff;padding:7px 25px;margin-top:20px;-webkit-box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link:hover{background-color:#fdca5e}.elementor-panel #elementor-panel-get-pro-elements .elementor-panel-nerd-box-message{text-transform:uppercase}.elementor-panel #elementor-panel-header{display:table;height:40px;width:100%;background-color:#9b0a46;color:#fff}.elementor-panel #elementor-panel-header>*{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-header-button{width:40px}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-header-button .elementor-icon:hover{color:#d5dadf}.elementor-panel #elementor-panel-header-title{font-size:15px}.elementor-panel #elementor-panel-header-title img{width:66px}.elementor-panel #elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:11px;text-transform:uppercase;cursor:pointer}.elementor-panel #elementor-panel-elements{overflow:hidden;padding:0 5px}.elementor-panel .elementor-element-wrapper{float:right;width:50%;padding:5px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-element{border-radius:3px;background-color:#fff;cursor:move}.elementor-panel .elementor-element:hover{-webkit-box-shadow:0 2px 6px rgba(0,0,0,.2);box-shadow:0 2px 6px rgba(0,0,0,.2)}.elementor-panel .elementor-element:hover .icon,.elementor-panel .elementor-element:hover .title{color:#9b0a46}.elementor-panel .elementor-element .icon{font-size:28px;padding-top:15px;color:#556068}.elementor-panel .elementor-element .elementor-element-title-wrapper{display:table;width:100%}.elementor-panel .elementor-element .title{font-size:11px;color:#556068;display:table-cell;vertical-align:middle;height:40px}.elementor-panel #elementor-panel-elements-search-wrapper{position:relative;margin:10px 10px 5px}.elementor-panel #elementor-panel-elements-search-wrapper i{position:absolute;left:0;top:50%;color:#a4afb7;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:left 1s;-o-transition:left 1s;transition:left 1s}.elementor-panel #elementor-panel-elements-search-input{font-size:11px;border-radius:0;padding:10px 0 10px 27px;font-style:italic;color:#a4afb7;border:none;-webkit-transition:all 1s;-o-transition:all 1s;transition:all 1s}.elementor-panel #elementor-panel-elements-search-input:focus{background-color:hsla(0,0%,100%,.7);padding-left:15px}.elementor-panel #elementor-panel-elements-search-input:focus+i{left:15px}.elementor-panel .elementor-panel-category:first-child .panel-elements-category-title{padding-top:14px}.elementor-panel .panel-elements-category-title-basic{display:none}.elementor-panel .panel-elements-category-title{padding:12px 15px;text-transform:uppercase;font-size:11px}.elementor-panel .panel-elements-category-items{overflow:hidden;padding:0 5px}.elementor-panel .elementor-panel-scheme-title{padding:10px 20px;margin-top:10px}.elementor-panel .elementor-panel-scheme-description{padding:20px 20px 0}.elementor-panel .elementor-panel-scheme-buttons{padding:0 20px;display:table;table-layout:fixed;width:100%;height:40px;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-scheme-button-wrapper{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-panel-scheme-button-wrapper:first-child{text-align:right}.elementor-panel .elementor-panel-scheme-button-wrapper:last-child{text-align:left}.elementor-panel .elementor-panel-scheme-save .elementor-button{padding:6px 18px;text-transform:uppercase}.elementor-panel .elementor-panel-scheme-discard .elementor-button,.elementor-panel .elementor-panel-scheme-reset .elementor-button{color:#a4afb7;background:none}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-items{position:relative}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item{display:inline-block}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-left:13px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-left:19px}}.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:4px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:6px}}.elementor-panel .elementor-panel-scheme-color-title{text-align:center;text-transform:uppercase;margin:10px 0;color:#c2cbd2;font-size:8px}.elementor-panel .elementor-panel-scheme-typography-item{display:table;table-layout:fixed;width:100%;margin-bottom:15px}.elementor-panel .elementor-panel-scheme-typography-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-scheme-typography-item-value input,.elementor-panel .elementor-panel-scheme-typography-item-value select{width:100%}.elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open)+.elementor-panel-scheme-typography-items{display:none}.elementor-panel .elementor-panel-scheme-color-system-scheme{margin-bottom:10px}.elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title{font-size:11px;color:#a4afb7;font-style:italic;margin-top:5px}.elementor-panel .elementor-panel-scheme-color-system-items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;overflow:hidden;padding:3px;border-radius:3px;border:1px solid #d5dadf;cursor:pointer}.elementor-panel .elementor-panel-scheme-color-system-items:hover{border:1px solid #a4afb7}.elementor-panel .elementor-panel-scheme-color-system-item{height:20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-panel #elementor-panel-schemes-disabled a:hover{text-decoration:underline}.elementor-panel #elementor-panel-page-menu{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-menu-item{display:table;width:100%;height:50px;cursor:pointer;margin-bottom:1px}.elementor-panel .elementor-panel-menu-item:not(:hover){background-color:#fff}.elementor-panel .elementor-panel-menu-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:55px}.elementor-panel .elementor-panel-menu-item-title{font-weight:500}.elementor-panel .elementor-panel-menu-item-title>span{color:#39b54a}.elementor-panel .elementor-panel-navigation{background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);display:table;table-layout:fixed;width:100%}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{display:table-cell}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a{display:block;text-align:center;padding:12px 0 8px;font-size:10px;color:#6d7882}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before{font-family:FontAwesome;font-size:16px;display:block;margin-bottom:6px}.elementor-panel .elementor-tab-control-content a:before{content:"\f040"}.elementor-panel .elementor-tab-control-style a:before{content:"\f042"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-settings a:before{content:"\f013"}.elementor-panel .elementor-tab-control-responsive a:before{content:"\f10a"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-layout a:before{content:"\f0db"}.elementor-panel .elementor-tab-control-lightbox a:before{content:"\f2d2"}.elementor-panel .elementor-control{background-color:#fff;position:relative;padding:0 20px 15px}.elementor-panel .elementor-control.elementor-control-separator-default:before{content:"";height:1px;display:block;margin-bottom:15px;background-color:#e6e9ec}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp{margin-top:15px}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp:before{background-color:transparent}.elementor-panel .elementor-control.elementor-control-separator-before{padding-top:15px}.elementor-panel .elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:3px;width:100%;top:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:3px;width:100%;bottom:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after+.elementor-control-type-tabs{padding-top:15px}.elementor-panel .elementor-control.elementor-control-deprecated,.elementor-panel .elementor-control.elementor-control-deprecated .elementor-control-field-description{color:#b01b1b}.elementor-panel .elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-hidden-control{display:none}.elementor-panel .elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-panel .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-mobile) .elementor-panel .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-tablet) .elementor-panel .elementor-control.elementor-control-responsive-tablet{display:none}.elementor-panel .elementor-control-wp{line-height:1.5}.elementor-panel .elementor-control-wp p{margin:15px 0}.elementor-panel .elementor-control-field{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:10px}.elementor-panel .elementor-label-block.elementor-control-hidden-label>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-top:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:45%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:55%}.elementor-panel .elementor-control-field-description{margin-top:10px}.elementor-panel .elementor-required{color:#b01b1b}.elementor-panel .elementor-choices{display:table;width:100%;height:27px;background-color:#a4afb7;text-align:center;border-spacing:1px;border-radius:3px}.elementor-panel .elementor-choices input{display:none}.elementor-panel .elementor-choices input:checked+.elementor-choices-label{color:#fff}.elementor-panel .elementor-choices input:not(:checked)+.elementor-choices-label{background-color:#fff;color:#a4afb7}.elementor-panel .elementor-choices .elementor-choices-label{display:table-cell;vertical-align:middle;font-size:12px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;cursor:pointer}.elementor-panel .elementor-slider{display:inline-block;margin-top:10px;height:4px;background-color:#a4afb7;border-radius:5px;position:relative;width:67%}.elementor-panel .elementor-slider .ui-slider-handle{height:16px;width:16px;background-color:#fff;display:inline-block;top:50%;-webkit-transform:translateY(-50%) translateX(-8px);-ms-transform:translateY(-50%) translateX(-8px);transform:translateY(-50%) translateX(-8px);position:absolute;-webkit-box-shadow:1px 1px 6px rgba(0,0,0,.3);box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:50%;cursor:pointer}.elementor-panel .elementor-slider-input{width:33%;float:left}.elementor-panel .elementor-slider-input input{width:80%;float:left}.elementor-panel .elementor-units-choices{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-panel .elementor-units-choices input{display:none}.elementor-panel .elementor-units-choices input:not(:checked)+label{color:#c2cbd2}.elementor-panel .elementor-units-choices input:checked+label{text-decoration:underline}.elementor-panel .elementor-units-choices label{cursor:pointer;padding:0 2px;text-transform:uppercase;font-size:9px}.elementor-panel .elementor-control-responsive-switchers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 5px}.elementor-panel .elementor-responsive-switcher{display:inline-block;border-radius:50%;height:18px;width:18px;background-color:#a4afb7;cursor:pointer;position:relative;margin-right:5px;color:#fff;font-size:8px;text-align:center;-webkit-transition:background-color .5s;-o-transition:background-color .5s;transition:background-color .5s}.elementor-panel .elementor-responsive-switcher:hover{background-color:#c2cbd2}.elementor-panel .elementor-responsive-switcher i{line-height:18px}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher{background:#c2cbd2}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher:not(.elementor-responsive-switcher-desktop){display:none}.elementor-device-mobile .elementor-panel .elementor-responsive-switcher-mobile,.elementor-device-tablet .elementor-panel .elementor-responsive-switcher-tablet{background-color:#71d7f7}.elementor-panel .elementor-update-preview{margin:15px 15px 0;background-color:#e6e9ec;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-update-preview-button-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-panel .elementor-update-preview-button{padding:8px 15px;text-transform:uppercase}.elementor-panel .elementor-control-align .elementor-choices,.elementor-panel .elementor-control-position .elementor-choices,.elementor-panel .elementor-control-text_align .elementor-choices{direction:ltr}.elementor-panel .elementor-control-type-media .elementor-control-media{padding:7px;border:1px solid;height:150px}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover){border-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button{background-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:hover{border-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button{background-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area,.elementor-panel .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media>*{height:100%;cursor:pointer;position:relative}.elementor-panel .elementor-control-type-media .fa-plus-circle{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:20px}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image{opacity:.5}.elementor-panel .elementor-control-type-media .elementor-control-media-delete{position:absolute;bottom:0;left:0;right:0;text-align:center;padding:9.5px;font-size:11px;color:#fff;background-color:#a4afb7;text-transform:uppercase}.elementor-panel .elementor-control-type-media .elementor-control-media-image{height:100%;background-size:cover}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimensions{overflow:hidden}.elementor-panel .elementor-control-type-dimensions li{float:left;width:20%}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-panel .elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;border-color:#a4afb7;height:27px}.elementor-panel .elementor-control-type-dimensions li input{border-left:none;border-radius:0;padding:4px 0}.elementor-panel .elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:#a4afb7}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions{border:1px solid #a4afb7;border-left:none;background-color:#fff;padding:0;outline:none;border-radius:0 3px 3px 0;cursor:pointer}.elementor-panel .elementor-control-type-dimensions li:first-child input{border-left:1px solid #a4afb7;border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimension-label{display:block;text-align:center;color:#d5dadf;font-size:9px;text-transform:uppercase;padding-top:5px}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:#fff}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:#a4afb7}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked{color:#fff}.elementor-panel .elementor-control-type-url .elementor-control-url-external-hide .elementor-control-url-more{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-external-show input{padding-right:46px}.elementor-panel .elementor-control-type-url .elementor-control-input-wrapper{position:relative}.elementor-panel .elementor-control-type-url .elementor-control-url-more{position:absolute;top:0;right:0;height:26px;width:40px;border-left:1px solid;cursor:pointer;font-size:10px;border-radius:0 3px 3px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-panel .elementor-control-type-url .elementor-control-url-more i{font-size:13px}.elementor-panel .elementor-control-type-url .elementor-control-url-more-input,.elementor-panel .elementor-control-type-url .elementor-control-url-more-input:not(:checked)+.elementor-control-url-more-options{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-more-options{padding-top:10px}.elementor-panel .elementor-control-type-url .elementor-control-url-option{padding:5px;font-size:12px}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url],.elementor-panel .elementor-control-type-url input[type=url]{direction:ltr}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:not(:focus)+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:not(:focus)+.elementor-control-url-more{border-color:#d5dadf}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:focus+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:focus+.elementor-control-url-more{border-color:#a4afb7}.elementor-panel .elementor-control-type-section{margin-top:10px;padding:0}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section){padding-top:15px}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:70%}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{height:27px;width:30%}.elementor-panel .elementor-control-type-wysiwyg.elementor-rich-editing-disabled .wp-editor-container{margin-top:10px}.elementor-panel .elementor-control-type-wysiwyg *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .elementor-control-type-wysiwyg .wp-editor-container{border:1px solid #e6e9ec;border-radius:3px}.elementor-panel .elementor-control-type-wysiwyg #insert-media-button{margin-top:7px;height:auto;line-height:1;font-size:10px;padding:3px 7px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-panel .elementor-control-type-wysiwyg .wp-switch-editor{border:none;color:#6d7882;font-size:10px;padding:3px 9px 4px;border-radius:3px 3px 0 0}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-html,.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-panel .elementor-control-type-wysiwyg .quicktags-toolbar{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-panel .elementor-control-type-wysiwyg .elementor-wp-editor{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-control-type-wysiwyg .mce-ico{color:#6d7882;font-size:16px}.elementor-panel .elementor-control-type-wysiwyg .mce-btn{margin-right:0;margin-left:0}.elementor-panel .elementor-control-type-wysiwyg .mce-btn.mce-active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:hover{border-color:#d5dadf}.elementor-panel .elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-panel .elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:#6d7882}.elementor-panel .elementor-control-type-icon .select2-selection__rendered .fa{margin-right:3px}.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnails{overflow:hidden;margin-top:20px;cursor:pointer}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:40px;height:40px;background-size:cover;background-position:50% 50%;float:right;margin-bottom:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail:not(:nth-child(5n)){margin-left:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-add{width:100%;height:30px;color:#fff;background-color:#a4afb7;margin-top:10px;text-transform:uppercase}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-clear{color:#b01b1b;cursor:pointer}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset{border:1px solid #e6e9ec;padding:3px;border-radius:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset){display:inline-block;cursor:pointer;height:50px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) svg{height:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset path{fill:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset svg{display:block;width:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset{padding:10px 0 0 2px;font-size:11px;cursor:pointer;color:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset i{margin-left:8px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{color:#495157;font-weight:700;padding:13.5px 20px;position:relative}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{content:"";position:absolute;left:0;right:0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{top:0;background-color:#e6e9ec;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after{bottom:0;height:1px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{height:10px;-webkit-box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1);box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title{margin:15px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before{height:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input{display:none}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset{border:1px solid #a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset path{fill:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-top:5px;font-style:italic;font-size:11px;color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:70px;float:right}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;float:right;padding-top:4px}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;text-transform:uppercase;margin-top:5px;color:#d5dadf;font-size:9px;text-align:center}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{float:left;height:27px;width:70px}.elementor-panel .elementor-control-type-code{padding:0 10px 15px}.elementor-panel .elementor-control-type-wp_widget .widget-inside{display:block}.elementor-panel .elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-panel .elementor-control-type-tabs{font-size:.8em;color:#a4afb7;text-transform:uppercase;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:30px;border-top:1px solid #a4afb7;border-bottom:1px solid #a4afb7;border-left:1px solid #a4afb7;cursor:pointer}.elementor-panel .elementor-control-type-tab:first-child{border-right:1px solid #a4afb7;border-top-right-radius:3px;border-bottom-right-radius:3px}.elementor-panel .elementor-control-type-tab:last-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.elementor-panel .elementor-control-type-tab.elementor-tab-active{background-color:#a4afb7;color:#fff}.elementor-panel .elementor-tab-close{display:none!important}.elementor-panel .elementor-control-type-repeater,.elementor-panel .elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding:0 10px 15px}.elementor-panel .elementor-control-type-repeater .elementor-control:before,.elementor-panel .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-panel .elementor-control-type-repeater .repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls{border:1px solid #d5dadf;border-top-width:0;padding-top:15px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls .wp-picker-container.wp-picker-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);border-width:0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools{display:table;table-layout:fixed;width:100%;color:#556068;background-color:#d5dadf;height:40px;border-spacing:1px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools:hover{background-color:#a4afb7}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div{display:table-cell;text-align:center;vertical-align:middle;cursor:pointer}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:not(.elementor-repeater-row-handle-sortable){background-color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:hover{opacity:.95}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{text-align:right;padding:0 10px;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .fa{margin-left:5px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{cursor:move;width:10px;color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding:10px}.elementor-panel .elementor-control-type-textarea textarea{display:block}.elementor-panel .elementor-control-type-box_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-box_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-text_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-text_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-title{width:70%}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-input-wrapper{width:30%}.elementor-panel .elementor-control-type-switcher .elementor-control-input-wrapper{text-align:left}.elementor-panel .elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;width:49px;height:20px;background-color:#fff;border-radius:18px;cursor:pointer}.elementor-panel .elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-panel .elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:7px;text-transform:uppercase;background:#eceeef;border-radius:inherit;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity,background;-o-transition-property:opacity,background;transition-property:opacity,background}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after,.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;-webkit-transition:inherit;-o-transition:inherit;transition:inherit}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:3px;color:#a4afb7;text-shadow:0 1px hsla(0,0%,100%,.5)}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:3px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:#71d7f7;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-panel .elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;-webkit-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:30px;-webkit-box-shadow:-1px 1px 5px rgba(0,0,0,.2);box-shadow:-1px 1px 5px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-order .elementor-control-oreder-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-order input{display:none}.elementor-panel .elementor-control-type-order input:checked+.elementor-control-order-label{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}.elementor-panel .elementor-control-type-order select{border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-order select:not(:focus)~.elementor-control-order-label{border-color:#d5dadf}.elementor-panel .elementor-control-type-order select:focus~.elementor-control-order-label{border-color:#a4afb7}.elementor-panel .elementor-control-type-order .elementor-control-order-label{position:relative;padding:0;width:40px;border:1px solid;font-size:10px;border-radius:0 3px 3px 0;margin-left:-3px;background-color:#fff;cursor:pointer}.elementor-panel .elementor-control-type-order .elementor-control-order-label i{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-panel .elementor-control-type-hidden{display:none!important}.elementor-panel .wp-picker-container.wp-picker-active{position:absolute;z-index:1;top:0;left:0;background-color:#fff;border:solid #fff;border-width:0 17px 0 12px;padding-top:10px;-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4)}.elementor-panel .wp-picker-container.wp-picker-active .wp-color-result{float:right}.elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap{padding-left:10px;float:left}.elementor-panel .wp-picker-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-container .iris-picker{border:none}.elementor-panel .wp-color-result{margin:0;width:48px;height:25px;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;padding:0;border-radius:3px;border:1px solid #d5dadf}.elementor-panel .wp-color-result,.elementor-panel .wp-color-result:focus{-webkit-box-shadow:inset 0 0 0 3px #fff;box-shadow:inset 0 0 0 3px #fff}.elementor-panel .wp-color-result.wp-picker-open:after,.elementor-panel .wp-color-result:after{content:none}.elementor-panel .wp-color-result:hover{border:1px solid #a4afb7}.elementor-panel .wp-color-result:active,.elementor-panel .wp-color-result:focus{outline:0}.elementor-panel .wp-picker-clear.button,.elementor-panel .wp-picker-default.button{height:26px;width:48px;padding:0;background-color:#d5dadf;border-radius:0 3px 3px 0;margin:0}.elementor-panel .wp-color-picker{float:left;width:100px;max-width:100px;border-radius:3px 0 0 3px;line-height:1}.elementor-panel .wp-picker-holder *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-open~.wp-picker-holder{clear:both;margin-bottom:15px}.elementor-panel .elementor-control .wp-picker-container:not(.wp-picker-active){float:left}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active{-webkit-transform:translateY(6px);-ms-transform:translateY(6px);transform:translateY(6px)}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active .wp-color-result{margin-right:3px}.elementor-panel #elementor-panel-footer{position:absolute;bottom:0;left:0;right:0;height:40px;background-color:#495157}.elementor-panel #elementor-panel-footer-tools{display:table;table-layout:fixed;width:100%;height:100%}.elementor-panel .elementor-panel-footer-tool{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;color:#a4afb7;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-panel-footer-tool.elementor-open{color:#fff}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover{color:#d5dadf}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#556068;padding:10px;-webkit-box-shadow:-2px -5px 8px rgba(0,0,0,.1);box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:2}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-footer-sub-menu-item{background-color:#495157;display:table;table-layout:fixed;width:100%;cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){margin-bottom:1px}.elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode=mobile-landscape] .fa-mobile{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:rgba(0,0,0,.2)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:rgba(0,0,0,.3)}.elementor-panel .elementor-panel-footer-sub-menu-item>*{display:table-cell;height:40px;vertical-align:middle}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon{width:40px;color:#a4afb7}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title{text-align:right;color:#d5dadf}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description{width:95px;text-align:right;font-size:11px;font-style:italic;color:#a4afb7}.elementor-panel #elementor-panel-footer-help-title{text-align:right;padding:10px 0;color:#d5dadf}.elementor-panel #elementor-panel-footer-save{width:90px;padding:0 10px}.elementor-panel #elementor-panel-footer-save .elementor-button{font-size:11px;text-transform:uppercase;width:100%;height:26px;background-color:#556068;color:#a4afb7}.elementor-panel #elementor-panel-footer-publish .elementor-icon,.elementor-panel #elementor-panel-footer-publish .elementor-title{color:#39b54a}.elementor-panel #elementor-panel-footer-discard .elementor-icon,.elementor-panel #elementor-panel-footer-discard .elementor-title{color:#b01b1b}#elementor-mode-switcher{position:absolute;right:100%;top:50%;width:15px;height:50px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);background-color:#e6e9ec;font-size:15px;-webkit-box-shadow:-3px 1px 5px rgba(0,0,0,.1);box-shadow:-3px 1px 5px rgba(0,0,0,.1);cursor:pointer}#elementor-mode-switcher:hover,body.elementor-editor-preview #elementor-mode-switcher{background-color:#9b0a46;color:#fff}#elementor-mode-switcher-inner,#elementor-mode-switcher-preview{width:100%;height:100%;position:absolute;top:0;left:0}#elementor-mode-switcher-preview{cursor:pointer}#elementor-mode-switcher-preview .fa{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px;font-size:11px}.elementor-revision-item:hover:not(.elementor-revision-current-preview){background-color:rgba(230,233,236,.3)}.elementor-revision-item-loading .elementor-revision-item__tools-delete,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner,.elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-right:15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;cursor:pointer}.elementor-revision-item__tools-delete{cursor:pointer}.elementor-revision-meta{padding-top:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview{background-color:#e6e9ec}.elementor-history-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px;font-size:11px;line-height:1.4;cursor:pointer}.elementor-history-item:hover{background-color:rgba(230,233,236,.3)}.elementor-history-item:hover .elementor-history-item__icon .fa:before{content:"\f1da"}.elementor-history-item-applied{color:#a4afb7}.elementor-history-item-current{background:#e6e9ec;cursor:inherit}.elementor-history-item-current .elementor-history-item__icon .fa:before,.elementor-history-item-current:hover .elementor-history-item__icon .fa:before{content:"\f00c"}.elementor-history-item__details{width:95%}.elementor-history-item__title{font-weight:700}.elementor-history-item__action,.elementor-history-item__subtitle{font-weight:lighter}.elementor-history-item__action{font-style:italic;text-decoration:underline}.elementor-history-item .__icon{float:left}.elementor-history-revisions-message{font-size:11px;text-align:center;padding:5px 0}#elementor-preview{background-color:#333;position:absolute;height:100%;top:0;right:0;border:0}.elementor-device-desktop #elementor-preview{overflow-y:hidden}body:not(.elementor-device-desktop) #elementor-preview{overflow-y:auto}#elementor-preview-responsive-wrapper{position:absolute;top:0;bottom:0;left:0;right:0;-webkit-transition:all .5s ease 0s;-o-transition:all .5s ease 0s;transition:all .5s ease 0s}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%}.elementor-device-tablet #elementor-preview-responsive-wrapper{width:768px;height:1025px;padding:40px 10px 70px}.elementor-device-mobile #elementor-preview-responsive-wrapper{width:360px;height:640px;padding:40px 10px 70px}body:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{border-radius:30px;background-color:#111;margin:30px auto 80px;-webkit-box-sizing:content-box;box-sizing:content-box}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:5}.tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px;text-align:center;border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none}#elementor-introduction .dialog-widget-header{padding:40px 0 0}#elementor-introduction .dialog-widget-content{width:700px;max-width:100%}#elementor-introduction .elementor-video-wrapper{padding-bottom:62.4%}#elementor-introduction .dialog-message{margin-top:40px}#elementor-introduction-title{color:#9b0a46;font-size:27px;font-weight:700}#elementor-introduction-subtitle{margin-top:12px;font-size:16px;color:#a4afb7}#elementor-template-library-modal .dialog-widget-content{width:990px;background-color:#f1f3f5}#elementor-template-library-modal .dialog-widget-header{padding:0;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);position:relative;z-index:1}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .dialog-message{height:630px;max-height:85vh;overflow:auto;padding:15px}#elementor-template-library-modal a,#elementor-template-library-modal a:hover{color:inherit}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-modal a.elementor-template-library-blank-footer-link:hover{color:#9b0a46}#elementor-template-library-modal .elementor-button{text-transform:uppercase}#elementor-template-library-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}#elementor-template-library-header-logo-area{text-align:right;padding-right:15px}#elementor-template-library-header-logo-area>*{float:right}#elementor-template-library-header-logo-area>*>*{vertical-align:middle}#elementor-template-library-header-logo{font-size:15px;text-transform:uppercase;color:#495157;font-weight:700;cursor:pointer}#elementor-template-library-header-logo i{padding-left:10px;color:#9b0a46;font-size:20px}#elementor-template-library-header-menu-area{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px;cursor:pointer}.elementor-template-library-menu-item.elementor-active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}#elementor-template-library-header-items-area{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-template-library-header-item{position:relative;border-right:1px solid #e6e9ec;height:50px;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-header-item:not(:hover){color:#a4afb7}.elementor-template-library-header-item>i{font-size:18px}#elementor-template-library-header-close-modal,#elementor-template-library-header-save{width:56px}#elementor-template-library-header-close-modal,#elementor-template-library-header-preview-insert-wrapper,#elementor-template-library-header-save{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}#elementor-template-library-header-preview-insert-wrapper .elementor-button{padding:8px 14px}#elementor-template-library-header-preview-back{padding:16.5px 0 15px 16.5px;border-left:1px solid #e6e9ec;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-header-preview-back:not(:hover){color:#a4afb7}#elementor-template-library-header-preview-back i{padding-left:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:""}#elementor-template-library-loading .elementor-loading-title{color:#a4afb7}#elementor-template-library-loading .elementor-loader-box{background-color:#d5dadf}#elementor-template-library-templates-container{overflow:hidden}#elementor-template-library-templates-container[data-template-source=local]{-webkit-box-shadow:1px 1px 5px rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.1);margin:15px}#elementor-template-library-templates-container:not([data-template-source=remote])+#elementor-template-library-footer-banner{display:none}.elementor-template-library-template-remote{float:right;width:25%;padding:0 15px;margin-top:15px}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body{position:relative}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{position:absolute;content:"pro";text-transform:uppercase;top:5px;left:5px;background-color:#9b0a46;color:#d5dadf;padding:1px 4px;font-size:9px;border-radius:2px}.elementor-template-library-template-remote .elementor-template-library-template-body{height:250px;border:3px solid #fff;position:relative;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.2)}.elementor-template-library-template-remote .elementor-template-library-template-body:not(:hover) .elementor-template-library-template-controls{opacity:0}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%}.elementor-template-library-template-remote .elementor-template-library-template-controls{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-template-library-template-remote .elementor-template-library-template-action{font-size:11px;width:150px;padding:11px}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:relative;height:180px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;color:#d5dadf;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-template-library-template-remote .elementor-template-library-template-name{margin:13px 0 10px;font-size:12px;text-align:center;color:#6d7882}.elementor-template-library-template-local{background-color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #d5dadf;height:50px;-webkit-transition:background-color .3s linear;-o-transition:background-color .3s linear;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:#fafbfb}.elementor-template-library-template-local:not(:hover) .elementor-template-library-template-controls{visibility:hidden}.elementor-template-library-template-local>*{text-align:start}.elementor-template-library-template-local .elementor-template-library-template-icon{text-align:center;width:6%}.elementor-template-library-template-local .elementor-template-library-template-name{font-size:13px;font-weight:500;width:35%}.elementor-template-library-template-local .elementor-template-library-template-type{color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-controls{direction:ltr;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-template-library-template-local .elementor-template-library-template-controls>*{direction:rtl}.elementor-template-library-template-local .elementor-template-library-template-controls>div{display:inline-block;margin-right:15px;cursor:pointer;font-weight:500;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-controls>div:not(:hover){color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-right:6px}.elementor-template-library-template-local .elementor-template-library-template-delete:hover{color:#b01b1b}.elementor-template-library-template-local .elementor-template-library-template-action{padding:8px 18px;margin:0 20px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{width:1440px;height:150%;-webkit-transform:scale(.666) translateX(25%) translateY(-25%);-ms-transform:scale(.666) translateX(25%) translateY(-25%);transform:scale(.666) translateX(25%) translateY(-25%)}.elementor-template-library-blank-title{font-size:30px;margin-top:55px}.elementor-template-library-blank-excerpt{font-size:18px;color:#a4afb7;margin-top:20px;font-weight:300}#elementor-template-library-save-template-form{margin-top:55px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-save-template-form>*{height:60px;font-size:18px}#elementor-template-library-save-template-name{width:460px;background-color:#fff;font-weight:300;color:#a4afb7;padding-right:25px;border-radius:0 3px 3px 0;border:none}#elementor-template-library-save-template-name:focus{border:1px solid #e6e9ec}#elementor-template-library-save-template-submit{width:150px;border-radius:3px 0 0 3px;font-weight:500}#elementor-template-library-save-template-submit:hover{-webkit-box-shadow:none;box-shadow:none}.elementor-template-library-blank-footer{position:absolute;bottom:90px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);color:#a4afb7;font-size:13px;font-style:italic}#elementor-template-library-footer-banner i{color:#c2cbd2;font-size:56px;margin-top:40px}#elementor-template-library-footer-banner .elementor-excerpt{color:#a4afb7;font-size:15px;font-weight:500;margin:20px 0}#elementor-template-library-templates-empty-icon{font-size:96px;margin-top:40px;color:#d5dadf}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-top:10px}
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
+ @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:4}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-left:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}body,html{height:100%}html{background-color:#f1f1f1}iframe,img{border:0 none}li{list-style:none}a,body{text-decoration:none}body{color:#6d7882;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body a{color:#71d7f7}body a:hover{color:#9b0a46}body.elementor-editor-active #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-active #elementor-preview{right:280px}}@media (min-width:1440px){body.elementor-editor-active #elementor-preview{right:300px}}body.elementor-editor-active #elementor-panel{right:0}body.elementor-editor-active #elementor-mode-switcher-preview .fa:before{content:""}body.elementor-editor-preview #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-preview #elementor-panel{right:-280px}}@media (min-width:1440px){body.elementor-editor-preview #elementor-panel{right:-300px}}body.elementor-editor-preview #elementor-panel>.ui-resizable-e,body.elementor-editor-preview #elementor-panel>.ui-resizable-w{display:none}body.elementor-editor-preview #elementor-mode-switcher-preview .fa:before{content:""}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){-webkit-transition:right .5s,width .5s;-o-transition:right .5s,width .5s;transition:right .5s,width .5s}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:#f1f3f5;z-index:4}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:100px}.elementor-loader-wrapper .elementor-loader{height:100px;position:relative}.elementor-loader-wrapper .elementor-loader-box{background-color:#495157;position:absolute;-webkit-animation:a 1.8s linear infinite;animation:a 1.8s linear infinite}.elementor-loader-wrapper .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-wrapper .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(2){top:0;-webkit-animation-delay:-.45s;animation-delay:-.45s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(3){top:40%;-webkit-animation-delay:-.9s;animation-delay:-.9s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(4){bottom:0;-webkit-animation-delay:-1.35s;animation-delay:-1.35s}@-webkit-keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.elementor-loading-title{color:#495157;text-align:center;text-transform:uppercase;margin-top:30px;letter-spacing:7px;font-size:10px;-webkit-animation:b 1.5s linear infinite;animation:b 1.5s linear infinite}@-webkit-keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}@keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}#elementor-preview-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fff}#elementor-preview-loading i{color:#d5dadf;font-size:50px}.select2-dropdown{border-color:#a4afb7}.select2-dropdown .select2-search__field{outline:none}#elementor-fatal-error-dialog button.dialog-ok{color:#71d7f7}#elementor-fatal-error-dialog .dialog-widget-header{font-size:13px;color:#6d7882}#elementor-saved-popup .dialog-message{height:155px;width:155px;background-color:#fff;border-radius:10px}#elementor-saved-popup .elementor-dialog-message{padding:15px}#elementor-saved-popup .elementor-dialog-message .fa{font-size:85px;padding:10px}#elementor-saved-popup .elementor-dialog-message-text{text-transform:uppercase}.elementor-button{outline:none;border:none;border-radius:3px;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.elementor-button:not([disabled]){cursor:pointer}.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.elementor-button.elementor-button-success,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button{color:#fff}.elementor-button.elementor-button-success[disabled],.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button[disabled]{background-color:#c2cbd2}.elementor-button.elementor-button-success:not([disabled]),.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]){background-color:#39b54a}.elementor-button.elementor-button-success:not([disabled]):hover,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover{opacity:.85;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-success:not([disabled]):active,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-go-pro{color:#fff;background-color:#fcb92c}.elementor-button.elementor-edit-template{display:inline-block;margin-top:15px;color:#fff}.elementor-button.elementor-button-default{background-color:#a4afb7;color:#fff;font-size:11px;text-transform:uppercase;padding:6.5px 15px}.elementor-button.elementor-button-default:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-default:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-default:visited{color:#fff}.elementor-button i{margin-left:10px}.elementor-input-style,input,select,textarea{border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-input-style:not(:focus),input:not(:focus),select:not(:focus),textarea:not(:focus){border-color:#d5dadf}.elementor-input-style:focus,input:focus,select:focus,textarea:focus{border-color:#a4afb7}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:#b01b1b}.elementor-input-style,input,textarea{padding:5px 8px}.elementor-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{border:1px solid #d5dadf;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-transition:border-color .05s ease-in-out;-o-transition:.05s border-color ease-in-out;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=radio]:focus{border-color:#a4afb7}input[disabled]{background-color:#e6e9ec;cursor:not-allowed;opacity:1}select{height:27px}.ps-container{-ms-touch-action:none;overflow:hidden!important}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}#nprogress{pointer-events:none}#nprogress .bar{background:#39b54a;position:fixed;z-index:3;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);-ms-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:3;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#39b54a;border-left-color:#39b54a;border-radius:50%;-webkit-animation:c .4s linear infinite;animation:c .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:5}.elementor-panel{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px}.elementor-panel ::-moz-selection{background:#5bc0de;color:#fff}.elementor-panel ::selection{background:#5bc0de;color:#fff}.elementor-panel a{color:#9b0a46;-webkit-transition:none;-o-transition:none;transition:none}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel ::-moz-focus-inner{padding:0;border:0}.elementor-panel :focus{outline:0}.elementor-panel#elementor-panel{position:fixed;height:100%;top:0;bottom:0;overflow:visible;background-color:#e6e9ec}@media (max-width:1439px){.elementor-panel{width:280px}}@media (min-width:1440px){.elementor-panel{width:300px}}.elementor-panel>.ui-resizable-e,.elementor-panel>.ui-resizable-w{position:absolute;top:0;height:100%;width:7px;left:-5px;cursor:ew-resize}.elementor-panel #elementor-panel-inner{position:relative;height:100%;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.elementor-panel .elementor-panel-container{clear:both;padding-left:15px;padding-right:15px}.elementor-panel #elementor-panel-content-wrapper{position:absolute;bottom:40px;top:40px;left:0;width:100%}.elementor-panel .elementor-panel-hide{display:none}.elementor-panel .elementor-panel-heading{display:table;table-layout:fixed;height:40px;padding:0 20px;width:100%;border-bottom:1px solid #e6e9ec;cursor:pointer}.elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before{content:""}.elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before{content:"\f0d7"}.elementor-panel .elementor-panel-heading>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-heading-toggle{width:20px;color:#495157}.elementor-panel .elementor-panel-heading-title{color:#495157;font-weight:700}.elementor-panel .elementor-panel-box{margin-top:10px;background-color:#fff}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-control-title{font-size:12px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .select2-container{width:100%!important}.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{border-color:#d5dadf}.elementor-panel .select2-container.select2-container--focus .select2-selection--multiple,.elementor-panel .select2-container.select2-container--focus .select2-selection--single,.elementor-panel .select2-container.select2-container--open .select2-selection--multiple,.elementor-panel .select2-container.select2-container--open .select2-selection--single{border-color:#a4afb7}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{line-height:1.5;font-size:.9em;border:none;border-radius:0}.elementor-panel .select2-selection--single{height:27px}.elementor-panel .select2-selection__rendered{line-height:27px}.elementor-panel .select2-selection__arrow{height:27px;top:0}.elementor-panel #elementor-controls .pojo-widget-button-collapse{display:none}.elementor-panel .elementor-panel-alert{padding:15px;border-left:5px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:right}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}.elementor-panel .elementor-label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;text-transform:capitalize}.elementor-panel .elementor-label.elementor-label-default{background-color:#a4afb7}.elementor-panel .elementor-label.elementor-label-info{background-color:#5bc0de}.elementor-panel .elementor-label.elementor-label-success{background-color:#5cb85c}.elementor-panel .elementor-label.elementor-label-warning{background-color:#f0ad4e}.elementor-panel .elementor-label.elementor-label-danger{background-color:#d9534f}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box{padding:30px 20px;text-align:center}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-icon{font-size:52px;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-title{margin-top:20px;font-size:16px;font-weight:700}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-message{margin-top:20px;line-height:1.4;font-size:11px}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link{background-color:#fcb92c;color:#fff;padding:7px 25px;margin-top:20px;-webkit-box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link:hover{background-color:#fdca5e}.elementor-panel #elementor-panel-get-pro-elements .elementor-panel-nerd-box-message{text-transform:uppercase}.elementor-panel #elementor-panel-header{display:table;height:40px;width:100%;background-color:#9b0a46;color:#fff}.elementor-panel #elementor-panel-header>*{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-header-button{width:40px}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-header-button .elementor-icon:hover{color:#d5dadf}.elementor-panel #elementor-panel-header-title{font-size:15px}.elementor-panel #elementor-panel-header-title img{width:66px}.elementor-panel #elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:11px;text-transform:uppercase;cursor:pointer}.elementor-panel #elementor-panel-elements{overflow:hidden;padding:0 5px}.elementor-panel .elementor-element-wrapper{float:right;width:50%;padding:5px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-element{border-radius:3px;background-color:#fff;cursor:move}.elementor-panel .elementor-element:hover{-webkit-box-shadow:0 2px 6px rgba(0,0,0,.2);box-shadow:0 2px 6px rgba(0,0,0,.2)}.elementor-panel .elementor-element:hover .icon,.elementor-panel .elementor-element:hover .title{color:#9b0a46}.elementor-panel .elementor-element .icon{font-size:28px;padding-top:15px;color:#556068}.elementor-panel .elementor-element .elementor-element-title-wrapper{display:table;width:100%}.elementor-panel .elementor-element .title{font-size:11px;color:#556068;display:table-cell;vertical-align:middle;height:40px}.elementor-panel #elementor-panel-elements-search-wrapper{position:relative;margin:10px 10px 5px}.elementor-panel #elementor-panel-elements-search-wrapper i{position:absolute;left:0;top:50%;color:#a4afb7;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:left 1s;-o-transition:left 1s;transition:left 1s}.elementor-panel #elementor-panel-elements-search-input{font-size:11px;border-radius:0;padding:10px 0 10px 27px;font-style:italic;color:#a4afb7;border:none;-webkit-transition:all 1s;-o-transition:all 1s;transition:all 1s}.elementor-panel #elementor-panel-elements-search-input:focus{background-color:hsla(0,0%,100%,.7);padding-left:15px}.elementor-panel #elementor-panel-elements-search-input:focus+i{left:15px}.elementor-panel .elementor-panel-category:first-child .panel-elements-category-title{padding-top:14px}.elementor-panel .panel-elements-category-title-basic{display:none}.elementor-panel .panel-elements-category-title{padding:12px 15px;text-transform:uppercase;font-size:11px}.elementor-panel .panel-elements-category-items{overflow:hidden;padding:0 5px}.elementor-panel .elementor-panel-scheme-title{padding:10px 20px;margin-top:10px}.elementor-panel .elementor-panel-scheme-description{padding:20px 20px 0}.elementor-panel .elementor-panel-scheme-buttons{padding:0 20px;display:table;table-layout:fixed;width:100%;height:40px;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-scheme-button-wrapper{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-panel-scheme-button-wrapper:first-child{text-align:right}.elementor-panel .elementor-panel-scheme-button-wrapper:last-child{text-align:left}.elementor-panel .elementor-panel-scheme-save .elementor-button{padding:6px 18px;text-transform:uppercase}.elementor-panel .elementor-panel-scheme-discard .elementor-button,.elementor-panel .elementor-panel-scheme-reset .elementor-button{color:#a4afb7;background:none}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-items{position:relative}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item{display:inline-block}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-left:13px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-left:19px}}.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:4px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:6px}}.elementor-panel .elementor-panel-scheme-color-title{text-align:center;text-transform:uppercase;margin:10px 0;color:#c2cbd2;font-size:8px}.elementor-panel .elementor-panel-scheme-typography-item{display:table;table-layout:fixed;width:100%;margin-bottom:15px}.elementor-panel .elementor-panel-scheme-typography-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-scheme-typography-item-value input,.elementor-panel .elementor-panel-scheme-typography-item-value select{width:100%}.elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open)+.elementor-panel-scheme-typography-items{display:none}.elementor-panel .elementor-panel-scheme-color-system-scheme{margin-bottom:10px}.elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title{font-size:11px;color:#a4afb7;font-style:italic;margin-top:5px}.elementor-panel .elementor-panel-scheme-color-system-items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;overflow:hidden;padding:3px;border-radius:3px;border:1px solid #d5dadf;cursor:pointer}.elementor-panel .elementor-panel-scheme-color-system-items:hover{border:1px solid #a4afb7}.elementor-panel .elementor-panel-scheme-color-system-item{height:20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-panel #elementor-panel-schemes-disabled a:hover{text-decoration:underline}.elementor-panel #elementor-panel-page-menu{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-menu-item{display:table;width:100%;height:50px;cursor:pointer;margin-bottom:1px}.elementor-panel .elementor-panel-menu-item:not(:hover){background-color:#fff}.elementor-panel .elementor-panel-menu-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:55px}.elementor-panel .elementor-panel-menu-item-title{font-weight:500}.elementor-panel .elementor-panel-menu-item-title>span{color:#39b54a}.elementor-panel .elementor-panel-navigation{background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);display:table;table-layout:fixed;width:100%}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{display:table-cell}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a{display:block;text-align:center;padding:12px 0 8px;font-size:10px;color:#6d7882}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before{font-family:FontAwesome;font-size:16px;display:block;margin-bottom:6px}.elementor-panel .elementor-tab-control-content a:before{content:"\f040"}.elementor-panel .elementor-tab-control-style a:before{content:"\f042"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-settings a:before{content:"\f013"}.elementor-panel .elementor-tab-control-responsive a:before{content:"\f10a"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-layout a:before{content:"\f0db"}.elementor-panel .elementor-tab-control-lightbox a:before{content:"\f2d2"}.elementor-panel .elementor-control{background-color:#fff;position:relative;padding:0 20px 15px}.elementor-panel .elementor-control.elementor-control-separator-default:before{content:"";height:1px;display:block;margin-bottom:15px;background-color:#e6e9ec}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp{margin-top:15px}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp:before{background-color:transparent}.elementor-panel .elementor-control.elementor-control-separator-before{padding-top:15px}.elementor-panel .elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:3px;width:100%;top:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:3px;width:100%;bottom:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after+.elementor-control-type-tabs{padding-top:15px}.elementor-panel .elementor-control.elementor-control-deprecated,.elementor-panel .elementor-control.elementor-control-deprecated .elementor-control-field-description{color:#b01b1b}.elementor-panel .elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-hidden-control{display:none}.elementor-panel .elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-panel .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-mobile) .elementor-panel .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-tablet) .elementor-panel .elementor-control.elementor-control-responsive-tablet{display:none}.elementor-panel .elementor-control-wp{line-height:1.5}.elementor-panel .elementor-control-wp p{margin:15px 0}.elementor-panel .elementor-control-field{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:10px}.elementor-panel .elementor-label-block.elementor-control-hidden-label>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-top:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:45%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:55%}.elementor-panel .elementor-control-field-description{margin-top:10px}.elementor-panel .elementor-required{color:#b01b1b}.elementor-panel .elementor-choices{display:table;width:100%;height:27px;background-color:#a4afb7;text-align:center;border-spacing:1px;border-radius:3px}.elementor-panel .elementor-choices input{display:none}.elementor-panel .elementor-choices input:checked+.elementor-choices-label{color:#fff}.elementor-panel .elementor-choices input:not(:checked)+.elementor-choices-label{background-color:#fff;color:#a4afb7}.elementor-panel .elementor-choices .elementor-choices-label{display:table-cell;vertical-align:middle;font-size:12px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;cursor:pointer}.elementor-panel .elementor-slider{display:inline-block;margin-top:10px;height:4px;background-color:#a4afb7;border-radius:5px;position:relative;width:67%}.elementor-panel .elementor-slider .ui-slider-handle{height:16px;width:16px;background-color:#fff;display:inline-block;top:50%;-webkit-transform:translateY(-50%) translateX(-8px);-ms-transform:translateY(-50%) translateX(-8px);transform:translateY(-50%) translateX(-8px);position:absolute;-webkit-box-shadow:1px 1px 6px rgba(0,0,0,.3);box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:50%;cursor:pointer}.elementor-panel .elementor-slider-input{width:33%;float:left}.elementor-panel .elementor-slider-input input{width:80%;float:left}.elementor-panel .elementor-units-choices{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-panel .elementor-units-choices input{display:none}.elementor-panel .elementor-units-choices input:not(:checked)+label{color:#c2cbd2}.elementor-panel .elementor-units-choices input:checked+label{text-decoration:underline}.elementor-panel .elementor-units-choices label{cursor:pointer;padding:0 2px;text-transform:uppercase;font-size:9px}.elementor-panel .elementor-control-responsive-switchers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 5px}.elementor-panel .elementor-responsive-switcher{display:inline-block;border-radius:50%;height:18px;width:18px;background-color:#a4afb7;cursor:pointer;position:relative;margin-right:5px;color:#fff;font-size:8px;text-align:center;-webkit-transition:background-color .5s;-o-transition:background-color .5s;transition:background-color .5s}.elementor-panel .elementor-responsive-switcher:hover{background-color:#c2cbd2}.elementor-panel .elementor-responsive-switcher i{line-height:18px}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher{background:#c2cbd2}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher:not(.elementor-responsive-switcher-desktop){display:none}.elementor-device-mobile .elementor-panel .elementor-responsive-switcher-mobile,.elementor-device-tablet .elementor-panel .elementor-responsive-switcher-tablet{background-color:#71d7f7}.elementor-panel .elementor-update-preview{margin:15px 15px 0;background-color:#e6e9ec;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-update-preview-button-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-panel .elementor-update-preview-button{padding:8px 15px;text-transform:uppercase}.elementor-panel .elementor-control-align .elementor-choices,.elementor-panel .elementor-control-position .elementor-choices,.elementor-panel .elementor-control-text_align .elementor-choices{direction:ltr}.elementor-panel .elementor-control-type-media .elementor-control-media{padding:7px;border:1px solid;height:150px}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover){border-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button{background-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:hover{border-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button{background-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area,.elementor-panel .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media>*{height:100%;cursor:pointer;position:relative}.elementor-panel .elementor-control-type-media .fa-plus-circle{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:20px}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image{opacity:.5}.elementor-panel .elementor-control-type-media .elementor-control-media-delete{position:absolute;bottom:0;left:0;right:0;text-align:center;padding:9.5px;font-size:11px;color:#fff;background-color:#a4afb7;text-transform:uppercase}.elementor-panel .elementor-control-type-media .elementor-control-media-image{height:100%;background-size:cover}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimensions{overflow:hidden}.elementor-panel .elementor-control-type-dimensions li{float:left;width:20%}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-panel .elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;border-color:#a4afb7;height:27px}.elementor-panel .elementor-control-type-dimensions li input{border-left:none;border-radius:0;padding:4px 0}.elementor-panel .elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:#a4afb7}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions{border:1px solid #a4afb7;border-left:none;background-color:#fff;padding:0;outline:none;border-radius:0 3px 3px 0;cursor:pointer}.elementor-panel .elementor-control-type-dimensions li:first-child input{border-left:1px solid #a4afb7;border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimension-label{display:block;text-align:center;color:#d5dadf;font-size:9px;text-transform:uppercase;padding-top:5px}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:#fff}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:#a4afb7}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked{color:#fff}.elementor-panel .elementor-control-type-url .elementor-control-url-external-hide .elementor-control-url-more{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-external-show input{padding-right:46px}.elementor-panel .elementor-control-type-url .elementor-control-input-wrapper{position:relative}.elementor-panel .elementor-control-type-url .elementor-control-url-more{position:absolute;top:0;right:0;height:26px;width:40px;border-left:1px solid;cursor:pointer;font-size:10px;border-radius:0 3px 3px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-panel .elementor-control-type-url .elementor-control-url-more i{font-size:13px}.elementor-panel .elementor-control-type-url .elementor-control-url-more-input,.elementor-panel .elementor-control-type-url .elementor-control-url-more-input:not(:checked)+.elementor-control-url-more-options{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-more-options{padding-top:10px}.elementor-panel .elementor-control-type-url .elementor-control-url-option{padding:5px;font-size:12px}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url],.elementor-panel .elementor-control-type-url input[type=url]{direction:ltr}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:not(:focus)+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:not(:focus)+.elementor-control-url-more{border-color:#d5dadf}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:focus+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:focus+.elementor-control-url-more{border-color:#a4afb7}.elementor-panel .elementor-control-type-section{margin-top:10px;padding:0}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section){padding-top:15px}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:70%}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{height:27px;width:30%}.elementor-panel .elementor-control-type-wysiwyg.elementor-rich-editing-disabled .wp-editor-container{margin-top:10px}.elementor-panel .elementor-control-type-wysiwyg *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .elementor-control-type-wysiwyg .wp-editor-container{border:1px solid #e6e9ec;border-radius:3px}.elementor-panel .elementor-control-type-wysiwyg #insert-media-button{margin-top:7px;height:auto;line-height:1;font-size:10px;padding:3px 7px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-panel .elementor-control-type-wysiwyg .wp-switch-editor{border:none;color:#6d7882;font-size:10px;padding:3px 9px 4px;border-radius:3px 3px 0 0}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-html,.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-panel .elementor-control-type-wysiwyg .quicktags-toolbar{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-panel .elementor-control-type-wysiwyg .elementor-wp-editor{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-control-type-wysiwyg .mce-ico{color:#6d7882;font-size:16px}.elementor-panel .elementor-control-type-wysiwyg .mce-btn{margin-right:0;margin-left:0}.elementor-panel .elementor-control-type-wysiwyg .mce-btn.mce-active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:hover{border-color:#d5dadf}.elementor-panel .elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-panel .elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:#6d7882}.elementor-panel .elementor-control-type-icon .select2-selection__rendered .fa{margin-right:3px}.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnails{overflow:hidden;margin-top:20px;cursor:pointer}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:40px;height:40px;background-size:cover;background-position:50% 50%;float:right;margin-bottom:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail:not(:nth-child(5n)){margin-left:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-add{width:100%;height:30px;color:#fff;background-color:#a4afb7;margin-top:10px;text-transform:uppercase}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-clear{color:#b01b1b;cursor:pointer}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset{border:1px solid #e6e9ec;padding:3px;border-radius:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset){display:inline-block;cursor:pointer;height:50px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) svg{height:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset path{fill:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset svg{display:block;width:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset{padding:10px 0 0 2px;font-size:11px;cursor:pointer;color:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset i{margin-left:8px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{color:#495157;font-weight:700;padding:13.5px 20px;position:relative}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{content:"";position:absolute;left:0;right:0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{top:0;background-color:#e6e9ec;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after{bottom:0;height:1px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{height:10px;-webkit-box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1);box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title{margin:15px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before{height:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input{display:none}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset{border:1px solid #a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset path{fill:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-top:5px;font-style:italic;font-size:11px;color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:70px;float:right}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;float:right;padding-top:4px}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;text-transform:uppercase;margin-top:5px;color:#d5dadf;font-size:9px;text-align:center}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{float:left;height:27px;width:70px}.elementor-panel .elementor-control-type-code{padding:0 10px 15px}.elementor-panel .elementor-control-type-wp_widget .widget-inside{display:block}.elementor-panel .elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-panel .elementor-control-type-tabs{font-size:.8em;color:#a4afb7;text-transform:uppercase;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:30px;border-top:1px solid #a4afb7;border-bottom:1px solid #a4afb7;border-left:1px solid #a4afb7;cursor:pointer}.elementor-panel .elementor-control-type-tab:first-child{border-right:1px solid #a4afb7;border-top-right-radius:3px;border-bottom-right-radius:3px}.elementor-panel .elementor-control-type-tab:last-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.elementor-panel .elementor-control-type-tab.elementor-tab-active{background-color:#a4afb7;color:#fff}.elementor-panel .elementor-tab-close{display:none!important}.elementor-panel .elementor-control-type-repeater,.elementor-panel .elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding:0 10px 15px}.elementor-panel .elementor-control-type-repeater .elementor-control:before,.elementor-panel .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-panel .elementor-control-type-repeater .repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls{border:1px solid #d5dadf;border-top-width:0;padding-top:15px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls .wp-picker-container.wp-picker-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);border-width:0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools{display:table;table-layout:fixed;width:100%;color:#556068;background-color:#d5dadf;height:40px;border-spacing:1px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools:hover{background-color:#a4afb7}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div{display:table-cell;text-align:center;vertical-align:middle;cursor:pointer}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:not(.elementor-repeater-row-handle-sortable){background-color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:hover{opacity:.95}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{text-align:right;padding:0 10px;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .fa{margin-left:5px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{cursor:move;width:10px;color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding:10px}.elementor-panel .elementor-control-type-textarea textarea{display:block}.elementor-panel .elementor-control-type-box_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-box_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-text_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-text_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-title{width:70%}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-input-wrapper{width:30%}.elementor-panel .elementor-control-type-switcher .elementor-control-input-wrapper{text-align:left}.elementor-panel .elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;width:49px;height:20px;background-color:#fff;border-radius:18px;cursor:pointer}.elementor-panel .elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-panel .elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:7px;text-transform:uppercase;background:#eceeef;border-radius:inherit;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity,background;-o-transition-property:opacity,background;transition-property:opacity,background}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after,.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;-webkit-transition:inherit;-o-transition:inherit;transition:inherit}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:3px;color:#a4afb7;text-shadow:0 1px hsla(0,0%,100%,.5)}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:3px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:#71d7f7;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-panel .elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;-webkit-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:30px;-webkit-box-shadow:-1px 1px 5px rgba(0,0,0,.2);box-shadow:-1px 1px 5px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-order .elementor-control-oreder-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-order input{display:none}.elementor-panel .elementor-control-type-order input:checked+.elementor-control-order-label{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}.elementor-panel .elementor-control-type-order select{border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-order select:not(:focus)~.elementor-control-order-label{border-color:#d5dadf}.elementor-panel .elementor-control-type-order select:focus~.elementor-control-order-label{border-color:#a4afb7}.elementor-panel .elementor-control-type-order .elementor-control-order-label{position:relative;padding:0;width:40px;border:1px solid;font-size:10px;border-radius:0 3px 3px 0;margin-left:-3px;background-color:#fff;cursor:pointer}.elementor-panel .elementor-control-type-order .elementor-control-order-label i{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-panel .elementor-control-type-hidden{display:none!important}.elementor-panel .wp-picker-container.wp-picker-active{position:absolute;z-index:1;top:0;left:0;background-color:#fff;border:solid #fff;border-width:0 17px 0 12px;padding-top:10px;-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4)}.elementor-panel .wp-picker-container.wp-picker-active .wp-color-result{float:right}.elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap{padding-left:10px;float:left}.elementor-panel .wp-picker-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-container .iris-picker{border:none}.elementor-panel .wp-color-result{margin:0;width:48px;height:25px;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;padding:0;border-radius:3px;border:1px solid #d5dadf}.elementor-panel .wp-color-result,.elementor-panel .wp-color-result:focus{-webkit-box-shadow:inset 0 0 0 3px #fff;box-shadow:inset 0 0 0 3px #fff}.elementor-panel .wp-color-result.wp-picker-open:after,.elementor-panel .wp-color-result:after{content:none}.elementor-panel .wp-color-result:hover{border:1px solid #a4afb7}.elementor-panel .wp-color-result:active,.elementor-panel .wp-color-result:focus{outline:0}.elementor-panel .wp-picker-clear.button,.elementor-panel .wp-picker-default.button{height:26px;width:48px;padding:0;background-color:#d5dadf;border-radius:0 3px 3px 0;margin:0}.elementor-panel .wp-color-picker{float:left;width:100px;max-width:100px;border-radius:3px 0 0 3px;line-height:1}.elementor-panel .wp-picker-holder *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-open~.wp-picker-holder{clear:both;margin-bottom:15px}.elementor-panel .elementor-control .wp-picker-container:not(.wp-picker-active){float:left}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active{-webkit-transform:translateY(6px);-ms-transform:translateY(6px);transform:translateY(6px)}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active .wp-color-result{margin-right:3px}.elementor-panel #elementor-panel-footer{position:absolute;bottom:0;left:0;right:0;height:40px;background-color:#495157}.elementor-panel #elementor-panel-footer-tools{display:table;table-layout:fixed;width:100%;height:100%}.elementor-panel .elementor-panel-footer-tool{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;color:#a4afb7;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-panel-footer-tool.elementor-open{color:#fff}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover{color:#d5dadf}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#556068;padding:10px;-webkit-box-shadow:-2px -5px 8px rgba(0,0,0,.1);box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:2}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-footer-sub-menu-item{background-color:#495157;display:table;table-layout:fixed;width:100%;cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){margin-bottom:1px}.elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode=mobile-landscape] .fa-mobile{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:rgba(0,0,0,.2)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:rgba(0,0,0,.3)}.elementor-panel .elementor-panel-footer-sub-menu-item>*{display:table-cell;height:40px;vertical-align:middle}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon{width:40px;color:#a4afb7}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title{text-align:right;color:#d5dadf}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description{width:95px;text-align:right;font-size:11px;font-style:italic;color:#a4afb7}.elementor-panel #elementor-panel-footer-help-title{text-align:right;padding:10px 0;color:#d5dadf}.elementor-panel #elementor-panel-footer-save{width:90px;padding:0 10px}.elementor-panel #elementor-panel-footer-save .elementor-button{font-size:11px;text-transform:uppercase;width:100%;height:26px;background-color:#556068;color:#a4afb7}.elementor-panel #elementor-panel-footer-publish .elementor-icon,.elementor-panel #elementor-panel-footer-publish .elementor-title{color:#39b54a}.elementor-panel #elementor-panel-footer-discard .elementor-icon,.elementor-panel #elementor-panel-footer-discard .elementor-title{color:#b01b1b}#elementor-mode-switcher{position:absolute;right:100%;top:50%;width:15px;height:50px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);background-color:#e6e9ec;font-size:15px;-webkit-box-shadow:-3px 1px 5px rgba(0,0,0,.1);box-shadow:-3px 1px 5px rgba(0,0,0,.1);cursor:pointer}#elementor-mode-switcher:hover,body.elementor-editor-preview #elementor-mode-switcher{background-color:#9b0a46;color:#fff}#elementor-mode-switcher-inner,#elementor-mode-switcher-preview{width:100%;height:100%;position:absolute;top:0;left:0}#elementor-mode-switcher-preview{cursor:pointer}#elementor-mode-switcher-preview .fa{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px}.elementor-revision-item:hover:not(.elementor-revision-current-preview){background-color:rgba(230,233,236,.3)}.elementor-revision-item-loading .elementor-revision-item__tools-delete,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner,.elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-right:15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;cursor:pointer}.elementor-revision-item__tools-delete{cursor:pointer}.elementor-revision-date{font-size:11px}.elementor-revision-meta{padding-top:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview{background-color:#e6e9ec}#elementor-preview{background-color:#333;position:absolute;height:100%;top:0;right:0;border:0}.elementor-device-desktop #elementor-preview{overflow-y:hidden}body:not(.elementor-device-desktop) #elementor-preview{overflow-y:auto}#elementor-preview-responsive-wrapper{position:absolute;top:0;bottom:0;left:0;right:0;-webkit-transition:all .5s ease 0s;-o-transition:all .5s ease 0s;transition:all .5s ease 0s}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%}.elementor-device-tablet #elementor-preview-responsive-wrapper{width:768px;height:1025px;padding:40px 10px 70px}.elementor-device-mobile #elementor-preview-responsive-wrapper{width:360px;height:640px;padding:40px 10px 70px}body:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{border-radius:30px;background-color:#111;margin:30px auto 80px;-webkit-box-sizing:content-box;box-sizing:content-box}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:5}.tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px;text-align:center;border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none}#elementor-introduction .dialog-widget-header{padding:40px 0 0}#elementor-introduction .dialog-widget-content{width:700px;max-width:100%}#elementor-introduction .elementor-video-wrapper{padding-bottom:62.4%}#elementor-introduction .dialog-message{margin-top:40px}#elementor-introduction-title{color:#9b0a46;font-size:27px;font-weight:700}#elementor-introduction-subtitle{margin-top:12px;font-size:16px;color:#a4afb7}#elementor-template-library-modal .dialog-widget-content{width:990px;background-color:#f1f3f5}#elementor-template-library-modal .dialog-widget-header{padding:0;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);position:relative;z-index:1}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .dialog-message{height:630px;max-height:85vh;overflow:auto;padding:15px}#elementor-template-library-modal a,#elementor-template-library-modal a:hover{color:inherit}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-modal a.elementor-template-library-blank-footer-link:hover{color:#9b0a46}#elementor-template-library-modal .elementor-button{text-transform:uppercase}#elementor-template-library-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}#elementor-template-library-header-logo-area{text-align:right;padding-right:15px}#elementor-template-library-header-logo-area>*{float:right}#elementor-template-library-header-logo-area>*>*{vertical-align:middle}#elementor-template-library-header-logo{font-size:15px;text-transform:uppercase;color:#495157;font-weight:700;cursor:pointer}#elementor-template-library-header-logo i{padding-left:10px;color:#9b0a46;font-size:20px}#elementor-template-library-header-menu-area{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px;cursor:pointer}.elementor-template-library-menu-item.elementor-active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}#elementor-template-library-header-items-area{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-template-library-header-item{position:relative;border-right:1px solid #e6e9ec;height:50px;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-header-item:not(:hover){color:#a4afb7}.elementor-template-library-header-item>i{font-size:18px}#elementor-template-library-header-close-modal,#elementor-template-library-header-save{width:56px}#elementor-template-library-header-close-modal,#elementor-template-library-header-preview-insert-wrapper,#elementor-template-library-header-save{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}#elementor-template-library-header-preview-insert-wrapper .elementor-button{padding:8px 14px}#elementor-template-library-header-preview-back{padding:16.5px 0 15px 16.5px;border-left:1px solid #e6e9ec;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-header-preview-back:not(:hover){color:#a4afb7}#elementor-template-library-header-preview-back i{padding-left:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:""}#elementor-template-library-loading .elementor-loading-title{color:#a4afb7}#elementor-template-library-loading .elementor-loader-box{background-color:#d5dadf}#elementor-template-library-templates-container{overflow:hidden}#elementor-template-library-templates-container[data-template-source=local]{-webkit-box-shadow:1px 1px 5px rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.1);margin:15px}#elementor-template-library-templates-container:not([data-template-source=remote])+#elementor-template-library-footer-banner{display:none}.elementor-template-library-template-remote{float:right;width:25%;padding:0 15px;margin-top:15px}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body{position:relative}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{position:absolute;content:"pro";text-transform:uppercase;top:5px;left:5px;background-color:#9b0a46;color:#d5dadf;padding:1px 4px;font-size:9px;border-radius:2px}.elementor-template-library-template-remote .elementor-template-library-template-body{height:250px;border:3px solid #fff;position:relative;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.2)}.elementor-template-library-template-remote .elementor-template-library-template-body:not(:hover) .elementor-template-library-template-controls{opacity:0}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%}.elementor-template-library-template-remote .elementor-template-library-template-controls{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-template-library-template-remote .elementor-template-library-template-action{font-size:11px;width:150px;padding:11px}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:relative;height:180px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;color:#d5dadf;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-template-library-template-remote .elementor-template-library-template-name{margin:13px 0 10px;font-size:12px;text-align:center;color:#6d7882}.elementor-template-library-template-local{background-color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #d5dadf;height:50px;-webkit-transition:background-color .3s linear;-o-transition:background-color .3s linear;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:#fafbfb}.elementor-template-library-template-local:not(:hover) .elementor-template-library-template-controls{visibility:hidden}.elementor-template-library-template-local>*{text-align:start}.elementor-template-library-template-local .elementor-template-library-template-icon{text-align:center;width:6%}.elementor-template-library-template-local .elementor-template-library-template-name{font-size:13px;font-weight:500;width:35%}.elementor-template-library-template-local .elementor-template-library-template-type{color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-controls{direction:ltr;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-template-library-template-local .elementor-template-library-template-controls>*{direction:rtl}.elementor-template-library-template-local .elementor-template-library-template-controls>div{display:inline-block;margin-right:15px;cursor:pointer;font-weight:500;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-controls>div:not(:hover){color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-right:6px}.elementor-template-library-template-local .elementor-template-library-template-delete:hover{color:#b01b1b}.elementor-template-library-template-local .elementor-template-library-template-action{padding:8px 18px;margin:0 20px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{width:1440px;height:150%;-webkit-transform:scale(.666) translateX(25%) translateY(-25%);-ms-transform:scale(.666) translateX(25%) translateY(-25%);transform:scale(.666) translateX(25%) translateY(-25%)}.elementor-template-library-blank-title{font-size:30px;margin-top:55px}.elementor-template-library-blank-excerpt{font-size:18px;color:#a4afb7;margin-top:20px;font-weight:300}#elementor-template-library-save-template-form{margin-top:55px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-save-template-form>*{height:60px;font-size:18px}#elementor-template-library-save-template-name{width:460px;background-color:#fff;font-weight:300;color:#a4afb7;padding-right:25px;border-radius:0 3px 3px 0;border:none}#elementor-template-library-save-template-name:focus{border:1px solid #e6e9ec}#elementor-template-library-save-template-submit{width:150px;border-radius:3px 0 0 3px;font-weight:500}#elementor-template-library-save-template-submit:hover{-webkit-box-shadow:none;box-shadow:none}.elementor-template-library-blank-footer{position:absolute;bottom:90px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);color:#a4afb7;font-size:13px;font-style:italic}#elementor-template-library-footer-banner i{color:#c2cbd2;font-size:56px;margin-top:40px}#elementor-template-library-footer-banner .elementor-excerpt{color:#a4afb7;font-size:15px;font-weight:500;margin:20px 0}#elementor-template-library-templates-empty-icon{font-size:96px;margin-top:40px;color:#d5dadf}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-top:10px}
assets/css/editor.css CHANGED
@@ -2078,8 +2078,7 @@ body.elementor-editor-preview #elementor-mode-switcher {
2078
  align-items: center;
2079
  border: 1px solid #d5dadf;
2080
  padding: 10px 15px;
2081
- margin-bottom: 10px;
2082
- font-size: 11px; }
2083
  .elementor-revision-item:hover:not(.elementor-revision-current-preview) {
2084
  background-color: rgba(230, 233, 236, 0.3); }
2085
  .elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete {
@@ -2103,6 +2102,9 @@ body.elementor-editor-preview #elementor-mode-switcher {
2103
  .elementor-revision-item__tools-delete {
2104
  cursor: pointer; }
2105
 
 
 
 
2106
  .elementor-revision-meta {
2107
  padding-top: 5px;
2108
  font-size: 10px;
@@ -2111,49 +2113,6 @@ body.elementor-editor-preview #elementor-mode-switcher {
2111
  .elementor-revision-current-preview {
2112
  background-color: #e6e9ec; }
2113
 
2114
- .elementor-history-item {
2115
- display: -webkit-box;
2116
- display: -webkit-flex;
2117
- display: -ms-flexbox;
2118
- display: flex;
2119
- -webkit-box-align: center;
2120
- -webkit-align-items: center;
2121
- -ms-flex-align: center;
2122
- align-items: center;
2123
- border: 1px solid #d5dadf;
2124
- padding: 10px 15px;
2125
- margin-bottom: 10px;
2126
- font-size: 11px;
2127
- line-height: 1.4;
2128
- cursor: pointer; }
2129
- .elementor-history-item:hover {
2130
- background-color: rgba(230, 233, 236, 0.3); }
2131
- .elementor-history-item:hover .elementor-history-item__icon .fa:before {
2132
- content: '\f1da'; }
2133
- .elementor-history-item-applied {
2134
- color: #a4afb7; }
2135
- .elementor-history-item-current {
2136
- background: #e6e9ec;
2137
- cursor: inherit; }
2138
- .elementor-history-item-current .elementor-history-item__icon .fa:before, .elementor-history-item-current:hover .elementor-history-item__icon .fa:before {
2139
- content: '\f00c'; }
2140
- .elementor-history-item__details {
2141
- width: 95%; }
2142
- .elementor-history-item__title {
2143
- font-weight: bold; }
2144
- .elementor-history-item__subtitle, .elementor-history-item__action {
2145
- font-weight: lighter; }
2146
- .elementor-history-item__action {
2147
- font-style: italic;
2148
- text-decoration: underline; }
2149
- .elementor-history-item .__icon {
2150
- float: right; }
2151
-
2152
- .elementor-history-revisions-message {
2153
- font-size: 11px;
2154
- text-align: center;
2155
- padding: 5px 0; }
2156
-
2157
  #elementor-preview {
2158
  background-color: #333;
2159
  position: absolute;
2078
  align-items: center;
2079
  border: 1px solid #d5dadf;
2080
  padding: 10px 15px;
2081
+ margin-bottom: 10px; }
 
2082
  .elementor-revision-item:hover:not(.elementor-revision-current-preview) {
2083
  background-color: rgba(230, 233, 236, 0.3); }
2084
  .elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete {
2102
  .elementor-revision-item__tools-delete {
2103
  cursor: pointer; }
2104
 
2105
+ .elementor-revision-date {
2106
+ font-size: 11px; }
2107
+
2108
  .elementor-revision-meta {
2109
  padding-top: 5px;
2110
  font-size: 10px;
2113
  .elementor-revision-current-preview {
2114
  background-color: #e6e9ec; }
2115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2116
  #elementor-preview {
2117
  background-color: #333;
2118
  position: absolute;
assets/css/editor.min.css CHANGED
@@ -1,2 +1,2 @@
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
- @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:4}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-right:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}body,html{height:100%}html{background-color:#f1f1f1}iframe,img{border:0 none}li{list-style:none}a,body{text-decoration:none}body{color:#6d7882;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body a{color:#71d7f7}body a:hover{color:#9b0a46}body.elementor-editor-active #elementor-preview{right:0}@media (max-width:1439px){body.elementor-editor-active #elementor-preview{left:280px}}@media (min-width:1440px){body.elementor-editor-active #elementor-preview{left:300px}}body.elementor-editor-active #elementor-panel{left:0}body.elementor-editor-active #elementor-mode-switcher-preview .fa:before{content:""}body.elementor-editor-preview #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-preview #elementor-panel{left:-280px}}@media (min-width:1440px){body.elementor-editor-preview #elementor-panel{left:-300px}}body.elementor-editor-preview #elementor-panel>.ui-resizable-e,body.elementor-editor-preview #elementor-panel>.ui-resizable-w{display:none}body.elementor-editor-preview #elementor-mode-switcher-preview .fa:before{content:""}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){-webkit-transition:left .5s,width .5s;-o-transition:left .5s,width .5s;transition:left .5s,width .5s}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:#f1f3f5;z-index:4}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:100px}.elementor-loader-wrapper .elementor-loader{height:100px;position:relative}.elementor-loader-wrapper .elementor-loader-box{background-color:#495157;position:absolute;-webkit-animation:a 1.8s linear infinite;animation:a 1.8s linear infinite}.elementor-loader-wrapper .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-wrapper .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(2){top:0;-webkit-animation-delay:-.45s;animation-delay:-.45s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(3){top:40%;-webkit-animation-delay:-.9s;animation-delay:-.9s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(4){bottom:0;-webkit-animation-delay:-1.35s;animation-delay:-1.35s}@-webkit-keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.elementor-loading-title{color:#495157;text-align:center;text-transform:uppercase;margin-top:30px;letter-spacing:7px;font-size:10px;-webkit-animation:b 1.5s linear infinite;animation:b 1.5s linear infinite}@-webkit-keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}@keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}#elementor-preview-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fff}#elementor-preview-loading i{color:#d5dadf;font-size:50px}.select2-dropdown{border-color:#a4afb7}.select2-dropdown .select2-search__field{outline:none}#elementor-fatal-error-dialog button.dialog-ok{color:#71d7f7}#elementor-fatal-error-dialog .dialog-widget-header{font-size:13px;color:#6d7882}#elementor-saved-popup .dialog-message{height:155px;width:155px;background-color:#fff;border-radius:10px}#elementor-saved-popup .elementor-dialog-message{padding:15px}#elementor-saved-popup .elementor-dialog-message .fa{font-size:85px;padding:10px}#elementor-saved-popup .elementor-dialog-message-text{text-transform:uppercase}.elementor-button{outline:none;border:none;border-radius:3px;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.elementor-button:not([disabled]){cursor:pointer}.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.elementor-button.elementor-button-success,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button{color:#fff}.elementor-button.elementor-button-success[disabled],.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button[disabled]{background-color:#c2cbd2}.elementor-button.elementor-button-success:not([disabled]),.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]){background-color:#39b54a}.elementor-button.elementor-button-success:not([disabled]):hover,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover{opacity:.85;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-success:not([disabled]):active,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-go-pro{color:#fff;background-color:#fcb92c}.elementor-button.elementor-edit-template{display:inline-block;margin-top:15px;color:#fff}.elementor-button.elementor-button-default{background-color:#a4afb7;color:#fff;font-size:11px;text-transform:uppercase;padding:6.5px 15px}.elementor-button.elementor-button-default:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-default:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-default:visited{color:#fff}.elementor-button i{margin-right:10px}.elementor-input-style,input,select,textarea{border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-input-style:not(:focus),input:not(:focus),select:not(:focus),textarea:not(:focus){border-color:#d5dadf}.elementor-input-style:focus,input:focus,select:focus,textarea:focus{border-color:#a4afb7}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:#b01b1b}.elementor-input-style,input,textarea{padding:5px 8px}.elementor-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{border:1px solid #d5dadf;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-transition:border-color .05s ease-in-out;-o-transition:.05s border-color ease-in-out;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=radio]:focus{border-color:#a4afb7}input[disabled]{background-color:#e6e9ec;cursor:not-allowed;opacity:1}select{height:27px}.ps-container{-ms-touch-action:none;overflow:hidden!important}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}#nprogress{pointer-events:none}#nprogress .bar{background:#39b54a;position:fixed;z-index:3;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);-ms-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:3;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#39b54a;border-left-color:#39b54a;border-radius:50%;-webkit-animation:c .4s linear infinite;animation:c .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:5}.elementor-panel{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px}.elementor-panel ::-moz-selection{background:#5bc0de;color:#fff}.elementor-panel ::selection{background:#5bc0de;color:#fff}.elementor-panel a{color:#9b0a46;-webkit-transition:none;-o-transition:none;transition:none}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel ::-moz-focus-inner{padding:0;border:0}.elementor-panel :focus{outline:0}.elementor-panel#elementor-panel{position:fixed;height:100%;top:0;bottom:0;overflow:visible;background-color:#e6e9ec}@media (max-width:1439px){.elementor-panel{width:280px}}@media (min-width:1440px){.elementor-panel{width:300px}}.elementor-panel>.ui-resizable-e,.elementor-panel>.ui-resizable-w{position:absolute;top:0;height:100%;width:7px;right:-5px;cursor:ew-resize}.elementor-panel #elementor-panel-inner{position:relative;height:100%;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.elementor-panel .elementor-panel-container{clear:both;padding-left:15px;padding-right:15px}.elementor-panel #elementor-panel-content-wrapper{position:absolute;bottom:40px;top:40px;left:0;width:100%}.elementor-panel .elementor-panel-hide{display:none}.elementor-panel .elementor-panel-heading{display:table;table-layout:fixed;height:40px;padding:0 20px;width:100%;border-bottom:1px solid #e6e9ec;cursor:pointer}.elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before{content:""}.elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before{content:"\f0d7"}.elementor-panel .elementor-panel-heading>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-heading-toggle{width:20px;color:#495157}.elementor-panel .elementor-panel-heading-title{color:#495157;font-weight:700}.elementor-panel .elementor-panel-box{margin-top:10px;background-color:#fff}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-control-title{font-size:12px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .select2-container{width:100%!important}.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{border-color:#d5dadf}.elementor-panel .select2-container.select2-container--focus .select2-selection--multiple,.elementor-panel .select2-container.select2-container--focus .select2-selection--single,.elementor-panel .select2-container.select2-container--open .select2-selection--multiple,.elementor-panel .select2-container.select2-container--open .select2-selection--single{border-color:#a4afb7}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{line-height:1.5;font-size:.9em;border:none;border-radius:0}.elementor-panel .select2-selection--single{height:27px}.elementor-panel .select2-selection__rendered{line-height:27px}.elementor-panel .select2-selection__arrow{height:27px;top:0}.elementor-panel #elementor-controls .pojo-widget-button-collapse{display:none}.elementor-panel .elementor-panel-alert{padding:15px;border-left:5px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:left}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}.elementor-panel .elementor-label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;text-transform:capitalize}.elementor-panel .elementor-label.elementor-label-default{background-color:#a4afb7}.elementor-panel .elementor-label.elementor-label-info{background-color:#5bc0de}.elementor-panel .elementor-label.elementor-label-success{background-color:#5cb85c}.elementor-panel .elementor-label.elementor-label-warning{background-color:#f0ad4e}.elementor-panel .elementor-label.elementor-label-danger{background-color:#d9534f}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box{padding:30px 20px;text-align:center}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-icon{font-size:52px;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-title{margin-top:20px;font-size:16px;font-weight:700}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-message{margin-top:20px;line-height:1.4;font-size:11px}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link{background-color:#fcb92c;color:#fff;padding:7px 25px;margin-top:20px;-webkit-box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link:hover{background-color:#fdca5e}.elementor-panel #elementor-panel-get-pro-elements .elementor-panel-nerd-box-message{text-transform:uppercase}.elementor-panel #elementor-panel-header{display:table;height:40px;width:100%;background-color:#9b0a46;color:#fff}.elementor-panel #elementor-panel-header>*{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-header-button{width:40px}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-header-button .elementor-icon:hover{color:#d5dadf}.elementor-panel #elementor-panel-header-title{font-size:15px}.elementor-panel #elementor-panel-header-title img{width:66px}.elementor-panel #elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:11px;text-transform:uppercase;cursor:pointer}.elementor-panel #elementor-panel-elements{overflow:hidden;padding:0 5px}.elementor-panel .elementor-element-wrapper{float:left;width:50%;padding:5px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-element{border-radius:3px;background-color:#fff;cursor:move}.elementor-panel .elementor-element:hover{-webkit-box-shadow:0 2px 6px rgba(0,0,0,.2);box-shadow:0 2px 6px rgba(0,0,0,.2)}.elementor-panel .elementor-element:hover .icon,.elementor-panel .elementor-element:hover .title{color:#9b0a46}.elementor-panel .elementor-element .icon{font-size:28px;padding-top:15px;color:#556068}.elementor-panel .elementor-element .elementor-element-title-wrapper{display:table;width:100%}.elementor-panel .elementor-element .title{font-size:11px;color:#556068;display:table-cell;vertical-align:middle;height:40px}.elementor-panel #elementor-panel-elements-search-wrapper{position:relative;margin:10px 10px 5px}.elementor-panel #elementor-panel-elements-search-wrapper i{position:absolute;right:0;top:50%;color:#a4afb7;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:right 1s;-o-transition:right 1s;transition:right 1s}.elementor-panel #elementor-panel-elements-search-input{font-size:11px;border-radius:0;padding:10px 27px 10px 0;font-style:italic;color:#a4afb7;border:none;-webkit-transition:all 1s;-o-transition:all 1s;transition:all 1s}.elementor-panel #elementor-panel-elements-search-input:focus{background-color:hsla(0,0%,100%,.7);padding-left:15px}.elementor-panel #elementor-panel-elements-search-input:focus+i{right:15px}.elementor-panel .elementor-panel-category:first-child .panel-elements-category-title{padding-top:14px}.elementor-panel .panel-elements-category-title-basic{display:none}.elementor-panel .panel-elements-category-title{padding:12px 15px;text-transform:uppercase;font-size:11px}.elementor-panel .panel-elements-category-items{overflow:hidden;padding:0 5px}.elementor-panel .elementor-panel-scheme-title{padding:10px 20px;margin-top:10px}.elementor-panel .elementor-panel-scheme-description{padding:20px 20px 0}.elementor-panel .elementor-panel-scheme-buttons{padding:0 20px;display:table;table-layout:fixed;width:100%;height:40px;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-scheme-button-wrapper{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-panel-scheme-button-wrapper:first-child{text-align:left}.elementor-panel .elementor-panel-scheme-button-wrapper:last-child{text-align:right}.elementor-panel .elementor-panel-scheme-save .elementor-button{padding:6px 18px;text-transform:uppercase}.elementor-panel .elementor-panel-scheme-discard .elementor-button,.elementor-panel .elementor-panel-scheme-reset .elementor-button{color:#a4afb7;background:none}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-items{position:relative}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item{display:inline-block}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-right:13px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-right:19px}}.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:4px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:6px}}.elementor-panel .elementor-panel-scheme-color-title{text-align:center;text-transform:uppercase;margin:10px 0;color:#c2cbd2;font-size:8px}.elementor-panel .elementor-panel-scheme-typography-item{display:table;table-layout:fixed;width:100%;margin-bottom:15px}.elementor-panel .elementor-panel-scheme-typography-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-scheme-typography-item-value input,.elementor-panel .elementor-panel-scheme-typography-item-value select{width:100%}.elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open)+.elementor-panel-scheme-typography-items{display:none}.elementor-panel .elementor-panel-scheme-color-system-scheme{margin-bottom:10px}.elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title{font-size:11px;color:#a4afb7;font-style:italic;margin-top:5px}.elementor-panel .elementor-panel-scheme-color-system-items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;overflow:hidden;padding:3px;border-radius:3px;border:1px solid #d5dadf;cursor:pointer}.elementor-panel .elementor-panel-scheme-color-system-items:hover{border:1px solid #a4afb7}.elementor-panel .elementor-panel-scheme-color-system-item{height:20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-panel #elementor-panel-schemes-disabled a:hover{text-decoration:underline}.elementor-panel #elementor-panel-page-menu{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-menu-item{display:table;width:100%;height:50px;cursor:pointer;margin-bottom:1px}.elementor-panel .elementor-panel-menu-item:not(:hover){background-color:#fff}.elementor-panel .elementor-panel-menu-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:55px}.elementor-panel .elementor-panel-menu-item-title{font-weight:500}.elementor-panel .elementor-panel-menu-item-title>span{color:#39b54a}.elementor-panel .elementor-panel-navigation{background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);display:table;table-layout:fixed;width:100%}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{display:table-cell}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a{display:block;text-align:center;padding:12px 0 8px;font-size:10px;color:#6d7882}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before{font-family:FontAwesome;font-size:16px;display:block;margin-bottom:6px}.elementor-panel .elementor-tab-control-content a:before{content:"\f040"}.elementor-panel .elementor-tab-control-style a:before{content:"\f042"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-settings a:before{content:"\f013"}.elementor-panel .elementor-tab-control-responsive a:before{content:"\f10a"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-layout a:before{content:"\f0db"}.elementor-panel .elementor-tab-control-lightbox a:before{content:"\f2d2"}.elementor-panel .elementor-control{background-color:#fff;position:relative;padding:0 20px 15px}.elementor-panel .elementor-control.elementor-control-separator-default:before{content:"";height:1px;display:block;margin-bottom:15px;background-color:#e6e9ec}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp{margin-top:15px}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp:before{background-color:transparent}.elementor-panel .elementor-control.elementor-control-separator-before{padding-top:15px}.elementor-panel .elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:3px;width:100%;top:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:3px;width:100%;bottom:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after+.elementor-control-type-tabs{padding-top:15px}.elementor-panel .elementor-control.elementor-control-deprecated,.elementor-panel .elementor-control.elementor-control-deprecated .elementor-control-field-description{color:#b01b1b}.elementor-panel .elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-hidden-control{display:none}.elementor-panel .elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-panel .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-mobile) .elementor-panel .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-tablet) .elementor-panel .elementor-control.elementor-control-responsive-tablet{display:none}.elementor-panel .elementor-control-wp{line-height:1.5}.elementor-panel .elementor-control-wp p{margin:15px 0}.elementor-panel .elementor-control-field{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:10px}.elementor-panel .elementor-label-block.elementor-control-hidden-label>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-top:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:45%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:55%}.elementor-panel .elementor-control-field-description{margin-top:10px}.elementor-panel .elementor-required{color:#b01b1b}.elementor-panel .elementor-choices{display:table;width:100%;height:27px;background-color:#a4afb7;text-align:center;border-spacing:1px;border-radius:3px}.elementor-panel .elementor-choices input{display:none}.elementor-panel .elementor-choices input:checked+.elementor-choices-label{color:#fff}.elementor-panel .elementor-choices input:not(:checked)+.elementor-choices-label{background-color:#fff;color:#a4afb7}.elementor-panel .elementor-choices .elementor-choices-label{display:table-cell;vertical-align:middle;font-size:12px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;cursor:pointer}.elementor-panel .elementor-slider{display:inline-block;margin-top:10px;height:4px;background-color:#a4afb7;border-radius:5px;position:relative;width:67%}.elementor-panel .elementor-slider .ui-slider-handle{height:16px;width:16px;background-color:#fff;display:inline-block;top:50%;-webkit-transform:translateY(-50%) translateX(-8px);-ms-transform:translateY(-50%) translateX(-8px);transform:translateY(-50%) translateX(-8px);position:absolute;-webkit-box-shadow:1px 1px 6px rgba(0,0,0,.3);box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:50%;cursor:pointer}.elementor-panel .elementor-slider-input{width:33%;float:right}.elementor-panel .elementor-slider-input input{width:80%;float:right}.elementor-panel .elementor-units-choices{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-panel .elementor-units-choices input{display:none}.elementor-panel .elementor-units-choices input:not(:checked)+label{color:#c2cbd2}.elementor-panel .elementor-units-choices input:checked+label{text-decoration:underline}.elementor-panel .elementor-units-choices label{cursor:pointer;padding:0 2px;text-transform:uppercase;font-size:9px}.elementor-panel .elementor-control-responsive-switchers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 5px}.elementor-panel .elementor-responsive-switcher{display:inline-block;border-radius:50%;height:18px;width:18px;background-color:#a4afb7;cursor:pointer;position:relative;margin-left:5px;color:#fff;font-size:8px;text-align:center;-webkit-transition:background-color .5s;-o-transition:background-color .5s;transition:background-color .5s}.elementor-panel .elementor-responsive-switcher:hover{background-color:#c2cbd2}.elementor-panel .elementor-responsive-switcher i{line-height:18px}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher{background:#c2cbd2}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher:not(.elementor-responsive-switcher-desktop){display:none}.elementor-device-mobile .elementor-panel .elementor-responsive-switcher-mobile,.elementor-device-tablet .elementor-panel .elementor-responsive-switcher-tablet{background-color:#71d7f7}.elementor-panel .elementor-update-preview{margin:15px 15px 0;background-color:#e6e9ec;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-update-preview-button-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-panel .elementor-update-preview-button{padding:8px 15px;text-transform:uppercase}.elementor-panel .elementor-control-align .elementor-choices,.elementor-panel .elementor-control-position .elementor-choices,.elementor-panel .elementor-control-text_align .elementor-choices{direction:ltr}.elementor-panel .elementor-control-type-media .elementor-control-media{padding:7px;border:1px solid;height:150px}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover){border-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button{background-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:hover{border-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button{background-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area,.elementor-panel .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media>*{height:100%;cursor:pointer;position:relative}.elementor-panel .elementor-control-type-media .fa-plus-circle{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:20px}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image{opacity:.5}.elementor-panel .elementor-control-type-media .elementor-control-media-delete{position:absolute;bottom:0;left:0;right:0;text-align:center;padding:9.5px;font-size:11px;color:#fff;background-color:#a4afb7;text-transform:uppercase}.elementor-panel .elementor-control-type-media .elementor-control-media-image{height:100%;background-size:cover}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimensions{overflow:hidden}.elementor-panel .elementor-control-type-dimensions li{float:left;width:20%}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-panel .elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;border-color:#a4afb7;height:27px}.elementor-panel .elementor-control-type-dimensions li input{border-left:none;border-radius:0;padding:4px 0}.elementor-panel .elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:#a4afb7}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions{border:1px solid #a4afb7;border-left:none;background-color:#fff;padding:0;outline:none;border-radius:0 3px 3px 0;cursor:pointer}.elementor-panel .elementor-control-type-dimensions li:first-child input{border-left:1px solid #a4afb7;border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimension-label{display:block;text-align:center;color:#d5dadf;font-size:9px;text-transform:uppercase;padding-top:5px}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:#fff}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:#a4afb7}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked{color:#fff}.elementor-panel .elementor-control-type-url .elementor-control-url-external-hide .elementor-control-url-more{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-external-show input{padding-right:46px}.elementor-panel .elementor-control-type-url .elementor-control-input-wrapper{position:relative}.elementor-panel .elementor-control-type-url .elementor-control-url-more{position:absolute;top:0;right:0;height:26px;width:40px;border-left:1px solid;cursor:pointer;font-size:10px;border-radius:0 3px 3px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-panel .elementor-control-type-url .elementor-control-url-more i{font-size:13px}.elementor-panel .elementor-control-type-url .elementor-control-url-more-input,.elementor-panel .elementor-control-type-url .elementor-control-url-more-input:not(:checked)+.elementor-control-url-more-options{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-more-options{padding-top:10px}.elementor-panel .elementor-control-type-url .elementor-control-url-option{padding:5px;font-size:12px}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url],.elementor-panel .elementor-control-type-url input[type=url]{direction:ltr}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:not(:focus)+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:not(:focus)+.elementor-control-url-more{border-color:#d5dadf}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:focus+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:focus+.elementor-control-url-more{border-color:#a4afb7}.elementor-panel .elementor-control-type-section{margin-top:10px;padding:0}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section){padding-top:15px}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:70%}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{height:27px;width:30%}.elementor-panel .elementor-control-type-wysiwyg.elementor-rich-editing-disabled .wp-editor-container{margin-top:10px}.elementor-panel .elementor-control-type-wysiwyg *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .elementor-control-type-wysiwyg .wp-editor-container{border:1px solid #e6e9ec;border-radius:3px}.elementor-panel .elementor-control-type-wysiwyg #insert-media-button{margin-top:7px;height:auto;line-height:1;font-size:10px;padding:3px 7px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-panel .elementor-control-type-wysiwyg .wp-switch-editor{border:none;color:#6d7882;font-size:10px;padding:3px 9px 4px;border-radius:3px 3px 0 0}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-html,.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-panel .elementor-control-type-wysiwyg .quicktags-toolbar{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-panel .elementor-control-type-wysiwyg .elementor-wp-editor{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-control-type-wysiwyg .mce-ico{color:#6d7882;font-size:16px}.elementor-panel .elementor-control-type-wysiwyg .mce-btn{margin-right:0;margin-left:0}.elementor-panel .elementor-control-type-wysiwyg .mce-btn.mce-active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:hover{border-color:#d5dadf}.elementor-panel .elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-panel .elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:#6d7882}.elementor-panel .elementor-control-type-icon .select2-selection__rendered .fa{margin-right:3px}.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnails{overflow:hidden;margin-top:20px;cursor:pointer}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:40px;height:40px;background-size:cover;background-position:50% 50%;float:left;margin-bottom:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail:not(:nth-child(5n)){margin-right:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-add{width:100%;height:30px;color:#fff;background-color:#a4afb7;margin-top:10px;text-transform:uppercase}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-clear{color:#b01b1b;cursor:pointer}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset{border:1px solid #e6e9ec;padding:3px;border-radius:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset){display:inline-block;cursor:pointer;height:50px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) svg{height:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset path{fill:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset svg{display:block;width:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset{padding:10px 0 0 2px;font-size:11px;cursor:pointer;color:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset i{margin-right:8px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{color:#495157;font-weight:700;padding:13.5px 20px;position:relative}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{content:"";position:absolute;left:0;right:0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{top:0;background-color:#e6e9ec;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after{bottom:0;height:1px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{height:10px;-webkit-box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1);box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title{margin:15px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before{height:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input{display:none}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset{border:1px solid #a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset path{fill:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-top:5px;font-style:italic;font-size:11px;color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:70px;float:left}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;float:left;padding-top:4px}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;text-transform:uppercase;margin-top:5px;color:#d5dadf;font-size:9px;text-align:center}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{float:right;height:27px;width:70px}.elementor-panel .elementor-control-type-code{padding:0 10px 15px}.elementor-panel .elementor-control-type-wp_widget .widget-inside{display:block}.elementor-panel .elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-panel .elementor-control-type-tabs{font-size:.8em;color:#a4afb7;text-transform:uppercase;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:30px;border-top:1px solid #a4afb7;border-bottom:1px solid #a4afb7;border-right:1px solid #a4afb7;cursor:pointer}.elementor-panel .elementor-control-type-tab:first-child{border-left:1px solid #a4afb7;border-top-left-radius:3px;border-bottom-left-radius:3px}.elementor-panel .elementor-control-type-tab:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.elementor-panel .elementor-control-type-tab.elementor-tab-active{background-color:#a4afb7;color:#fff}.elementor-panel .elementor-tab-close{display:none!important}.elementor-panel .elementor-control-type-repeater,.elementor-panel .elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding:0 10px 15px}.elementor-panel .elementor-control-type-repeater .elementor-control:before,.elementor-panel .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-panel .elementor-control-type-repeater .repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls{border:1px solid #d5dadf;border-top-width:0;padding-top:15px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls .wp-picker-container.wp-picker-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);border-width:0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools{display:table;table-layout:fixed;width:100%;color:#556068;background-color:#d5dadf;height:40px;border-spacing:1px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools:hover{background-color:#a4afb7}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div{display:table-cell;text-align:center;vertical-align:middle;cursor:pointer}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:not(.elementor-repeater-row-handle-sortable){background-color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:hover{opacity:.95}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{text-align:left;padding:0 10px;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .fa{margin-right:5px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{cursor:move;width:10px;color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding:10px}.elementor-panel .elementor-control-type-textarea textarea{display:block}.elementor-panel .elementor-control-type-box_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-box_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-text_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-text_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-title{width:70%}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-input-wrapper{width:30%}.elementor-panel .elementor-control-type-switcher .elementor-control-input-wrapper{text-align:right}.elementor-panel .elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;width:49px;height:20px;background-color:#fff;border-radius:18px;cursor:pointer}.elementor-panel .elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-panel .elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:7px;text-transform:uppercase;background:#eceeef;border-radius:inherit;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity,background;-o-transition-property:opacity,background;transition-property:opacity,background}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after,.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;-webkit-transition:inherit;-o-transition:inherit;transition:inherit}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:3px;color:#a4afb7;text-shadow:0 1px hsla(0,0%,100%,.5)}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:3px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:#71d7f7;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-panel .elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;-webkit-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:30px;-webkit-box-shadow:-1px 1px 5px rgba(0,0,0,.2);box-shadow:-1px 1px 5px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-order .elementor-control-oreder-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-order input{display:none}.elementor-panel .elementor-control-type-order input:checked+.elementor-control-order-label{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}.elementor-panel .elementor-control-type-order select{border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-order select:not(:focus)~.elementor-control-order-label{border-color:#d5dadf}.elementor-panel .elementor-control-type-order select:focus~.elementor-control-order-label{border-color:#a4afb7}.elementor-panel .elementor-control-type-order .elementor-control-order-label{position:relative;padding:0;width:40px;border:1px solid;font-size:10px;border-radius:0 3px 3px 0;margin-left:-3px;background-color:#fff;cursor:pointer}.elementor-panel .elementor-control-type-order .elementor-control-order-label i{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-panel .elementor-control-type-hidden{display:none!important}.elementor-panel .wp-picker-container.wp-picker-active{position:absolute;z-index:1;top:0;left:0;background-color:#fff;border:solid #fff;border-width:0 17px 0 12px;padding-top:10px;-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4)}.elementor-panel .wp-picker-container.wp-picker-active .wp-color-result{float:right}.elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap{padding-left:10px;float:left}.elementor-panel .wp-picker-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-container .iris-picker{border:none}.elementor-panel .wp-color-result{margin:0;width:48px;height:25px;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;padding:0;border-radius:3px;border:1px solid #d5dadf}.elementor-panel .wp-color-result,.elementor-panel .wp-color-result:focus{-webkit-box-shadow:inset 0 0 0 3px #fff;box-shadow:inset 0 0 0 3px #fff}.elementor-panel .wp-color-result.wp-picker-open:after,.elementor-panel .wp-color-result:after{content:none}.elementor-panel .wp-color-result:hover{border:1px solid #a4afb7}.elementor-panel .wp-color-result:active,.elementor-panel .wp-color-result:focus{outline:0}.elementor-panel .wp-picker-clear.button,.elementor-panel .wp-picker-default.button{height:26px;width:48px;padding:0;background-color:#d5dadf;border-radius:0 3px 3px 0;margin:0}.elementor-panel .wp-color-picker{float:left;width:100px;max-width:100px;border-radius:3px 0 0 3px;line-height:1}.elementor-panel .wp-picker-holder *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-open~.wp-picker-holder{clear:both;margin-bottom:15px}.elementor-panel .elementor-control .wp-picker-container:not(.wp-picker-active){float:right}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active{-webkit-transform:translateY(6px);-ms-transform:translateY(6px);transform:translateY(6px)}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active .wp-color-result{margin-right:3px}.elementor-panel #elementor-panel-footer{position:absolute;bottom:0;left:0;right:0;height:40px;background-color:#495157}.elementor-panel #elementor-panel-footer-tools{display:table;table-layout:fixed;width:100%;height:100%}.elementor-panel .elementor-panel-footer-tool{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;color:#a4afb7;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-panel-footer-tool.elementor-open{color:#fff}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover{color:#d5dadf}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#556068;padding:10px;-webkit-box-shadow:-2px -5px 8px rgba(0,0,0,.1);box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:2}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-footer-sub-menu-item{background-color:#495157;display:table;table-layout:fixed;width:100%;cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){margin-bottom:1px}.elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode=mobile-landscape] .fa-mobile{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:rgba(0,0,0,.2)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:rgba(0,0,0,.3)}.elementor-panel .elementor-panel-footer-sub-menu-item>*{display:table-cell;height:40px;vertical-align:middle}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon{width:40px;color:#a4afb7}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title{text-align:left;color:#d5dadf}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description{width:95px;text-align:left;font-size:11px;font-style:italic;color:#a4afb7}.elementor-panel #elementor-panel-footer-help-title{text-align:left;padding:10px 0;color:#d5dadf}.elementor-panel #elementor-panel-footer-save{width:90px;padding:0 10px}.elementor-panel #elementor-panel-footer-save .elementor-button{font-size:11px;text-transform:uppercase;width:100%;height:26px;background-color:#556068;color:#a4afb7}.elementor-panel #elementor-panel-footer-publish .elementor-icon,.elementor-panel #elementor-panel-footer-publish .elementor-title{color:#39b54a}.elementor-panel #elementor-panel-footer-discard .elementor-icon,.elementor-panel #elementor-panel-footer-discard .elementor-title{color:#b01b1b}#elementor-mode-switcher{position:absolute;left:100%;top:50%;width:15px;height:50px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);background-color:#e6e9ec;font-size:15px;-webkit-box-shadow:3px 1px 5px rgba(0,0,0,.1);box-shadow:3px 1px 5px rgba(0,0,0,.1);cursor:pointer}#elementor-mode-switcher:hover,body.elementor-editor-preview #elementor-mode-switcher{background-color:#9b0a46;color:#fff}#elementor-mode-switcher-inner,#elementor-mode-switcher-preview{width:100%;height:100%;position:absolute;top:0;left:0}#elementor-mode-switcher-preview{cursor:pointer}#elementor-mode-switcher-preview .fa{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px;font-size:11px}.elementor-revision-item:hover:not(.elementor-revision-current-preview){background-color:rgba(230,233,236,.3)}.elementor-revision-item-loading .elementor-revision-item__tools-delete,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner,.elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-left:15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;cursor:pointer}.elementor-revision-item__tools-delete{cursor:pointer}.elementor-revision-meta{padding-top:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview{background-color:#e6e9ec}.elementor-history-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px;font-size:11px;line-height:1.4;cursor:pointer}.elementor-history-item:hover{background-color:rgba(230,233,236,.3)}.elementor-history-item:hover .elementor-history-item__icon .fa:before{content:"\f1da"}.elementor-history-item-applied{color:#a4afb7}.elementor-history-item-current{background:#e6e9ec;cursor:inherit}.elementor-history-item-current .elementor-history-item__icon .fa:before,.elementor-history-item-current:hover .elementor-history-item__icon .fa:before{content:"\f00c"}.elementor-history-item__details{width:95%}.elementor-history-item__title{font-weight:700}.elementor-history-item__action,.elementor-history-item__subtitle{font-weight:lighter}.elementor-history-item__action{font-style:italic;text-decoration:underline}.elementor-history-item .__icon{float:right}.elementor-history-revisions-message{font-size:11px;text-align:center;padding:5px 0}#elementor-preview{background-color:#333;position:absolute;height:100%;top:0;right:0;border:0}.elementor-device-desktop #elementor-preview{overflow-y:hidden}body:not(.elementor-device-desktop) #elementor-preview{overflow-y:auto}#elementor-preview-responsive-wrapper{position:absolute;top:0;bottom:0;left:0;right:0;-webkit-transition:all .5s ease 0s;-o-transition:all .5s ease 0s;transition:all .5s ease 0s}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%}.elementor-device-tablet #elementor-preview-responsive-wrapper{width:768px;height:1025px;padding:40px 10px 70px}.elementor-device-mobile #elementor-preview-responsive-wrapper{width:360px;height:640px;padding:40px 10px 70px}body:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{border-radius:30px;background-color:#111;margin:30px auto 80px;-webkit-box-sizing:content-box;box-sizing:content-box}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:5}.tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px;text-align:center;border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none}#elementor-introduction .dialog-widget-header{padding:40px 0 0}#elementor-introduction .dialog-widget-content{width:700px;max-width:100%}#elementor-introduction .elementor-video-wrapper{padding-bottom:62.4%}#elementor-introduction .dialog-message{margin-top:40px}#elementor-introduction-title{color:#9b0a46;font-size:27px;font-weight:700}#elementor-introduction-subtitle{margin-top:12px;font-size:16px;color:#a4afb7}#elementor-template-library-modal .dialog-widget-content{width:990px;background-color:#f1f3f5}#elementor-template-library-modal .dialog-widget-header{padding:0;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);position:relative;z-index:1}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .dialog-message{height:630px;max-height:85vh;overflow:auto;padding:15px}#elementor-template-library-modal a,#elementor-template-library-modal a:hover{color:inherit}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-modal a.elementor-template-library-blank-footer-link:hover{color:#9b0a46}#elementor-template-library-modal .elementor-button{text-transform:uppercase}#elementor-template-library-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}#elementor-template-library-header-logo-area{text-align:left;padding-left:15px}#elementor-template-library-header-logo-area>*{float:left}#elementor-template-library-header-logo-area>*>*{vertical-align:middle}#elementor-template-library-header-logo{font-size:15px;text-transform:uppercase;color:#495157;font-weight:700;cursor:pointer}#elementor-template-library-header-logo i{padding-right:10px;color:#9b0a46;font-size:20px}#elementor-template-library-header-menu-area{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px;cursor:pointer}.elementor-template-library-menu-item.elementor-active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}#elementor-template-library-header-items-area{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-template-library-header-item{position:relative;border-left:1px solid #e6e9ec;height:50px;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-header-item:not(:hover){color:#a4afb7}.elementor-template-library-header-item>i{font-size:18px}#elementor-template-library-header-close-modal,#elementor-template-library-header-save{width:56px}#elementor-template-library-header-close-modal,#elementor-template-library-header-preview-insert-wrapper,#elementor-template-library-header-save{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}#elementor-template-library-header-preview-insert-wrapper .elementor-button{padding:8px 14px}#elementor-template-library-header-preview-back{padding:16.5px 16.5px 15px 0;border-right:1px solid #e6e9ec;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-header-preview-back:not(:hover){color:#a4afb7}#elementor-template-library-header-preview-back i{padding-right:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:""}#elementor-template-library-loading .elementor-loading-title{color:#a4afb7}#elementor-template-library-loading .elementor-loader-box{background-color:#d5dadf}#elementor-template-library-templates-container{overflow:hidden}#elementor-template-library-templates-container[data-template-source=local]{-webkit-box-shadow:1px 1px 5px rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.1);margin:15px}#elementor-template-library-templates-container:not([data-template-source=remote])+#elementor-template-library-footer-banner{display:none}.elementor-template-library-template-remote{float:left;width:25%;padding:0 15px;margin-top:15px}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body{position:relative}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{position:absolute;content:"pro";text-transform:uppercase;top:5px;right:5px;background-color:#9b0a46;color:#d5dadf;padding:1px 4px;font-size:9px;border-radius:2px}.elementor-template-library-template-remote .elementor-template-library-template-body{height:250px;border:3px solid #fff;position:relative;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.2)}.elementor-template-library-template-remote .elementor-template-library-template-body:not(:hover) .elementor-template-library-template-controls{opacity:0}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%}.elementor-template-library-template-remote .elementor-template-library-template-controls{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-template-library-template-remote .elementor-template-library-template-action{font-size:11px;width:150px;padding:11px}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:relative;height:180px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;color:#d5dadf;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-template-library-template-remote .elementor-template-library-template-name{margin:13px 0 10px;font-size:12px;text-align:center;color:#6d7882}.elementor-template-library-template-local{background-color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #d5dadf;height:50px;-webkit-transition:background-color .3s linear;-o-transition:background-color .3s linear;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:#fafbfb}.elementor-template-library-template-local:not(:hover) .elementor-template-library-template-controls{visibility:hidden}.elementor-template-library-template-local>*{text-align:start}.elementor-template-library-template-local .elementor-template-library-template-icon{text-align:center;width:6%}.elementor-template-library-template-local .elementor-template-library-template-name{font-size:13px;font-weight:500;width:35%}.elementor-template-library-template-local .elementor-template-library-template-type{color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-controls{direction:rtl;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-template-library-template-local .elementor-template-library-template-controls>*{direction:ltr}.elementor-template-library-template-local .elementor-template-library-template-controls>div{display:inline-block;margin-left:15px;cursor:pointer;font-weight:500;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-controls>div:not(:hover){color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-left:6px}.elementor-template-library-template-local .elementor-template-library-template-delete:hover{color:#b01b1b}.elementor-template-library-template-local .elementor-template-library-template-action{padding:8px 18px;margin:0 20px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{width:1440px;height:150%;-webkit-transform:scale(.666) translateX(-25%) translateY(-25%);-ms-transform:scale(.666) translateX(-25%) translateY(-25%);transform:scale(.666) translateX(-25%) translateY(-25%)}.elementor-template-library-blank-title{font-size:30px;margin-top:55px}.elementor-template-library-blank-excerpt{font-size:18px;color:#a4afb7;margin-top:20px;font-weight:300}#elementor-template-library-save-template-form{margin-top:55px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-save-template-form>*{height:60px;font-size:18px}#elementor-template-library-save-template-name{width:460px;background-color:#fff;font-weight:300;color:#a4afb7;padding-left:25px;border-radius:3px 0 0 3px;border:none}#elementor-template-library-save-template-name:focus{border:1px solid #e6e9ec}#elementor-template-library-save-template-submit{width:150px;border-radius:0 3px 3px 0;font-weight:500}#elementor-template-library-save-template-submit:hover{-webkit-box-shadow:none;box-shadow:none}.elementor-template-library-blank-footer{position:absolute;bottom:90px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);color:#a4afb7;font-size:13px;font-style:italic}#elementor-template-library-footer-banner i{color:#c2cbd2;font-size:56px;margin-top:40px}#elementor-template-library-footer-banner .elementor-excerpt{color:#a4afb7;font-size:15px;font-weight:500;margin:20px 0}#elementor-template-library-templates-empty-icon{font-size:96px;margin-top:40px;color:#d5dadf}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-top:10px}
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
+ @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:4}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-right:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}*,:after,:before{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}body,html{height:100%}html{background-color:#f1f1f1}iframe,img{border:0 none}li{list-style:none}a,body{text-decoration:none}body{color:#6d7882;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1;text-transform:none;overflow:hidden}body a{color:#71d7f7}body a:hover{color:#9b0a46}body.elementor-editor-active #elementor-preview{right:0}@media (max-width:1439px){body.elementor-editor-active #elementor-preview{left:280px}}@media (min-width:1440px){body.elementor-editor-active #elementor-preview{left:300px}}body.elementor-editor-active #elementor-panel{left:0}body.elementor-editor-active #elementor-mode-switcher-preview .fa:before{content:""}body.elementor-editor-preview #elementor-preview{left:0}@media (max-width:1439px){body.elementor-editor-preview #elementor-panel{left:-280px}}@media (min-width:1440px){body.elementor-editor-preview #elementor-panel{left:-300px}}body.elementor-editor-preview #elementor-panel>.ui-resizable-e,body.elementor-editor-preview #elementor-panel>.ui-resizable-w{display:none}body.elementor-editor-preview #elementor-mode-switcher-preview .fa:before{content:""}#elementor-panel:not(.ui-resizable-resizing),#elementor-preview:not(.ui-resizable-resizing){-webkit-transition:left .5s,width .5s;-o-transition:left .5s,width .5s;transition:left .5s,width .5s}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:#f1f3f5;z-index:4}.elementor-loader-wrapper{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:100px}.elementor-loader-wrapper .elementor-loader{height:100px;position:relative}.elementor-loader-wrapper .elementor-loader-box{background-color:#495157;position:absolute;-webkit-animation:a 1.8s linear infinite;animation:a 1.8s linear infinite}.elementor-loader-wrapper .elementor-loader-box:first-of-type{width:20%;height:100%;left:0;top:0}.elementor-loader-wrapper .elementor-loader-box:not(:first-of-type){right:0;height:20%;width:60%}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(2){top:0;-webkit-animation-delay:-.45s;animation-delay:-.45s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(3){top:40%;-webkit-animation-delay:-.9s;animation-delay:-.9s}.elementor-loader-wrapper .elementor-loader-box:nth-of-type(4){bottom:0;-webkit-animation-delay:-1.35s;animation-delay:-1.35s}@-webkit-keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.elementor-loading-title{color:#495157;text-align:center;text-transform:uppercase;margin-top:30px;letter-spacing:7px;font-size:10px;-webkit-animation:b 1.5s linear infinite;animation:b 1.5s linear infinite}@-webkit-keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}@keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}#elementor-preview-loading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fff}#elementor-preview-loading i{color:#d5dadf;font-size:50px}.select2-dropdown{border-color:#a4afb7}.select2-dropdown .select2-search__field{outline:none}#elementor-fatal-error-dialog button.dialog-ok{color:#71d7f7}#elementor-fatal-error-dialog .dialog-widget-header{font-size:13px;color:#6d7882}#elementor-saved-popup .dialog-message{height:155px;width:155px;background-color:#fff;border-radius:10px}#elementor-saved-popup .elementor-dialog-message{padding:15px}#elementor-saved-popup .elementor-dialog-message .fa{font-size:85px;padding:10px}#elementor-saved-popup .elementor-dialog-message-text{text-transform:uppercase}.elementor-button{outline:none;border:none;border-radius:3px;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.elementor-button:not([disabled]){cursor:pointer}.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.elementor-button.elementor-button-success,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button{color:#fff}.elementor-button.elementor-button-success[disabled],.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button[disabled]{background-color:#c2cbd2}.elementor-button.elementor-button-success:not([disabled]),.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]){background-color:#39b54a}.elementor-button.elementor-button-success:not([disabled]):hover,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover{opacity:.85;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-success:not([disabled]):active,.elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-go-pro{color:#fff;background-color:#fcb92c}.elementor-button.elementor-edit-template{display:inline-block;margin-top:15px;color:#fff}.elementor-button.elementor-button-default{background-color:#a4afb7;color:#fff;font-size:11px;text-transform:uppercase;padding:6.5px 15px}.elementor-button.elementor-button-default:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}.elementor-button.elementor-button-default:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-button.elementor-button-default:visited{color:#fff}.elementor-button i{margin-right:10px}.elementor-input-style,input,select,textarea{border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-input-style:not(:focus),input:not(:focus),select:not(:focus),textarea:not(:focus){border-color:#d5dadf}.elementor-input-style:focus,input:focus,select:focus,textarea:focus{border-color:#a4afb7}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:#b01b1b}.elementor-input-style,input,textarea{padding:5px 8px}.elementor-input-style,textarea{resize:vertical}input[type=checkbox],input[type=radio]{border:1px solid #d5dadf;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-transition:border-color .05s ease-in-out;-o-transition:.05s border-color ease-in-out;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=radio]:focus{border-color:#a4afb7}input[disabled]{background-color:#e6e9ec;cursor:not-allowed;opacity:1}select{height:27px}.ps-container{-ms-touch-action:none;overflow:hidden!important}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;border-radius:4px;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;border-radius:4px;-webkit-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}#nprogress{pointer-events:none}#nprogress .bar{background:#39b54a;position:fixed;z-index:3;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);-ms-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:3;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#39b54a;border-left-color:#39b54a;border-radius:50%;-webkit-animation:c .4s linear infinite;animation:c .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:5}.elementor-panel{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px}.elementor-panel ::-moz-selection{background:#5bc0de;color:#fff}.elementor-panel ::selection{background:#5bc0de;color:#fff}.elementor-panel a{color:#9b0a46;-webkit-transition:none;-o-transition:none;transition:none}.elementor-panel h1,.elementor-panel h2,.elementor-panel h3,.elementor-panel h4,.elementor-panel h5,.elementor-panel h6{font-size:100%;font-weight:400}.elementor-panel abbr,.elementor-panel acronym{border:0;font-variant:normal}.elementor-panel sup{vertical-align:text-top}.elementor-panel sub{vertical-align:text-bottom}.elementor-panel img{max-width:100%;height:auto;border:0}.elementor-panel ::-moz-focus-inner{padding:0;border:0}.elementor-panel :focus{outline:0}.elementor-panel#elementor-panel{position:fixed;height:100%;top:0;bottom:0;overflow:visible;background-color:#e6e9ec}@media (max-width:1439px){.elementor-panel{width:280px}}@media (min-width:1440px){.elementor-panel{width:300px}}.elementor-panel>.ui-resizable-e,.elementor-panel>.ui-resizable-w{position:absolute;top:0;height:100%;width:7px;right:-5px;cursor:ew-resize}.elementor-panel #elementor-panel-inner{position:relative;height:100%;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.elementor-panel .elementor-panel-container{clear:both;padding-left:15px;padding-right:15px}.elementor-panel #elementor-panel-content-wrapper{position:absolute;bottom:40px;top:40px;left:0;width:100%}.elementor-panel .elementor-panel-hide{display:none}.elementor-panel .elementor-panel-heading{display:table;table-layout:fixed;height:40px;padding:0 20px;width:100%;border-bottom:1px solid #e6e9ec;cursor:pointer}.elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before{content:""}.elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before{content:"\f0d7"}.elementor-panel .elementor-panel-heading>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-heading-toggle{width:20px;color:#495157}.elementor-panel .elementor-panel-heading-title{color:#495157;font-weight:700}.elementor-panel .elementor-panel-box{margin-top:10px;background-color:#fff}.elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}.elementor-panel .elementor-control-title{font-size:12px}.elementor-panel .elementor-button{display:inline-block}.elementor-panel .select2-container{width:100%!important}.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--multiple,.elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{border-color:#d5dadf}.elementor-panel .select2-container.select2-container--focus .select2-selection--multiple,.elementor-panel .select2-container.select2-container--focus .select2-selection--single,.elementor-panel .select2-container.select2-container--open .select2-selection--multiple,.elementor-panel .select2-container.select2-container--open .select2-selection--single{border-color:#a4afb7}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__clear{display:none}.elementor-panel .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{line-height:1.5;font-size:.9em;border:none;border-radius:0}.elementor-panel .select2-selection--single{height:27px}.elementor-panel .select2-selection__rendered{line-height:27px}.elementor-panel .select2-selection__arrow{height:27px;top:0}.elementor-panel #elementor-controls .pojo-widget-button-collapse{display:none}.elementor-panel .elementor-panel-alert{padding:15px;border-left:5px solid transparent;position:relative;font-size:12px;line-height:1.5;text-align:left}.elementor-panel .elementor-panel-alert.elementor-panel-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-panel .elementor-panel-alert.elementor-panel-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-panel .elementor-panel-alert.elementor-panel-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-panel .elementor-panel-alert.elementor-panel-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}.elementor-panel .elementor-label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;text-transform:capitalize}.elementor-panel .elementor-label.elementor-label-default{background-color:#a4afb7}.elementor-panel .elementor-label.elementor-label-info{background-color:#5bc0de}.elementor-panel .elementor-label.elementor-label-success{background-color:#5cb85c}.elementor-panel .elementor-label.elementor-label-warning{background-color:#f0ad4e}.elementor-panel .elementor-label.elementor-label-danger{background-color:#d9534f}.elementor-panel .elementor-control-field-description,.elementor-panel .elementor-descriptor{font-size:11px;font-style:italic;line-height:1.4;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box{padding:30px 20px;text-align:center}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-icon{font-size:52px;color:#a4afb7}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-title{margin-top:20px;font-size:16px;font-weight:700}.elementor-panel .elementor-panel-nerd-box .elementor-panel-nerd-box-message{margin-top:20px;line-height:1.4;font-size:11px}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link{background-color:#fcb92c;color:#fff;padding:7px 25px;margin-top:20px;-webkit-box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);box-shadow:0 0 1px rgba(0,0,0,.1),0 2px 2px rgba(0,0,0,.1);-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-panel .elementor-panel-nerd-box .elementor-button.elementor-panel-nerd-box-link:hover{background-color:#fdca5e}.elementor-panel #elementor-panel-get-pro-elements .elementor-panel-nerd-box-message{text-transform:uppercase}.elementor-panel #elementor-panel-header{display:table;height:40px;width:100%;background-color:#9b0a46;color:#fff}.elementor-panel #elementor-panel-header>*{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-header-button{width:40px}.elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-header-button .elementor-icon:hover{color:#d5dadf}.elementor-panel #elementor-panel-header-title{font-size:15px}.elementor-panel #elementor-panel-header-title img{width:66px}.elementor-panel #elementor-panel-elements-navigation .elementor-panel-navigation-tab{text-align:center;padding:10px 0;font-size:11px;text-transform:uppercase;cursor:pointer}.elementor-panel #elementor-panel-elements{overflow:hidden;padding:0 5px}.elementor-panel .elementor-element-wrapper{float:left;width:50%;padding:5px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-element{border-radius:3px;background-color:#fff;cursor:move}.elementor-panel .elementor-element:hover{-webkit-box-shadow:0 2px 6px rgba(0,0,0,.2);box-shadow:0 2px 6px rgba(0,0,0,.2)}.elementor-panel .elementor-element:hover .icon,.elementor-panel .elementor-element:hover .title{color:#9b0a46}.elementor-panel .elementor-element .icon{font-size:28px;padding-top:15px;color:#556068}.elementor-panel .elementor-element .elementor-element-title-wrapper{display:table;width:100%}.elementor-panel .elementor-element .title{font-size:11px;color:#556068;display:table-cell;vertical-align:middle;height:40px}.elementor-panel #elementor-panel-elements-search-wrapper{position:relative;margin:10px 10px 5px}.elementor-panel #elementor-panel-elements-search-wrapper i{position:absolute;right:0;top:50%;color:#a4afb7;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:right 1s;-o-transition:right 1s;transition:right 1s}.elementor-panel #elementor-panel-elements-search-input{font-size:11px;border-radius:0;padding:10px 27px 10px 0;font-style:italic;color:#a4afb7;border:none;-webkit-transition:all 1s;-o-transition:all 1s;transition:all 1s}.elementor-panel #elementor-panel-elements-search-input:focus{background-color:hsla(0,0%,100%,.7);padding-left:15px}.elementor-panel #elementor-panel-elements-search-input:focus+i{right:15px}.elementor-panel .elementor-panel-category:first-child .panel-elements-category-title{padding-top:14px}.elementor-panel .panel-elements-category-title-basic{display:none}.elementor-panel .panel-elements-category-title{padding:12px 15px;text-transform:uppercase;font-size:11px}.elementor-panel .panel-elements-category-items{overflow:hidden;padding:0 5px}.elementor-panel .elementor-panel-scheme-title{padding:10px 20px;margin-top:10px}.elementor-panel .elementor-panel-scheme-description{padding:20px 20px 0}.elementor-panel .elementor-panel-scheme-buttons{padding:0 20px;display:table;table-layout:fixed;width:100%;height:40px;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-scheme-button-wrapper{display:table-cell;vertical-align:middle;text-align:center}.elementor-panel .elementor-panel-scheme-button-wrapper:first-child{text-align:left}.elementor-panel .elementor-panel-scheme-button-wrapper:last-child{text-align:right}.elementor-panel .elementor-panel-scheme-save .elementor-button{padding:6px 18px;text-transform:uppercase}.elementor-panel .elementor-panel-scheme-discard .elementor-button,.elementor-panel .elementor-panel-scheme-reset .elementor-button{color:#a4afb7;background:none}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-items{position:relative}.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item{display:inline-block}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-right:13px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-right:19px}}.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}@media (max-width:1439px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:4px}}@media (min-width:1440px){.elementor-panel .elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:6px}}.elementor-panel .elementor-panel-scheme-color-title{text-align:center;text-transform:uppercase;margin:10px 0;color:#c2cbd2;font-size:8px}.elementor-panel .elementor-panel-scheme-typography-item{display:table;table-layout:fixed;width:100%;margin-bottom:15px}.elementor-panel .elementor-panel-scheme-typography-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-scheme-typography-item-value input,.elementor-panel .elementor-panel-scheme-typography-item-value select{width:100%}.elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open)+.elementor-panel-scheme-typography-items{display:none}.elementor-panel .elementor-panel-scheme-color-system-scheme{margin-bottom:10px}.elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title{font-size:11px;color:#a4afb7;font-style:italic;margin-top:5px}.elementor-panel .elementor-panel-scheme-color-system-items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;overflow:hidden;padding:3px;border-radius:3px;border:1px solid #d5dadf;cursor:pointer}.elementor-panel .elementor-panel-scheme-color-system-items:hover{border:1px solid #a4afb7}.elementor-panel .elementor-panel-scheme-color-system-item{height:20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-panel #elementor-panel-schemes-disabled a:hover{text-decoration:underline}.elementor-panel #elementor-panel-page-menu{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}.elementor-panel .elementor-panel-menu-item{display:table;width:100%;height:50px;cursor:pointer;margin-bottom:1px}.elementor-panel .elementor-panel-menu-item:not(:hover){background-color:#fff}.elementor-panel .elementor-panel-menu-item>*{display:table-cell;vertical-align:middle}.elementor-panel .elementor-panel-menu-item-icon{text-align:center;width:55px}.elementor-panel .elementor-panel-menu-item-title{font-weight:500}.elementor-panel .elementor-panel-menu-item-title>span{color:#39b54a}.elementor-panel .elementor-panel-navigation{background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);display:table;table-layout:fixed;width:100%}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab{display:table-cell}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab.active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a{display:block;text-align:center;padding:12px 0 8px;font-size:10px;color:#6d7882}.elementor-panel .elementor-panel-navigation .elementor-panel-navigation-tab a:before{font-family:FontAwesome;font-size:16px;display:block;margin-bottom:6px}.elementor-panel .elementor-tab-control-content a:before{content:"\f040"}.elementor-panel .elementor-tab-control-style a:before{content:"\f042"}.elementor-panel .elementor-tab-control-advanced a:before,.elementor-panel .elementor-tab-control-general_style a:before,.elementor-panel .elementor-tab-control-settings a:before{content:"\f013"}.elementor-panel .elementor-tab-control-responsive a:before{content:"\f10a"}.elementor-panel .elementor-tab-control-column a:before,.elementor-panel .elementor-tab-control-layout a:before{content:"\f0db"}.elementor-panel .elementor-tab-control-lightbox a:before{content:"\f2d2"}.elementor-panel .elementor-control{background-color:#fff;position:relative;padding:0 20px 15px}.elementor-panel .elementor-control.elementor-control-separator-default:before{content:"";height:1px;display:block;margin-bottom:15px;background-color:#e6e9ec}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp{margin-top:15px}.elementor-panel .elementor-control.elementor-control-separator-default.elementor-control-wp:before{background-color:transparent}.elementor-panel .elementor-control.elementor-control-separator-before{padding-top:15px}.elementor-panel .elementor-control.elementor-control-separator-before:before{content:"";position:absolute;height:3px;width:100%;top:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after:after{content:"";position:absolute;height:3px;width:100%;bottom:0;left:0;background-color:#d5dadf}.elementor-panel .elementor-control.elementor-control-separator-after+.elementor-control-type-tabs{padding-top:15px}.elementor-panel .elementor-control.elementor-control-deprecated,.elementor-panel .elementor-control.elementor-control-deprecated .elementor-control-field-description{color:#b01b1b}.elementor-panel .elementor-control.elementor-control-hidden-label>*>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-control-hidden-label>*>.elementor-control-title,.elementor-panel .elementor-control.elementor-hidden-control{display:none}.elementor-panel .elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}body:not(.elementor-device-desktop) .elementor-panel .elementor-control.elementor-control-responsive-desktop,body:not(.elementor-device-mobile) .elementor-panel .elementor-control.elementor-control-responsive-mobile,body:not(.elementor-device-tablet) .elementor-panel .elementor-control.elementor-control-responsive-tablet{display:none}.elementor-panel .elementor-control-wp{line-height:1.5}.elementor-panel .elementor-control-wp p{margin:15px 0}.elementor-panel .elementor-control-field{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-panel .elementor-label-block>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:10px}.elementor-panel .elementor-label-block.elementor-control-hidden-label>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{margin-top:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:45%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-panel .elementor-label-inline>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{width:55%}.elementor-panel .elementor-control-field-description{margin-top:10px}.elementor-panel .elementor-required{color:#b01b1b}.elementor-panel .elementor-choices{display:table;width:100%;height:27px;background-color:#a4afb7;text-align:center;border-spacing:1px;border-radius:3px}.elementor-panel .elementor-choices input{display:none}.elementor-panel .elementor-choices input:checked+.elementor-choices-label{color:#fff}.elementor-panel .elementor-choices input:not(:checked)+.elementor-choices-label{background-color:#fff;color:#a4afb7}.elementor-panel .elementor-choices .elementor-choices-label{display:table-cell;vertical-align:middle;font-size:12px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;cursor:pointer}.elementor-panel .elementor-slider{display:inline-block;margin-top:10px;height:4px;background-color:#a4afb7;border-radius:5px;position:relative;width:67%}.elementor-panel .elementor-slider .ui-slider-handle{height:16px;width:16px;background-color:#fff;display:inline-block;top:50%;-webkit-transform:translateY(-50%) translateX(-8px);-ms-transform:translateY(-50%) translateX(-8px);transform:translateY(-50%) translateX(-8px);position:absolute;-webkit-box-shadow:1px 1px 6px rgba(0,0,0,.3);box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:50%;cursor:pointer}.elementor-panel .elementor-slider-input{width:33%;float:right}.elementor-panel .elementor-slider-input input{width:80%;float:right}.elementor-panel .elementor-units-choices{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-panel .elementor-units-choices input{display:none}.elementor-panel .elementor-units-choices input:not(:checked)+label{color:#c2cbd2}.elementor-panel .elementor-units-choices input:checked+label{text-decoration:underline}.elementor-panel .elementor-units-choices label{cursor:pointer;padding:0 2px;text-transform:uppercase;font-size:9px}.elementor-panel .elementor-control-responsive-switchers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 5px}.elementor-panel .elementor-responsive-switcher{display:inline-block;border-radius:50%;height:18px;width:18px;background-color:#a4afb7;cursor:pointer;position:relative;margin-left:5px;color:#fff;font-size:8px;text-align:center;-webkit-transition:background-color .5s;-o-transition:background-color .5s;transition:background-color .5s}.elementor-panel .elementor-responsive-switcher:hover{background-color:#c2cbd2}.elementor-panel .elementor-responsive-switcher i{line-height:18px}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher{background:#c2cbd2}.elementor-device-desktop #elementor-panel .elementor-panel-controls-stack:not(.elementor-responsive-switchers-open) .elementor-responsive-switcher:not(.elementor-responsive-switcher-desktop){display:none}.elementor-device-mobile .elementor-panel .elementor-responsive-switcher-mobile,.elementor-device-tablet .elementor-panel .elementor-responsive-switcher-tablet{background-color:#71d7f7}.elementor-panel .elementor-update-preview{margin:15px 15px 0;background-color:#e6e9ec;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-update-preview-button-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-panel .elementor-update-preview-button{padding:8px 15px;text-transform:uppercase}.elementor-panel .elementor-control-align .elementor-choices,.elementor-panel .elementor-control-position .elementor-choices,.elementor-panel .elementor-control-text_align .elementor-choices{direction:ltr}.elementor-panel .elementor-control-type-media .elementor-control-media{padding:7px;border:1px solid;height:150px}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover){border-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button{background-color:#d5dadf}.elementor-panel .elementor-control-type-media .elementor-control-media:hover{border-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button{background-color:#a4afb7}.elementor-panel .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area,.elementor-panel .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media>*{height:100%;cursor:pointer;position:relative}.elementor-panel .elementor-control-type-media .fa-plus-circle{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:20px}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete{display:none}.elementor-panel .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image{opacity:.5}.elementor-panel .elementor-control-type-media .elementor-control-media-delete{position:absolute;bottom:0;left:0;right:0;text-align:center;padding:9.5px;font-size:11px;color:#fff;background-color:#a4afb7;text-transform:uppercase}.elementor-panel .elementor-control-type-media .elementor-control-media-image{height:100%;background-size:cover}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimensions{overflow:hidden}.elementor-panel .elementor-control-type-dimensions li{float:left;width:20%}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions,.elementor-panel .elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;border-color:#a4afb7;height:27px}.elementor-panel .elementor-control-type-dimensions li input{border-left:none;border-radius:0;padding:4px 0}.elementor-panel .elementor-control-type-dimensions li input:focus+.elementor-control-dimension-label{color:#a4afb7}.elementor-panel .elementor-control-type-dimensions li .elementor-link-dimensions{border:1px solid #a4afb7;border-left:none;background-color:#fff;padding:0;outline:none;border-radius:0 3px 3px 0;cursor:pointer}.elementor-panel .elementor-control-type-dimensions li:first-child input{border-left:1px solid #a4afb7;border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-dimensions .elementor-control-dimension-label{display:block;text-align:center;color:#d5dadf;font-size:9px;text-transform:uppercase;padding-top:5px}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:#fff}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:#a4afb7}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}.elementor-panel .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked{color:#fff}.elementor-panel .elementor-control-type-url .elementor-control-url-external-hide .elementor-control-url-more{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-external-show input{padding-right:46px}.elementor-panel .elementor-control-type-url .elementor-control-input-wrapper{position:relative}.elementor-panel .elementor-control-type-url .elementor-control-url-more{position:absolute;top:0;right:0;height:26px;width:40px;border-left:1px solid;cursor:pointer;font-size:10px;border-radius:0 3px 3px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-panel .elementor-control-type-url .elementor-control-url-more i{font-size:13px}.elementor-panel .elementor-control-type-url .elementor-control-url-more-input,.elementor-panel .elementor-control-type-url .elementor-control-url-more-input:not(:checked)+.elementor-control-url-more-options{display:none}.elementor-panel .elementor-control-type-url .elementor-control-url-more-options{padding-top:10px}.elementor-panel .elementor-control-type-url .elementor-control-url-option{padding:5px;font-size:12px}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url],.elementor-panel .elementor-control-type-url input[type=url]{direction:ltr}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:not(:focus)+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:not(:focus)+.elementor-control-url-more{border-color:#d5dadf}.elementor-panel .elementor-control-type-url .elementor-input[data-setting=url]:focus+.elementor-control-url-more,.elementor-panel .elementor-control-type-url input[type=url]:focus+.elementor-control-url-more{border-color:#a4afb7}.elementor-panel .elementor-control-type-section{margin-top:10px;padding:0}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section){padding-top:15px}.elementor-panel .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:70%}.elementor-panel .elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-input-wrapper{height:27px;width:30%}.elementor-panel .elementor-control-type-wysiwyg.elementor-rich-editing-disabled .wp-editor-container{margin-top:10px}.elementor-panel .elementor-control-type-wysiwyg *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .elementor-control-type-wysiwyg .wp-editor-container{border:1px solid #e6e9ec;border-radius:3px}.elementor-panel .elementor-control-type-wysiwyg #insert-media-button{margin-top:7px;height:auto;line-height:1;font-size:10px;padding:3px 7px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .ed_button{height:22px;width:auto}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}.elementor-panel .elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}.elementor-panel .elementor-control-type-wysiwyg .wp-switch-editor{border:none;color:#6d7882;font-size:10px;padding:3px 9px 4px;border-radius:3px 3px 0 0}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .html-active .switch-html,.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp,.elementor-panel .elementor-control-type-wysiwyg .quicktags-toolbar{background-color:#e6e9ec}.elementor-panel .elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}.elementor-panel .elementor-control-type-wysiwyg .elementor-wp-editor{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor-panel .elementor-control-type-wysiwyg .mce-ico{color:#6d7882;font-size:16px}.elementor-panel .elementor-control-type-wysiwyg .mce-btn{margin-right:0;margin-left:0}.elementor-panel .elementor-control-type-wysiwyg .mce-btn.mce-active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:active,.elementor-panel .elementor-control-type-wysiwyg .mce-btn:hover{border-color:#d5dadf}.elementor-panel .elementor-control-type-wysiwyg .mce-path{padding:5px 10px}.elementor-panel .elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:#6d7882}.elementor-panel .elementor-control-type-icon .select2-selection__rendered .fa{margin-right:3px}.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-clear,.elementor-panel .elementor-control-type-gallery.elementor-gallery-empty .elementor-control-gallery-thumbnails{display:none}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnails{overflow:hidden;margin-top:20px;cursor:pointer}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail{width:40px;height:40px;background-size:cover;background-position:50% 50%;float:left;margin-bottom:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-thumbnail:not(:nth-child(5n)){margin-right:10px}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-add{width:100%;height:30px;color:#fff;background-color:#a4afb7;margin-top:10px;text-transform:uppercase}.elementor-panel .elementor-control-type-gallery .elementor-control-gallery-clear{color:#b01b1b;cursor:pointer}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset{border:1px solid #e6e9ec;padding:3px;border-radius:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset){display:inline-block;cursor:pointer;height:50px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) svg{height:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset path{fill:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-current-preset svg{display:block;width:100%}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset{padding:10px 0 0 2px;font-size:11px;cursor:pointer;color:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-reset i{margin-right:8px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{color:#495157;font-weight:700;padding:13.5px 20px;position:relative}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{content:"";position:absolute;left:0;right:0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{top:0;background-color:#e6e9ec;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:after,.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:after{bottom:0;height:1px;background-color:#e6e9ec}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title{margin:10px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-title:before{height:10px;-webkit-box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1);box-shadow:inset 0 2px 4px hsla(0,0%,50%,.1)}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title{margin:15px -20px 0}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets-title:before{height:3px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input{display:none}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset{border:1px solid #a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset path{fill:#a4afb7}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-wrapper{margin-top:15px}.elementor-panel .elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-top:5px;font-style:italic;font-size:11px;color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-field-description{margin:0 0 15px;line-height:1.4}.elementor-panel .elementor-control-type-image_dimensions .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field{width:70px;float:left}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field input:focus+.elementor-image-dimensions-field-description{color:#a4afb7}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-separator{width:20px;text-align:center;float:left;padding-top:4px}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-field-description{display:block;text-transform:uppercase;margin-top:5px;color:#d5dadf;font-size:9px;text-align:center}.elementor-panel .elementor-control-type-image_dimensions .elementor-image-dimensions-apply-button{float:right;height:27px;width:70px}.elementor-panel .elementor-control-type-code{padding:0 10px 15px}.elementor-panel .elementor-control-type-wp_widget .widget-inside{display:block}.elementor-panel .elementor-control-type-wp_widget .quicktags-toolbar input{width:auto}.elementor-panel .elementor-control-type-tabs{font-size:.8em;color:#a4afb7;text-transform:uppercase;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-tab{text-align:center;width:100%;padding:0;line-height:30px;border-top:1px solid #a4afb7;border-bottom:1px solid #a4afb7;border-right:1px solid #a4afb7;cursor:pointer}.elementor-panel .elementor-control-type-tab:first-child{border-left:1px solid #a4afb7;border-top-left-radius:3px;border-bottom-left-radius:3px}.elementor-panel .elementor-control-type-tab:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.elementor-panel .elementor-control-type-tab.elementor-tab-active{background-color:#a4afb7;color:#fff}.elementor-panel .elementor-tab-close{display:none!important}.elementor-panel .elementor-control-type-repeater,.elementor-panel .elementor-control-type-repeater .elementor-control:not(.elementor-control-type-tab){padding:0 10px 15px}.elementor-panel .elementor-control-type-repeater .elementor-control:before,.elementor-panel .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}.elementor-panel .elementor-control-type-repeater .repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls{border:1px solid #d5dadf;border-top-width:0;padding-top:15px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-controls .wp-picker-container.wp-picker-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);border-width:0}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools{display:table;table-layout:fixed;width:100%;color:#556068;background-color:#d5dadf;height:40px;border-spacing:1px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools:hover{background-color:#a4afb7}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div{display:table-cell;text-align:center;vertical-align:middle;cursor:pointer}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:not(.elementor-repeater-row-handle-sortable){background-color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools>div:hover{opacity:.95}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title{text-align:left;padding:0 10px;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title .fa{margin-right:5px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px}.elementor-panel .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{cursor:move;width:10px;color:#fff}.elementor-panel .elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding:10px}.elementor-panel .elementor-control-type-textarea textarea{display:block}.elementor-panel .elementor-control-type-box_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-box_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-text_shadow .elementor-control-input-wrapper{overflow:hidden}.elementor-panel .elementor-control-type-text_shadow .elementor-shadow-slider{margin-top:10px}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-title{width:70%}.elementor-panel .elementor-control-type-switcher.elementor-label-inline>.elementor-control-content .elementor-control-field .elementor-control-input-wrapper{width:30%}.elementor-panel .elementor-control-type-switcher .elementor-control-input-wrapper{text-align:right}.elementor-panel .elementor-control-type-switcher .elementor-switch{position:relative;display:inline-block;vertical-align:top;width:49px;height:20px;background-color:#fff;border-radius:18px;cursor:pointer}.elementor-panel .elementor-control-type-switcher .elementor-switch-input{display:none}.elementor-panel .elementor-control-type-switcher .elementor-switch-label{position:relative;display:block;height:inherit;font-size:7px;text-transform:uppercase;background:#eceeef;border-radius:inherit;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.12),inset 0 0 2px rgba(0,0,0,.15);-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-transition-property:opacity,background;-o-transition-property:opacity,background;transition-property:opacity,background}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after,.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{position:absolute;top:0;width:50%;text-align:center;line-height:20px;-webkit-transition:inherit;-o-transition:inherit;transition:inherit}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:before{content:attr(data-off);right:3px;color:#a4afb7;text-shadow:0 1px hsla(0,0%,100%,.5)}.elementor-panel .elementor-control-type-switcher .elementor-switch-label:after{content:attr(data-on);left:3px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label{background:#71d7f7;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 2px rgba(0,0,0,.15),inset 0 0 3px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:before{opacity:0}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-label:after{opacity:1}.elementor-panel .elementor-control-type-switcher .elementor-switch-handle{position:absolute;top:1px;left:1px;width:18px;height:18px;background:#fff;border-radius:10px;-webkit-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.elementor-panel .elementor-control-type-switcher .elementor-switch-input:checked~.elementor-switch-handle{left:30px;-webkit-box-shadow:-1px 1px 5px rgba(0,0,0,.2);box-shadow:-1px 1px 5px rgba(0,0,0,.2)}.elementor-panel .elementor-control-type-order .elementor-control-oreder-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-panel .elementor-control-type-order input{display:none}.elementor-panel .elementor-control-type-order input:checked+.elementor-control-order-label{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}.elementor-panel .elementor-control-type-order select{border-radius:3px 0 0 3px}.elementor-panel .elementor-control-type-order select:not(:focus)~.elementor-control-order-label{border-color:#d5dadf}.elementor-panel .elementor-control-type-order select:focus~.elementor-control-order-label{border-color:#a4afb7}.elementor-panel .elementor-control-type-order .elementor-control-order-label{position:relative;padding:0;width:40px;border:1px solid;font-size:10px;border-radius:0 3px 3px 0;margin-left:-3px;background-color:#fff;cursor:pointer}.elementor-panel .elementor-control-type-order .elementor-control-order-label i{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-panel .elementor-control-type-hidden{display:none!important}.elementor-panel .wp-picker-container.wp-picker-active{position:absolute;z-index:1;top:0;left:0;background-color:#fff;border:solid #fff;border-width:0 17px 0 12px;padding-top:10px;-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4)}.elementor-panel .wp-picker-container.wp-picker-active .wp-color-result{float:right}.elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap{padding-left:10px;float:left}.elementor-panel .wp-picker-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-container .iris-picker{border:none}.elementor-panel .wp-color-result{margin:0;width:48px;height:25px;-webkit-transition:border .5s;-o-transition:border .5s;transition:border .5s;padding:0;border-radius:3px;border:1px solid #d5dadf}.elementor-panel .wp-color-result,.elementor-panel .wp-color-result:focus{-webkit-box-shadow:inset 0 0 0 3px #fff;box-shadow:inset 0 0 0 3px #fff}.elementor-panel .wp-color-result.wp-picker-open:after,.elementor-panel .wp-color-result:after{content:none}.elementor-panel .wp-color-result:hover{border:1px solid #a4afb7}.elementor-panel .wp-color-result:active,.elementor-panel .wp-color-result:focus{outline:0}.elementor-panel .wp-picker-clear.button,.elementor-panel .wp-picker-default.button{height:26px;width:48px;padding:0;background-color:#d5dadf;border-radius:0 3px 3px 0;margin:0}.elementor-panel .wp-color-picker{float:left;width:100px;max-width:100px;border-radius:3px 0 0 3px;line-height:1}.elementor-panel .wp-picker-holder *{-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-panel .wp-picker-open~.wp-picker-holder{clear:both;margin-bottom:15px}.elementor-panel .elementor-control .wp-picker-container:not(.wp-picker-active){float:right}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active{-webkit-transform:translateY(6px);-ms-transform:translateY(6px);transform:translateY(6px)}.elementor-panel .elementor-control .wp-picker-container.wp-picker-active .wp-color-result{margin-right:3px}.elementor-panel #elementor-panel-footer{position:absolute;bottom:0;left:0;right:0;height:40px;background-color:#495157}.elementor-panel #elementor-panel-footer-tools{display:table;table-layout:fixed;width:100%;height:100%}.elementor-panel .elementor-panel-footer-tool{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;color:#a4afb7;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-panel .elementor-panel-footer-tool.elementor-open{color:#fff}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover{color:#d5dadf}.elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper{display:none}.elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#556068;padding:10px;-webkit-box-shadow:-2px -5px 8px rgba(0,0,0,.1);box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default;z-index:2}.elementor-panel .elementor-panel-footer-sub-menu{border-radius:5px;overflow:hidden}.elementor-panel .elementor-panel-footer-sub-menu-item{background-color:#495157;display:table;table-layout:fixed;width:100%;cursor:pointer}.elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){margin-bottom:1px}.elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode=mobile-landscape] .fa-mobile{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:rgba(0,0,0,.2)}.elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:rgba(0,0,0,.3)}.elementor-panel .elementor-panel-footer-sub-menu-item>*{display:table-cell;height:40px;vertical-align:middle}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon{width:40px;color:#a4afb7}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title{text-align:left;color:#d5dadf}.elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description{width:95px;text-align:left;font-size:11px;font-style:italic;color:#a4afb7}.elementor-panel #elementor-panel-footer-help-title{text-align:left;padding:10px 0;color:#d5dadf}.elementor-panel #elementor-panel-footer-save{width:90px;padding:0 10px}.elementor-panel #elementor-panel-footer-save .elementor-button{font-size:11px;text-transform:uppercase;width:100%;height:26px;background-color:#556068;color:#a4afb7}.elementor-panel #elementor-panel-footer-publish .elementor-icon,.elementor-panel #elementor-panel-footer-publish .elementor-title{color:#39b54a}.elementor-panel #elementor-panel-footer-discard .elementor-icon,.elementor-panel #elementor-panel-footer-discard .elementor-title{color:#b01b1b}#elementor-mode-switcher{position:absolute;left:100%;top:50%;width:15px;height:50px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);background-color:#e6e9ec;font-size:15px;-webkit-box-shadow:3px 1px 5px rgba(0,0,0,.1);box-shadow:3px 1px 5px rgba(0,0,0,.1);cursor:pointer}#elementor-mode-switcher:hover,body.elementor-editor-preview #elementor-mode-switcher{background-color:#9b0a46;color:#fff}#elementor-mode-switcher-inner,#elementor-mode-switcher-preview{width:100%;height:100%;position:absolute;top:0;left:0}#elementor-mode-switcher-preview{cursor:pointer}#elementor-mode-switcher-preview .fa{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}#elementor-mode-switcher-preview-input{display:none}.elementor-revision-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border:1px solid #d5dadf;padding:10px 15px;margin-bottom:10px}.elementor-revision-item:hover:not(.elementor-revision-current-preview){background-color:rgba(230,233,236,.3)}.elementor-revision-item-loading .elementor-revision-item__tools-delete,.elementor-revision-item:not(.elementor-revision-item-loading) .elementor-revision-item__tools-spinner,.elementor-revision-item:not(:hover) .elementor-revision-item__tools-delete{display:none}.elementor-revision-item__gravatar{border-radius:50%;overflow:hidden}.elementor-revision-item__gravatar img{display:block}.elementor-revision-item__details{padding-left:15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;cursor:pointer}.elementor-revision-item__tools-delete{cursor:pointer}.elementor-revision-date{font-size:11px}.elementor-revision-meta{padding-top:5px;font-size:10px;font-weight:700}.elementor-revision-current-preview{background-color:#e6e9ec}#elementor-preview{background-color:#333;position:absolute;height:100%;top:0;right:0;border:0}.elementor-device-desktop #elementor-preview{overflow-y:hidden}body:not(.elementor-device-desktop) #elementor-preview{overflow-y:auto}#elementor-preview-responsive-wrapper{position:absolute;top:0;bottom:0;left:0;right:0;-webkit-transition:all .5s ease 0s;-o-transition:all .5s ease 0s;transition:all .5s ease 0s}.elementor-device-desktop #elementor-preview-responsive-wrapper{min-width:1025px;width:100%;height:100%}.elementor-device-tablet #elementor-preview-responsive-wrapper{width:768px;height:1025px;padding:40px 10px 70px}.elementor-device-mobile #elementor-preview-responsive-wrapper{width:360px;height:640px;padding:40px 10px 70px}body:not(.elementor-device-desktop) #elementor-preview-responsive-wrapper{border-radius:30px;background-color:#111;margin:30px auto 80px;-webkit-box-sizing:content-box;box-sizing:content-box}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:5}.tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px;text-align:center;border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none}#elementor-introduction .dialog-widget-header{padding:40px 0 0}#elementor-introduction .dialog-widget-content{width:700px;max-width:100%}#elementor-introduction .elementor-video-wrapper{padding-bottom:62.4%}#elementor-introduction .dialog-message{margin-top:40px}#elementor-introduction-title{color:#9b0a46;font-size:27px;font-weight:700}#elementor-introduction-subtitle{margin-top:12px;font-size:16px;color:#a4afb7}#elementor-template-library-modal .dialog-widget-content{width:990px;background-color:#f1f3f5}#elementor-template-library-modal .dialog-widget-header{padding:0;background-color:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);position:relative;z-index:1}#elementor-template-library-modal .dialog-buttons-wrapper{display:none}#elementor-template-library-modal .dialog-message{height:630px;max-height:85vh;overflow:auto;padding:15px}#elementor-template-library-modal a,#elementor-template-library-modal a:hover{color:inherit}#elementor-template-library-modal a.elementor-template-library-blank-footer-link{-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-modal a.elementor-template-library-blank-footer-link:hover{color:#9b0a46}#elementor-template-library-modal .elementor-button{text-transform:uppercase}#elementor-template-library-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}#elementor-template-library-header-logo-area{text-align:left;padding-left:15px}#elementor-template-library-header-logo-area>*{float:left}#elementor-template-library-header-logo-area>*>*{vertical-align:middle}#elementor-template-library-header-logo{font-size:15px;text-transform:uppercase;color:#495157;font-weight:700;cursor:pointer}#elementor-template-library-header-logo i{padding-right:10px;color:#9b0a46;font-size:20px}#elementor-template-library-header-menu-area{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}#elementor-template-library-header-menu{text-align:center}.elementor-template-library-menu-item{display:inline-block;padding:17px;cursor:pointer}.elementor-template-library-menu-item.elementor-active{background-image:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background-image:-webkit-linear-gradient(top,#f3f3f3,#fff);background-image:-o-linear-gradient(top,#f3f3f3,#fff);background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}#elementor-template-library-header-items-area{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-template-library-header-item{position:relative;border-left:1px solid #e6e9ec;height:50px;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-header-item:not(:hover){color:#a4afb7}.elementor-template-library-header-item>i{font-size:18px}#elementor-template-library-header-close-modal,#elementor-template-library-header-save{width:56px}#elementor-template-library-header-close-modal,#elementor-template-library-header-preview-insert-wrapper,#elementor-template-library-header-save{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-header-preview-insert-wrapper{cursor:default;padding:0 10px}#elementor-template-library-header-preview-insert-wrapper .elementor-button{padding:8px 14px}#elementor-template-library-header-preview-back{padding:16.5px 16.5px 15px 0;border-right:1px solid #e6e9ec;cursor:pointer;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}#elementor-template-library-header-preview-back:not(:hover){color:#a4afb7}#elementor-template-library-header-preview-back i{padding-right:10px;font-size:18px}#elementor-template-library-header-preview-back i:before{content:""}#elementor-template-library-loading .elementor-loading-title{color:#a4afb7}#elementor-template-library-loading .elementor-loader-box{background-color:#d5dadf}#elementor-template-library-templates-container{overflow:hidden}#elementor-template-library-templates-container[data-template-source=local]{-webkit-box-shadow:1px 1px 5px rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.1);margin:15px}#elementor-template-library-templates-container:not([data-template-source=remote])+#elementor-template-library-footer-banner{display:none}.elementor-template-library-template-remote{float:left;width:25%;padding:0 15px;margin-top:15px}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body{position:relative}.elementor-template-library-template-remote.elementor-template-library-pro-template .elementor-template-library-template-body:before{position:absolute;content:"pro";text-transform:uppercase;top:5px;right:5px;background-color:#9b0a46;color:#d5dadf;padding:1px 4px;font-size:9px;border-radius:2px}.elementor-template-library-template-remote .elementor-template-library-template-body{height:250px;border:3px solid #fff;position:relative;-webkit-box-shadow:0 1px 6px rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.2)}.elementor-template-library-template-remote .elementor-template-library-template-body:not(:hover) .elementor-template-library-template-controls{opacity:0}.elementor-template-library-template-remote .elementor-template-library-template-screenshot{height:100%;background-size:cover;background-position-x:50%}.elementor-template-library-template-remote .elementor-template-library-template-controls{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-template-library-template-remote .elementor-template-library-template-action{font-size:11px;width:150px;padding:11px}.elementor-template-library-template-remote .elementor-template-library-template-preview{position:relative;height:180px;cursor:pointer}.elementor-template-library-template-remote .elementor-template-library-template-preview i{font-size:20px;color:#d5dadf;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-template-library-template-remote .elementor-template-library-template-name{margin:13px 0 10px;font-size:12px;text-align:center;color:#6d7882}.elementor-template-library-template-local{background-color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #d5dadf;height:50px;-webkit-transition:background-color .3s linear;-o-transition:background-color .3s linear;transition:background-color .3s linear}.elementor-template-library-template-local:hover{background-color:#fafbfb}.elementor-template-library-template-local:not(:hover) .elementor-template-library-template-controls{visibility:hidden}.elementor-template-library-template-local>*{text-align:start}.elementor-template-library-template-local .elementor-template-library-template-icon{text-align:center;width:6%}.elementor-template-library-template-local .elementor-template-library-template-name{font-size:13px;font-weight:500;width:35%}.elementor-template-library-template-local .elementor-template-library-template-type{color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-controls{direction:rtl;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-template-library-template-local .elementor-template-library-template-controls>*{direction:ltr}.elementor-template-library-template-local .elementor-template-library-template-controls>div{display:inline-block;margin-left:15px;cursor:pointer;font-weight:500;-webkit-transition:color .5s;-o-transition:color .5s;transition:color .5s}.elementor-template-library-template-local .elementor-template-library-template-controls>div:not(:hover){color:#a4afb7}.elementor-template-library-template-local .elementor-template-library-template-control-title{margin-left:6px}.elementor-template-library-template-local .elementor-template-library-template-delete:hover{color:#b01b1b}.elementor-template-library-template-local .elementor-template-library-template-action{padding:8px 18px;margin:0 20px}#elementor-template-library-preview{height:100%;overflow:hidden}#elementor-template-library-preview iframe{width:1440px;height:150%;-webkit-transform:scale(.666) translateX(-25%) translateY(-25%);-ms-transform:scale(.666) translateX(-25%) translateY(-25%);transform:scale(.666) translateX(-25%) translateY(-25%)}.elementor-template-library-blank-title{font-size:30px;margin-top:55px}.elementor-template-library-blank-excerpt{font-size:18px;color:#a4afb7;margin-top:20px;font-weight:300}#elementor-template-library-save-template-form{margin-top:55px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}#elementor-template-library-save-template-form>*{height:60px;font-size:18px}#elementor-template-library-save-template-name{width:460px;background-color:#fff;font-weight:300;color:#a4afb7;padding-left:25px;border-radius:3px 0 0 3px;border:none}#elementor-template-library-save-template-name:focus{border:1px solid #e6e9ec}#elementor-template-library-save-template-submit{width:150px;border-radius:0 3px 3px 0;font-weight:500}#elementor-template-library-save-template-submit:hover{-webkit-box-shadow:none;box-shadow:none}.elementor-template-library-blank-footer{position:absolute;bottom:90px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);color:#a4afb7;font-size:13px;font-style:italic}#elementor-template-library-footer-banner i{color:#c2cbd2;font-size:56px;margin-top:40px}#elementor-template-library-footer-banner .elementor-excerpt{color:#a4afb7;font-size:15px;font-weight:500;margin:20px 0}#elementor-template-library-templates-empty-icon{font-size:96px;margin-top:40px;color:#d5dadf}#elementor-template-library-error-dialog .dialog-message{text-align:start}#elementor-template-library-error-info{margin-top:10px}
assets/css/frontend-rtl.css CHANGED
@@ -1659,10 +1659,6 @@ body.admin-bar .dialog-close-button {
1659
  background-color: #1ab7ea; }
1660
  .elementor-social-icon-vk {
1661
  background-color: #45668e; }
1662
- .elementor-social-icon-weibo {
1663
- background-color: #df2029; }
1664
- .elementor-social-icon-weixin {
1665
- background-color: #7bb32e; }
1666
  .elementor-social-icon-whatsapp {
1667
  background-color: #25d366; }
1668
  .elementor-social-icon-wordpress {
1659
  background-color: #1ab7ea; }
1660
  .elementor-social-icon-vk {
1661
  background-color: #45668e; }
 
 
 
 
1662
  .elementor-social-icon-whatsapp {
1663
  background-color: #25d366; }
1664
  .elementor-social-icon-wordpress {
assets/css/frontend-rtl.min.css CHANGED
@@ -1,2 +1,2 @@
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
- @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-left:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor{-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}.elementor *,.elementor :after,.elementor :before{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor a{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-custom-embed{line-height:0}.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor .elementor-background-video{position:absolute;max-width:none;top:50%;left:50%;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:FontAwesome;-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.elementor-custom-embed-play.elementor-playing i:before{content:"\f1ce"}.elementor-swiper-button{position:absolute;z-index:1;cursor:pointer;font-size:25px;color:#fff;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-swiper-button-prev{left:40px}.elementor-swiper-button-next{right:40px}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e800";font-family:eicons;font-size:12px;margin-top:5px}.elementor:after{position:absolute;opacity:0;width:0;height:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (min-width:1025px){.elementor:after{content:"desktop"}}@media (min-width:768px) and (max-width:1024px){.elementor:after{content:"tablet"}}@media (max-width:767px){.elementor:after{content:"mobile"}}.elementor-section{position:relative}.elementor-section .elementor-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:auto;margin-left:auto;position:relative}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-section-content-top>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section-content-middle>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section-content-bottom>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-row{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}@media (max-width:1024px){.elementor-row{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.elementor-column-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-wrap,.elementor-widget-wrap{width:100%;position:relative}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-column{position:relative;min-height:1px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-gap-narrow>.elementor-row>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-row>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-row>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-row>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-row>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (max-width:767px){.elementor-column{width:100%}.elementor-reverse-mobile>.elementor-container>.elementor-row{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.elementor-form-fields-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>textarea{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-field-group.elementor-field-type-submit{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;border:1px solid #818a91;background-color:transparent;color:#373a3c;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\f0d7";font-family:FontAwesome;font-size:15px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:10px;pointer-events:none}.elementor-field-subgroup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-sm{font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:1024px){.elementor-tablet-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-tablet-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-tablet-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-tablet-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}@media screen and (max-width:767px){.elementor-mobile-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-mobile-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-mobile-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-mobile-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\f00c";display:inline-block;font-family:fontawesome;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\f00d"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:0 none}.elementor-form .elementor-button>span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-form .elementor-button .elementor-align-icon-right{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.elementor-form .elementor-button .elementor-align-icon-left{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-widget-heading .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title>a{color:inherit;font-size:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-image .elementor-image>a,.elementor-widget-image .elementor-image figure>a{display:block}.elementor-widget-image .elementor-image img{vertical-align:middle}.elementor-widget-image .elementor-image.elementor-image-shape-circle{border-radius:50%}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-button{display:inline-block;line-height:1;background-color:#818a91;color:#fff;text-align:center;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff;opacity:.9}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-sm{font-size:15px;padding:12px 24px;border-radius:3px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-button .elementor-button-text{display:inline-block}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-widget-divider .elementor-divider{line-height:0;font-size:0}.elementor-widget-divider .elementor-divider-separator{display:inline-block}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}.elementor-counter .elementor-counter-number-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:69px;font-weight:600;color:#222;line-height:1}.elementor-counter .elementor-counter-number-prefix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-counter .elementor-counter-number-suffix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;color:#666;line-height:2.5}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:10px;top:10px;padding:3px;font-size:13px;line-height:1;background:transparent;color:inherit;border:none}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:30px;line-height:30px;border-radius:2px}.elementor-progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#818a91;width:0;font-size:11px;border-radius:2px;-webkit-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.elementor-progress-text{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-wrapper{height:25px;line-height:25px}.elementor-progress-text{padding-right:10px}}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px none #d4d4d4}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.active{border-color:#d4d4d4}.elementor-widget-tabs .elementor-tab-desktop-title.active:after,.elementor-widget-tabs .elementor-tab-desktop-title.active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid;border-bottom-style:none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-style:solid;border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:solid;border-top-style:none}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d4d4d4}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-accordion-title{padding:15px 20px;font-weight:700;line-height:1;cursor:pointer}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon .fa:before{content:"\f067"}.elementor-accordion .elementor-accordion-title.active .elementor-accordion-icon .fa:before{content:"\f068"}.elementor-accordion .elementor-accordion-content{display:none;padding:15px 20px;border-top:1px solid #d4d4d4}@media (max-width:767px){.elementor-accordion .elementor-accordion-title{padding:12px 15px}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-accordion-content{padding:7px 15px}}.elementor-toggle{text-align:right}.elementor-toggle .elementor-toggle-title{font-weight:700;line-height:1;padding:15px;border-bottom:1px solid #d4d4d4;cursor:pointer}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon .fa:before{content:""}.elementor-toggle .elementor-toggle-title.active{border-bottom:none}.elementor-toggle .elementor-toggle-title.active .elementor-toggle-icon .fa:before{content:"\f0d7"}.elementor-toggle .elementor-toggle-content{padding:0 15px 15px;border-bottom:1px solid #d4d4d4;display:none}@media (max-width:767px){.elementor-toggle .elementor-toggle-title{padding:12px}.elementor-toggle .elementor-toggle-content{padding:0 12px 10px}}.elementor-icon{display:inline-block;line-height:1;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;color:#818a91;font-size:50px;text-align:center}.elementor-icon:hover{color:#818a91}.elementor-icon i{width:1em;height:1em}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#818a91;color:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#818a91;border:3px solid #818a91;background-color:transparent}.elementor-shape-circle .elementor-icon{border-radius:50%}.elementor-widget-icon-list.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget-icon-list:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget-icon-list:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}.elementor-widget-icon-list .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget-icon-list .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget-icon-list .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget-icon-list .elementor-icon-list-item,.elementor-widget-icon-list .elementor-icon-list-item a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-list .elementor-icon-list-item a{width:100%}.elementor-widget-icon-list .elementor-icon-list-text{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;padding-right:5px}.elementor-widget-icon-list .elementor-icon-list-icon{text-align:center}.elementor-widget-icon-list .elementor-icon-list-icon i{vertical-align:middle}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-aspect-ratio-169 .elementor-video-wrapper{padding-bottom:56.25%}.elementor-aspect-ratio-43 .elementor-video-wrapper{padding-bottom:75%}.elementor-aspect-ratio-32 .elementor-video-wrapper{padding-bottom:66.6666%}.elementor-image-carousel-wrapper .slick-image-stretch .slick-slide .slick-slide-image{width:100%}.swiper-container .swiper-slide figure{line-height:0}.elementor-widget-image-box .elementor-image-box-content,.swiper-container .swiper-slide figure img{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}@media (min-width:768px){.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-img{margin:auto}.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-icon-box .elementor-icon-box-icon{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-icon-box .elementor-icon-box-wrapper{text-align:center}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em}.elementor-testimonial-wrapper.elementor-testimonial-text-align-left{text-align:left}.elementor-testimonial-wrapper.elementor-testimonial-text-align-right{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-left:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-social-icons-wrapper{font-size:0}.elementor-social-icon{font-size:25px;text-align:center;padding:.5em;margin-left:5px;cursor:pointer}.elementor-social-icon i{color:#fff}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-google-plus{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-linkedin{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#55acee}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#df2029}.elementor-social-icon-weixin{background-color:#7bb32e}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:right;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.slick-slider{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list,.slick-slider{position:relative;display:block}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translateZ(0);transform:translateZ(0)}.slick-track{position:relative;left:0;top:0;display:block}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}.elementor-slick-slider[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.elementor-slick-slider .slick-loading .slick-list{background:#fff url(../images/ajax-loader.gif) 50% no-repeat}.elementor-slick-slider .slick-next,.elementor-slick-slider .slick-prev{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;padding:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:transparent;border:none;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus,.elementor-slick-slider .slick-next:hover,.elementor-slick-slider .slick-prev:focus,.elementor-slick-slider .slick-prev:hover{color:transparent;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus:before,.elementor-slick-slider .slick-next:hover:before,.elementor-slick-slider .slick-prev:focus:before,.elementor-slick-slider .slick-prev:hover:before{opacity:1}.elementor-slick-slider .slick-next.slick-disabled:before,.elementor-slick-slider .slick-prev.slick-disabled:before{opacity:.25}.elementor-slick-slider .slick-next:before,.elementor-slick-slider .slick-prev:before{font-family:FontAwesome;font-size:35px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider .slick-prev{left:-25px}[dir=rtl] .elementor-slick-slider .slick-prev{left:auto;right:-25px}.elementor-slick-slider .slick-prev:before{content:"\f104"}[dir=rtl] .elementor-slick-slider .slick-prev:before{content:"\f105"}.elementor-slick-slider .slick-next{right:-25px}[dir=rtl] .elementor-slick-slider .slick-next{left:-25px;right:auto}.elementor-slick-slider .slick-next:before{content:"\f105"}[dir=rtl] .elementor-slick-slider .slick-next:before{content:"\f104"}.elementor-slick-slider .slick-dotted.slick-slider{margin-bottom:30px}.elementor-slick-slider ul.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.elementor-slick-slider ul.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0;padding:0;cursor:pointer}.elementor-slick-slider ul.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.elementor-slick-slider ul.slick-dots li button:focus,.elementor-slick-slider ul.slick-dots li button:hover{outline:none}.elementor-slick-slider ul.slick-dots li button:focus:before,.elementor-slick-slider ul.slick-dots li button:hover:before{opacity:1}.elementor-slick-slider ul.slick-dots li button:before{font-family:FontAwesome;font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:"\f111";text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider ul.slick-dots li.slick-active button:before{opacity:.75;color:#000}.elementor-slick-slider .slick-arrows-inside .slick-prev{left:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-prev{left:auto;right:20px}.elementor-slick-slider .slick-arrows-inside .slick-next{right:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-next{left:20px;right:auto}.elementor-slick-slider .slick-dots-inside .slick-dots{bottom:5px}.elementor-slick-slider .slick-dots-inside.slick-dotted.slick-slider{margin-bottom:0}.elementor-slick-slider .slick-slider .slick-next,.elementor-slick-slider .slick-slider .slick-prev{z-index:1}.elementor-slick-slider .slick-slide img{margin:auto}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background:no-repeat 50%}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23007aff'/%3E%3C/svg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z'/%3E%3C/svg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23007aff'/%3E%3C/svg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z'/%3E%3C/svg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:hsla(0,0%,100%,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-size:100%;background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E") no-repeat 50%}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%23fff' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E")}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.elementor-lightbox .dialog-widget-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;-webkit-box-shadow:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{-webkit-animation-duration:.4s;animation-duration:.4s}.elementor-lightbox .dialog-message:not(.elementor-video-wrapper){height:100%}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;color:#fff;font-size:25px;padding:5px;z-index:2;line-height:1;opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .dialog-lightbox-close-button:hover{opacity:.9}.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:80px;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;margin:auto}.elementor-lightbox .elementor-lightbox-image{max-height:100%}.elementor-lightbox .elementor-video-container{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}@media (min-width:768px){.elementor-lightbox .elementor-video-container{width:50%}}@media (max-width:767px){.elementor-lightbox .elementor-video-container{width:100%}}.elementor-lightbox .elementor-swiper-button{opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .elementor-swiper-button:hover{opacity:.9}.elementor-lightbox .elementor-swiper-button-prev{left:40px}.elementor-lightbox .elementor-swiper-button-next{right:40px}@media (min-width:767px){.elementor-lightbox .dialog-lightbox-close-button{top:35px;right:35px}}.animated{-webkit-animation-duration:1.25s;animation-duration:1.25s}.animated.animated-slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.animated-fast{-webkit-animation-duration:.75s;animation-duration:.75s}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-bottom{bottom:-1px}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{-webkit-transition:none;-o-transition:none;transition:none}@media (max-width:767px){body:not(.elementor-editor-active) .elementor-hidden-phone{display:none}}@media (min-width:768px) and (max-width:1024px){body:not(.elementor-editor-active) .elementor-hidden-tablet{display:none}}@media (min-width:1025px){body:not(.elementor-editor-active) .elementor-hidden-desktop{display:none}}
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
+ @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-left:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor{-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}.elementor *,.elementor :after,.elementor :before{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor a{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-custom-embed{line-height:0}.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor .elementor-background-video{position:absolute;max-width:none;top:50%;left:50%;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:FontAwesome;-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.elementor-custom-embed-play.elementor-playing i:before{content:"\f1ce"}.elementor-swiper-button{position:absolute;z-index:1;cursor:pointer;font-size:25px;color:#fff;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-swiper-button-prev{left:40px}.elementor-swiper-button-next{right:40px}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e800";font-family:eicons;font-size:12px;margin-top:5px}.elementor:after{position:absolute;opacity:0;width:0;height:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (min-width:1025px){.elementor:after{content:"desktop"}}@media (min-width:768px) and (max-width:1024px){.elementor:after{content:"tablet"}}@media (max-width:767px){.elementor:after{content:"mobile"}}.elementor-section{position:relative}.elementor-section .elementor-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:auto;margin-left:auto;position:relative}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-section-content-top>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section-content-middle>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section-content-bottom>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-row{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}@media (max-width:1024px){.elementor-row{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.elementor-column-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-wrap,.elementor-widget-wrap{width:100%;position:relative}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-column{position:relative;min-height:1px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-gap-narrow>.elementor-row>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-row>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-row>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-row>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-row>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (max-width:767px){.elementor-column{width:100%}.elementor-reverse-mobile>.elementor-container>.elementor-row{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.elementor-form-fields-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>textarea{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-field-group.elementor-field-type-submit{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;border:1px solid #818a91;background-color:transparent;color:#373a3c;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\f0d7";font-family:FontAwesome;font-size:15px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:10px;pointer-events:none}.elementor-field-subgroup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-left:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-right:.2em}.elementor-field-textual{line-height:1.4}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-sm{font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:1024px){.elementor-tablet-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-tablet-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-tablet-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-tablet-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}@media screen and (max-width:767px){.elementor-mobile-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-mobile-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-mobile-button-align-start .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.elementor-mobile-button-align-end .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\f00c";display:inline-block;font-family:fontawesome;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\f00d"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:0 none}.elementor-form .elementor-button>span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-form .elementor-button .elementor-align-icon-right{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.elementor-form .elementor-button .elementor-align-icon-left{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-widget-heading .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title>a{color:inherit;font-size:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-image .elementor-image>a,.elementor-widget-image .elementor-image figure>a{display:block}.elementor-widget-image .elementor-image img{vertical-align:middle}.elementor-widget-image .elementor-image.elementor-image-shape-circle{border-radius:50%}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-button{display:inline-block;line-height:1;background-color:#818a91;color:#fff;text-align:center;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff;opacity:.9}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-sm{font-size:15px;padding:12px 24px;border-radius:3px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-button .elementor-button-text{display:inline-block}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-widget-divider .elementor-divider{line-height:0;font-size:0}.elementor-widget-divider .elementor-divider-separator{display:inline-block}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}.elementor-counter .elementor-counter-number-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:69px;font-weight:600;color:#222;line-height:1}.elementor-counter .elementor-counter-number-prefix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-counter .elementor-counter-number-suffix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;color:#666;line-height:2.5}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:right}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;left:10px;top:10px;padding:3px;font-size:13px;line-height:1;background:transparent;color:inherit;border:none}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-widget-progress{text-align:right}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:30px;line-height:30px;border-radius:2px}.elementor-progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#818a91;width:0;font-size:11px;border-radius:2px;-webkit-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.elementor-progress-text{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:15px}.elementor-progress-percentage{padding-left:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-wrapper{height:25px;line-height:25px}.elementor-progress-text{padding-right:10px}}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active{border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{height:999em;width:0;left:0;border-left-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px none #d4d4d4}.elementor-widget-tabs .elementor-tabs{text-align:right}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.active{border-color:#d4d4d4}.elementor-widget-tabs .elementor-tab-desktop-title.active:after,.elementor-widget-tabs .elementor-tab-desktop-title.active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid;border-bottom-style:none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-style:solid;border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:solid;border-top-style:none}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-accordion{text-align:right}.elementor-accordion .elementor-accordion-item{border:1px solid #d4d4d4}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-accordion-title{padding:15px 20px;font-weight:700;line-height:1;cursor:pointer}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon .fa:before{content:"\f067"}.elementor-accordion .elementor-accordion-title.active .elementor-accordion-icon .fa:before{content:"\f068"}.elementor-accordion .elementor-accordion-content{display:none;padding:15px 20px;border-top:1px solid #d4d4d4}@media (max-width:767px){.elementor-accordion .elementor-accordion-title{padding:12px 15px}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-accordion-content{padding:7px 15px}}.elementor-toggle{text-align:right}.elementor-toggle .elementor-toggle-title{font-weight:700;line-height:1;padding:15px;border-bottom:1px solid #d4d4d4;cursor:pointer}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon .fa:before{content:""}.elementor-toggle .elementor-toggle-title.active{border-bottom:none}.elementor-toggle .elementor-toggle-title.active .elementor-toggle-icon .fa:before{content:"\f0d7"}.elementor-toggle .elementor-toggle-content{padding:0 15px 15px;border-bottom:1px solid #d4d4d4;display:none}@media (max-width:767px){.elementor-toggle .elementor-toggle-title{padding:12px}.elementor-toggle .elementor-toggle-content{padding:0 12px 10px}}.elementor-icon{display:inline-block;line-height:1;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;color:#818a91;font-size:50px;text-align:center}.elementor-icon:hover{color:#818a91}.elementor-icon i{width:1em;height:1em}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#818a91;color:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#818a91;border:3px solid #818a91;background-color:transparent}.elementor-shape-circle .elementor-icon{border-radius:50%}.elementor-widget-icon-list.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget-icon-list:not(.elementor-align-right) .elementor-icon-list-item:after{right:0}.elementor-widget-icon-list:not(.elementor-align-left) .elementor-icon-list-item:after{left:0}.elementor-widget-icon-list .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget-icon-list .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget-icon-list .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget-icon-list .elementor-icon-list-item,.elementor-widget-icon-list .elementor-icon-list-item a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-list .elementor-icon-list-item a{width:100%}.elementor-widget-icon-list .elementor-icon-list-text{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;padding-right:5px}.elementor-widget-icon-list .elementor-icon-list-icon{text-align:center}.elementor-widget-icon-list .elementor-icon-list-icon i{vertical-align:middle}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-aspect-ratio-169 .elementor-video-wrapper{padding-bottom:56.25%}.elementor-aspect-ratio-43 .elementor-video-wrapper{padding-bottom:75%}.elementor-aspect-ratio-32 .elementor-video-wrapper{padding-bottom:66.6666%}.elementor-image-carousel-wrapper .slick-image-stretch .slick-slide .slick-slide-image{width:100%}.swiper-container .swiper-slide figure{line-height:0}.elementor-widget-image-box .elementor-image-box-content,.swiper-container .swiper-slide figure img{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}@media (min-width:768px){.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-img{margin:auto}.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-icon-box .elementor-icon-box-icon{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-icon-box .elementor-icon-box-wrapper{text-align:center}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em}.elementor-testimonial-wrapper.elementor-testimonial-text-align-left{text-align:left}.elementor-testimonial-wrapper.elementor-testimonial-text-align-right{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-left:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-social-icons-wrapper{font-size:0}.elementor-social-icon{font-size:25px;text-align:center;padding:.5em;margin-left:5px;cursor:pointer}.elementor-social-icon i{color:#fff}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-google-plus{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-linkedin{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#55acee}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:right;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.slick-slider{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list,.slick-slider{position:relative;display:block}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translateZ(0);transform:translateZ(0)}.slick-track{position:relative;left:0;top:0;display:block}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}.elementor-slick-slider[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.elementor-slick-slider .slick-loading .slick-list{background:#fff url(../images/ajax-loader.gif) 50% no-repeat}.elementor-slick-slider .slick-next,.elementor-slick-slider .slick-prev{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;padding:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:transparent;border:none;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus,.elementor-slick-slider .slick-next:hover,.elementor-slick-slider .slick-prev:focus,.elementor-slick-slider .slick-prev:hover{color:transparent;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus:before,.elementor-slick-slider .slick-next:hover:before,.elementor-slick-slider .slick-prev:focus:before,.elementor-slick-slider .slick-prev:hover:before{opacity:1}.elementor-slick-slider .slick-next.slick-disabled:before,.elementor-slick-slider .slick-prev.slick-disabled:before{opacity:.25}.elementor-slick-slider .slick-next:before,.elementor-slick-slider .slick-prev:before{font-family:FontAwesome;font-size:35px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider .slick-prev{left:-25px}[dir=rtl] .elementor-slick-slider .slick-prev{left:auto;right:-25px}.elementor-slick-slider .slick-prev:before{content:"\f104"}[dir=rtl] .elementor-slick-slider .slick-prev:before{content:"\f105"}.elementor-slick-slider .slick-next{right:-25px}[dir=rtl] .elementor-slick-slider .slick-next{left:-25px;right:auto}.elementor-slick-slider .slick-next:before{content:"\f105"}[dir=rtl] .elementor-slick-slider .slick-next:before{content:"\f104"}.elementor-slick-slider .slick-dotted.slick-slider{margin-bottom:30px}.elementor-slick-slider ul.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.elementor-slick-slider ul.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0;padding:0;cursor:pointer}.elementor-slick-slider ul.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.elementor-slick-slider ul.slick-dots li button:focus,.elementor-slick-slider ul.slick-dots li button:hover{outline:none}.elementor-slick-slider ul.slick-dots li button:focus:before,.elementor-slick-slider ul.slick-dots li button:hover:before{opacity:1}.elementor-slick-slider ul.slick-dots li button:before{font-family:FontAwesome;font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:"\f111";text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider ul.slick-dots li.slick-active button:before{opacity:.75;color:#000}.elementor-slick-slider .slick-arrows-inside .slick-prev{left:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-prev{left:auto;right:20px}.elementor-slick-slider .slick-arrows-inside .slick-next{right:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-next{left:20px;right:auto}.elementor-slick-slider .slick-dots-inside .slick-dots{bottom:5px}.elementor-slick-slider .slick-dots-inside.slick-dotted.slick-slider{margin-bottom:0}.elementor-slick-slider .slick-slider .slick-next,.elementor-slick-slider .slick-slider .slick-prev{z-index:1}.elementor-slick-slider .slick-slide img{margin:auto}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background:no-repeat 50%}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23007aff'/%3E%3C/svg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z'/%3E%3C/svg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23007aff'/%3E%3C/svg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z'/%3E%3C/svg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:hsla(0,0%,100%,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-size:100%;background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E") no-repeat 50%}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%23fff' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E")}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.elementor-lightbox .dialog-widget-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;-webkit-box-shadow:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{-webkit-animation-duration:.4s;animation-duration:.4s}.elementor-lightbox .dialog-message:not(.elementor-video-wrapper){height:100%}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;color:#fff;font-size:25px;padding:5px;z-index:2;line-height:1;opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .dialog-lightbox-close-button:hover{opacity:.9}.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:80px;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;margin:auto}.elementor-lightbox .elementor-lightbox-image{max-height:100%}.elementor-lightbox .elementor-video-container{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}@media (min-width:768px){.elementor-lightbox .elementor-video-container{width:50%}}@media (max-width:767px){.elementor-lightbox .elementor-video-container{width:100%}}.elementor-lightbox .elementor-swiper-button{opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .elementor-swiper-button:hover{opacity:.9}.elementor-lightbox .elementor-swiper-button-prev{left:40px}.elementor-lightbox .elementor-swiper-button-next{right:40px}@media (min-width:767px){.elementor-lightbox .dialog-lightbox-close-button{top:35px;right:35px}}.animated{-webkit-animation-duration:1.25s;animation-duration:1.25s}.animated.animated-slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.animated-fast{-webkit-animation-duration:.75s;animation-duration:.75s}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-bottom{bottom:-1px}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{-webkit-transition:none;-o-transition:none;transition:none}@media (max-width:767px){body:not(.elementor-editor-active) .elementor-hidden-phone{display:none}}@media (min-width:768px) and (max-width:1024px){body:not(.elementor-editor-active) .elementor-hidden-tablet{display:none}}@media (min-width:1025px){body:not(.elementor-editor-active) .elementor-hidden-desktop{display:none}}
assets/css/frontend.css CHANGED
@@ -1659,10 +1659,6 @@ body.admin-bar .dialog-close-button {
1659
  background-color: #1ab7ea; }
1660
  .elementor-social-icon-vk {
1661
  background-color: #45668e; }
1662
- .elementor-social-icon-weibo {
1663
- background-color: #df2029; }
1664
- .elementor-social-icon-weixin {
1665
- background-color: #7bb32e; }
1666
  .elementor-social-icon-whatsapp {
1667
  background-color: #25d366; }
1668
  .elementor-social-icon-wordpress {
1659
  background-color: #1ab7ea; }
1660
  .elementor-social-icon-vk {
1661
  background-color: #45668e; }
 
 
 
 
1662
  .elementor-social-icon-whatsapp {
1663
  background-color: #25d366; }
1664
  .elementor-social-icon-wordpress {
assets/css/frontend.min.css CHANGED
@@ -1,2 +1,2 @@
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
- @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-right:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor{-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}.elementor *,.elementor :after,.elementor :before{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor a{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-custom-embed{line-height:0}.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor .elementor-background-video{position:absolute;max-width:none;top:50%;left:50%;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:FontAwesome;-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.elementor-custom-embed-play.elementor-playing i:before{content:"\f1ce"}.elementor-swiper-button{position:absolute;z-index:1;cursor:pointer;font-size:25px;color:#fff;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-swiper-button-prev{left:40px}.elementor-swiper-button-next{right:40px}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e800";font-family:eicons;font-size:12px;margin-top:5px}.elementor:after{position:absolute;opacity:0;width:0;height:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (min-width:1025px){.elementor:after{content:"desktop"}}@media (min-width:768px) and (max-width:1024px){.elementor:after{content:"tablet"}}@media (max-width:767px){.elementor:after{content:"mobile"}}.elementor-section{position:relative}.elementor-section .elementor-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:auto;margin-left:auto;position:relative}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-section-content-top>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section-content-middle>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section-content-bottom>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-row{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}@media (max-width:1024px){.elementor-row{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.elementor-column-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-wrap,.elementor-widget-wrap{width:100%;position:relative}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-column{position:relative;min-height:1px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-gap-narrow>.elementor-row>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-row>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-row>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-row>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-row>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (max-width:767px){.elementor-column{width:100%}.elementor-reverse-mobile>.elementor-container>.elementor-row{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.elementor-form-fields-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>textarea{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-field-group.elementor-field-type-submit{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;border:1px solid #818a91;background-color:transparent;color:#373a3c;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\f0d7";font-family:FontAwesome;font-size:15px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:10px;pointer-events:none}.elementor-field-subgroup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-sm{font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (max-width:1024px){.elementor-tablet-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-tablet-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-tablet-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-tablet-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}}@media screen and (max-width:767px){.elementor-mobile-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-mobile-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-mobile-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-mobile-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\f00c";display:inline-block;font-family:fontawesome;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\f00d"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:0 none}.elementor-form .elementor-button>span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-form .elementor-button .elementor-align-icon-right{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.elementor-form .elementor-button .elementor-align-icon-left{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-widget-heading .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title>a{color:inherit;font-size:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-image .elementor-image>a,.elementor-widget-image .elementor-image figure>a{display:block}.elementor-widget-image .elementor-image img{vertical-align:middle}.elementor-widget-image .elementor-image.elementor-image-shape-circle{border-radius:50%}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-button{display:inline-block;line-height:1;background-color:#818a91;color:#fff;text-align:center;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff;opacity:.9}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-sm{font-size:15px;padding:12px 24px;border-radius:3px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-button .elementor-button-text{display:inline-block}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-widget-divider .elementor-divider{line-height:0;font-size:0}.elementor-widget-divider .elementor-divider-separator{display:inline-block}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}.elementor-counter .elementor-counter-number-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:69px;font-weight:600;color:#222;line-height:1}.elementor-counter .elementor-counter-number-prefix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-counter .elementor-counter-number-suffix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;color:#666;line-height:2.5}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:10px;top:10px;padding:3px;font-size:13px;line-height:1;background:transparent;color:inherit;border:none}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:30px;line-height:30px;border-radius:2px}.elementor-progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#818a91;width:0;font-size:11px;border-radius:2px;-webkit-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.elementor-progress-text{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-wrapper{height:25px;line-height:25px}.elementor-progress-text{padding-left:10px}}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px none #d4d4d4}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.active{border-color:#d4d4d4}.elementor-widget-tabs .elementor-tab-desktop-title.active:after,.elementor-widget-tabs .elementor-tab-desktop-title.active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid;border-bottom-style:none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-style:solid;border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:solid;border-top-style:none}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d4d4d4}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-accordion-title{padding:15px 20px;font-weight:700;line-height:1;cursor:pointer}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon .fa:before{content:"\f067"}.elementor-accordion .elementor-accordion-title.active .elementor-accordion-icon .fa:before{content:"\f068"}.elementor-accordion .elementor-accordion-content{display:none;padding:15px 20px;border-top:1px solid #d4d4d4}@media (max-width:767px){.elementor-accordion .elementor-accordion-title{padding:12px 15px}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-accordion-content{padding:7px 15px}}.elementor-toggle{text-align:left}.elementor-toggle .elementor-toggle-title{font-weight:700;line-height:1;padding:15px;border-bottom:1px solid #d4d4d4;cursor:pointer}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon .fa:before{content:""}.elementor-toggle .elementor-toggle-title.active{border-bottom:none}.elementor-toggle .elementor-toggle-title.active .elementor-toggle-icon .fa:before{content:"\f0d7"}.elementor-toggle .elementor-toggle-content{padding:0 15px 15px;border-bottom:1px solid #d4d4d4;display:none}@media (max-width:767px){.elementor-toggle .elementor-toggle-title{padding:12px}.elementor-toggle .elementor-toggle-content{padding:0 12px 10px}}.elementor-icon{display:inline-block;line-height:1;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;color:#818a91;font-size:50px;text-align:center}.elementor-icon:hover{color:#818a91}.elementor-icon i{width:1em;height:1em}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#818a91;color:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#818a91;border:3px solid #818a91;background-color:transparent}.elementor-shape-circle .elementor-icon{border-radius:50%}.elementor-widget-icon-list.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget-icon-list:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget-icon-list:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}.elementor-widget-icon-list .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget-icon-list .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget-icon-list .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget-icon-list .elementor-icon-list-item,.elementor-widget-icon-list .elementor-icon-list-item a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-list .elementor-icon-list-item a{width:100%}.elementor-widget-icon-list .elementor-icon-list-text{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;padding-left:5px}.elementor-widget-icon-list .elementor-icon-list-icon{text-align:center}.elementor-widget-icon-list .elementor-icon-list-icon i{vertical-align:middle}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-aspect-ratio-169 .elementor-video-wrapper{padding-bottom:56.25%}.elementor-aspect-ratio-43 .elementor-video-wrapper{padding-bottom:75%}.elementor-aspect-ratio-32 .elementor-video-wrapper{padding-bottom:66.6666%}.elementor-image-carousel-wrapper .slick-image-stretch .slick-slide .slick-slide-image{width:100%}.swiper-container .swiper-slide figure{line-height:0}.elementor-widget-image-box .elementor-image-box-content,.swiper-container .swiper-slide figure img{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}@media (min-width:768px){.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-img{margin:auto}.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-icon-box .elementor-icon-box-icon{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-icon-box .elementor-icon-box-wrapper{text-align:center}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em}.elementor-testimonial-wrapper.elementor-testimonial-text-align-left{text-align:left}.elementor-testimonial-wrapper.elementor-testimonial-text-align-right{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-social-icons-wrapper{font-size:0}.elementor-social-icon{font-size:25px;text-align:center;padding:.5em;margin-right:5px;cursor:pointer}.elementor-social-icon i{color:#fff}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-google-plus{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-linkedin{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#55acee}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#df2029}.elementor-social-icon-weixin{background-color:#7bb32e}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.slick-slider{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list,.slick-slider{position:relative;display:block}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translateZ(0);transform:translateZ(0)}.slick-track{position:relative;left:0;top:0;display:block}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}.elementor-slick-slider[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.elementor-slick-slider .slick-loading .slick-list{background:#fff url(../images/ajax-loader.gif) 50% no-repeat}.elementor-slick-slider .slick-next,.elementor-slick-slider .slick-prev{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;padding:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:transparent;border:none;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus,.elementor-slick-slider .slick-next:hover,.elementor-slick-slider .slick-prev:focus,.elementor-slick-slider .slick-prev:hover{color:transparent;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus:before,.elementor-slick-slider .slick-next:hover:before,.elementor-slick-slider .slick-prev:focus:before,.elementor-slick-slider .slick-prev:hover:before{opacity:1}.elementor-slick-slider .slick-next.slick-disabled:before,.elementor-slick-slider .slick-prev.slick-disabled:before{opacity:.25}.elementor-slick-slider .slick-next:before,.elementor-slick-slider .slick-prev:before{font-family:FontAwesome;font-size:35px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider .slick-prev{left:-25px}[dir=rtl] .elementor-slick-slider .slick-prev{left:auto;right:-25px}.elementor-slick-slider .slick-prev:before{content:"\f104"}[dir=rtl] .elementor-slick-slider .slick-prev:before{content:"\f105"}.elementor-slick-slider .slick-next{right:-25px}[dir=rtl] .elementor-slick-slider .slick-next{left:-25px;right:auto}.elementor-slick-slider .slick-next:before{content:"\f105"}[dir=rtl] .elementor-slick-slider .slick-next:before{content:"\f104"}.elementor-slick-slider .slick-dotted.slick-slider{margin-bottom:30px}.elementor-slick-slider ul.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.elementor-slick-slider ul.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0;padding:0;cursor:pointer}.elementor-slick-slider ul.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.elementor-slick-slider ul.slick-dots li button:focus,.elementor-slick-slider ul.slick-dots li button:hover{outline:none}.elementor-slick-slider ul.slick-dots li button:focus:before,.elementor-slick-slider ul.slick-dots li button:hover:before{opacity:1}.elementor-slick-slider ul.slick-dots li button:before{font-family:FontAwesome;font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:"\f111";text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider ul.slick-dots li.slick-active button:before{opacity:.75;color:#000}.elementor-slick-slider .slick-arrows-inside .slick-prev{left:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-prev{left:auto;right:20px}.elementor-slick-slider .slick-arrows-inside .slick-next{right:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-next{left:20px;right:auto}.elementor-slick-slider .slick-dots-inside .slick-dots{bottom:5px}.elementor-slick-slider .slick-dots-inside.slick-dotted.slick-slider{margin-bottom:0}.elementor-slick-slider .slick-slider .slick-next,.elementor-slick-slider .slick-slider .slick-prev{z-index:1}.elementor-slick-slider .slick-slide img{margin:auto}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background:no-repeat 50%}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23007aff'/%3E%3C/svg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z'/%3E%3C/svg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23007aff'/%3E%3C/svg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z'/%3E%3C/svg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:hsla(0,0%,100%,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-size:100%;background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E") no-repeat 50%}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%23fff' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E")}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.elementor-lightbox .dialog-widget-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;-webkit-box-shadow:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{-webkit-animation-duration:.4s;animation-duration:.4s}.elementor-lightbox .dialog-message:not(.elementor-video-wrapper){height:100%}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;color:#fff;font-size:25px;padding:5px;z-index:2;line-height:1;opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .dialog-lightbox-close-button:hover{opacity:.9}.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:80px;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;margin:auto}.elementor-lightbox .elementor-lightbox-image{max-height:100%}.elementor-lightbox .elementor-video-container{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}@media (min-width:768px){.elementor-lightbox .elementor-video-container{width:50%}}@media (max-width:767px){.elementor-lightbox .elementor-video-container{width:100%}}.elementor-lightbox .elementor-swiper-button{opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .elementor-swiper-button:hover{opacity:.9}.elementor-lightbox .elementor-swiper-button-prev{left:40px}.elementor-lightbox .elementor-swiper-button-next{right:40px}@media (min-width:767px){.elementor-lightbox .dialog-lightbox-close-button{top:35px;right:35px}}.animated{-webkit-animation-duration:1.25s;animation-duration:1.25s}.animated.animated-slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.animated-fast{-webkit-animation-duration:.75s;animation-duration:.75s}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-bottom{bottom:-1px}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{-webkit-transition:none;-o-transition:none;transition:none}@media (max-width:767px){body:not(.elementor-editor-active) .elementor-hidden-phone{display:none}}@media (min-width:768px) and (max-width:1024px){body:not(.elementor-editor-active) .elementor-hidden-tablet{display:none}}@media (min-width:1025px){body:not(.elementor-editor-active) .elementor-hidden-desktop{display:none}}
1
  /*! elementor - v1.6.5 - 20-08-2017 */
2
+ @charset "UTF-8";.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.8);z-index:9999}.dialog-widget-content{background-color:#fff;position:absolute;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-message{font-size:12px;line-height:1.5}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;text-align:center}.dialog-buttons-wrapper>button{border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:0}.dialog-buttons-wrapper>button:first-child{color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-buttons-wrapper>button::-moz-focus-inner{border:0}.dialog-widget-header{padding:20px 0;font-weight:500}.dialog-close-button{cursor:pointer;position:absolute;top:15px;right:15px;font-size:15px}.dialog-close-button:not(:hover){opacity:.4}body.admin-bar .dialog-close-button{top:30px}@media (max-width:767px){body.admin-bar .dialog-close-button{top:40px}}.dialog-confirm-widget .dialog-widget-header,.dialog-options-widget .dialog-widget-header{font-size:15px;color:#495157}.dialog-confirm-widget .dialog-buttons-wrapper>button,.dialog-options-widget .dialog-buttons-wrapper>button{width:50%}.dialog-confirm-widget .dialog-buttons-wrapper>button:first-child,.dialog-options-widget .dialog-buttons-wrapper>button:first-child{border-right:1px solid #e6e9ec}.dialog-confirm-widget .dialog-buttons-wrapper>button:hover,.dialog-options-widget .dialog-buttons-wrapper>button:hover{background-color:#f4f6f7}.dialog-alert-widget,.dialog-confirm-widget,.dialog-options-widget{-webkit-user-select:none;-moz-user-select:none}.dialog-alert-widget .dialog-widget-content,.dialog-confirm-widget .dialog-widget-content,.dialog-options-widget .dialog-widget-content{margin:auto;width:375px}.dialog-alert-widget .dialog-message,.dialog-confirm-widget .dialog-message,.dialog-options-widget .dialog-message{padding:0 20px;min-height:50px}.dialog-alert-widget .dialog-buttons-wrapper>button{width:100%}.elementor-video-wrapper{position:relative;height:0}.elementor-video-wrapper iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:0}.elementor-hidden{display:none}.elementor{-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}.elementor *,.elementor :after,.elementor :before{-webkit-box-sizing:border-box;box-sizing:border-box}.elementor a{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.elementor hr{margin:0;background-color:transparent}.elementor img{height:auto;max-width:100%;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.elementor .elementor-widget:not(.elementor-widget-text-editor) figure{margin:0}.elementor embed,.elementor iframe,.elementor object,.elementor video{max-width:100%;width:100%;margin:0;line-height:1;border:none}.elementor .elementor-custom-embed{line-height:0}.elementor .elementor-background-video-container{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;z-index:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.elementor .elementor-background-video-container.elementor-loading{opacity:0}.elementor .elementor-background-video-embed{max-width:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor .elementor-background-video{position:absolute;max-width:none;top:50%;left:50%;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}.elementor .elementor-html5-video{-o-object-fit:cover;object-fit:cover}.elementor .elementor-background-overlay{height:100%;width:100%;top:0;left:0;position:absolute}.elementor-invisible{visibility:hidden}.elementor-align-center{text-align:center}.elementor-align-center .elementor-button{width:auto}.elementor-align-right{text-align:right}.elementor-align-right .elementor-button{width:auto}.elementor-align-left{text-align:left}.elementor-align-left .elementor-button{width:auto}.elementor-align-justify .elementor-button{width:100%}.elementor-custom-embed-play{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.elementor-custom-embed-play i{font-size:100px;color:#fff;opacity:.8;text-shadow:1px 0 6px rgba(0,0,0,.3);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-custom-embed-play.elementor-playing i{font-family:FontAwesome;-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.elementor-custom-embed-play.elementor-playing i:before{content:"\f1ce"}.elementor-swiper-button{position:absolute;z-index:1;cursor:pointer;font-size:25px;color:#fff;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-swiper-button-prev{left:40px}.elementor-swiper-button-next{right:40px}@media (max-width:1024px){.elementor-tablet-align-center{text-align:center}.elementor-tablet-align-center .elementor-button{width:auto}.elementor-tablet-align-right{text-align:right}.elementor-tablet-align-right .elementor-button{width:auto}.elementor-tablet-align-left{text-align:left}.elementor-tablet-align-left .elementor-button{width:auto}.elementor-tablet-align-justify .elementor-button{width:100%}}@media (max-width:767px){.elementor-mobile-align-center{text-align:center}.elementor-mobile-align-center .elementor-button{width:auto}.elementor-mobile-align-right{text-align:right}.elementor-mobile-align-right .elementor-button{width:auto}.elementor-mobile-align-left{text-align:left}.elementor-mobile-align-left .elementor-button{width:auto}.elementor-mobile-align-justify .elementor-button{width:100%}}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e800";font-family:eicons;font-size:12px;margin-top:5px}.elementor:after{position:absolute;opacity:0;width:0;height:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (min-width:1025px){.elementor:after{content:"desktop"}}@media (min-width:768px) and (max-width:1024px){.elementor:after{content:"tablet"}}@media (max-width:767px){.elementor:after{content:"mobile"}}.elementor-section{position:relative}.elementor-section .elementor-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:auto;margin-left:auto;position:relative}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-section.elementor-section-stretched{position:relative;width:100%}.elementor-section.elementor-section-items-top>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section.elementor-section-items-middle>.elementor-container{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section.elementor-section-items-bottom>.elementor-container{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}@media (min-width:768px){.elementor-section.elementor-section-height-full{height:100vh}.elementor-section.elementor-section-height-full>.elementor-container{height:100%}}.elementor-section-content-top>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-section-content-middle>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-section-content-bottom>.elementor-container>.elementor-row>.elementor-column>.elementor-column-wrap{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-row{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}@media (max-width:1024px){.elementor-row{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.elementor-column-wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-wrap,.elementor-widget-wrap{width:100%;position:relative}.elementor-widget{position:relative}.elementor-widget:not(:last-child){margin-bottom:20px}.elementor-column{position:relative;min-height:1px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-column-gap-narrow>.elementor-row>.elementor-column>.elementor-element-populated{padding:5px}.elementor-column-gap-default>.elementor-row>.elementor-column>.elementor-element-populated{padding:10px}.elementor-column-gap-extended>.elementor-row>.elementor-column>.elementor-element-populated{padding:15px}.elementor-column-gap-wide>.elementor-row>.elementor-column>.elementor-element-populated{padding:20px}.elementor-column-gap-wider>.elementor-row>.elementor-column>.elementor-element-populated{padding:30px}.elementor-inner-section .elementor-column-gap-no .elementor-element-populated{padding:0}@media (min-width:768px){.elementor-column.elementor-col-10,.elementor-column[data-col="10"]{width:10%}.elementor-column.elementor-col-11,.elementor-column[data-col="11"]{width:11.111%}.elementor-column.elementor-col-12,.elementor-column[data-col="12"]{width:12.5%}.elementor-column.elementor-col-14,.elementor-column[data-col="14"]{width:14.285%}.elementor-column.elementor-col-16,.elementor-column[data-col="16"]{width:16.666%}.elementor-column.elementor-col-20,.elementor-column[data-col="20"]{width:20%}.elementor-column.elementor-col-25,.elementor-column[data-col="25"]{width:25%}.elementor-column.elementor-col-30,.elementor-column[data-col="30"]{width:30%}.elementor-column.elementor-col-33,.elementor-column[data-col="33"]{width:33.333%}.elementor-column.elementor-col-40,.elementor-column[data-col="40"]{width:40%}.elementor-column.elementor-col-50,.elementor-column[data-col="50"]{width:50%}.elementor-column.elementor-col-60,.elementor-column[data-col="60"]{width:60%}.elementor-column.elementor-col-66,.elementor-column[data-col="66"]{width:66.666%}.elementor-column.elementor-col-70,.elementor-column[data-col="70"]{width:70%}.elementor-column.elementor-col-75,.elementor-column[data-col="75"]{width:75%}.elementor-column.elementor-col-80,.elementor-column[data-col="80"]{width:80%}.elementor-column.elementor-col-83,.elementor-column[data-col="83"]{width:83.333%}.elementor-column.elementor-col-90,.elementor-column[data-col="90"]{width:90%}.elementor-column.elementor-col-100,.elementor-column[data-col="100"]{width:100%}}@media (max-width:479px){.elementor-column.elementor-xs-10{width:10%}.elementor-column.elementor-xs-11{width:11.111%}.elementor-column.elementor-xs-12{width:12.5%}.elementor-column.elementor-xs-14{width:14.285%}.elementor-column.elementor-xs-16{width:16.666%}.elementor-column.elementor-xs-20{width:20%}.elementor-column.elementor-xs-25{width:25%}.elementor-column.elementor-xs-30{width:30%}.elementor-column.elementor-xs-33{width:33.333%}.elementor-column.elementor-xs-40{width:40%}.elementor-column.elementor-xs-50{width:50%}.elementor-column.elementor-xs-60{width:60%}.elementor-column.elementor-xs-66{width:66.666%}.elementor-column.elementor-xs-70{width:70%}.elementor-column.elementor-xs-75{width:75%}.elementor-column.elementor-xs-80{width:80%}.elementor-column.elementor-xs-83{width:83.333%}.elementor-column.elementor-xs-90{width:90%}.elementor-column.elementor-xs-100{width:100%}}@media (max-width:767px){.elementor-column.elementor-sm-10{width:10%}.elementor-column.elementor-sm-11{width:11.111%}.elementor-column.elementor-sm-12{width:12.5%}.elementor-column.elementor-sm-14{width:14.285%}.elementor-column.elementor-sm-16{width:16.666%}.elementor-column.elementor-sm-20{width:20%}.elementor-column.elementor-sm-25{width:25%}.elementor-column.elementor-sm-30{width:30%}.elementor-column.elementor-sm-33{width:33.333%}.elementor-column.elementor-sm-40{width:40%}.elementor-column.elementor-sm-50{width:50%}.elementor-column.elementor-sm-60{width:60%}.elementor-column.elementor-sm-66{width:66.666%}.elementor-column.elementor-sm-70{width:70%}.elementor-column.elementor-sm-75{width:75%}.elementor-column.elementor-sm-80{width:80%}.elementor-column.elementor-sm-83{width:83.333%}.elementor-column.elementor-sm-90{width:90%}.elementor-column.elementor-sm-100{width:100%}}@media (min-width:768px) and (max-width:1024px){.elementor-column.elementor-md-10{width:10%}.elementor-column.elementor-md-11{width:11.111%}.elementor-column.elementor-md-12{width:12.5%}.elementor-column.elementor-md-14{width:14.285%}.elementor-column.elementor-md-16{width:16.666%}.elementor-column.elementor-md-20{width:20%}.elementor-column.elementor-md-25{width:25%}.elementor-column.elementor-md-30{width:30%}.elementor-column.elementor-md-33{width:33.333%}.elementor-column.elementor-md-40{width:40%}.elementor-column.elementor-md-50{width:50%}.elementor-column.elementor-md-60{width:60%}.elementor-column.elementor-md-66{width:66.666%}.elementor-column.elementor-md-70{width:70%}.elementor-column.elementor-md-75{width:75%}.elementor-column.elementor-md-80{width:80%}.elementor-column.elementor-md-83{width:83.333%}.elementor-column.elementor-md-90{width:90%}.elementor-column.elementor-md-100{width:100%}}@media (max-width:767px){.elementor-column{width:100%}.elementor-reverse-mobile>.elementor-container>.elementor-row{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.elementor-clearfix:after{content:"";display:block;clear:both;width:0;height:0}.elementor-form-fields-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group .elementor-field-subgroup,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>.elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>input,.elementor-form-fields-wrapper.elementor-labels-above>.elementor-field-group>textarea{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group .elementor-select-wrapper,.elementor-form-fields-wrapper.elementor-labels-inline>.elementor-field-group>input{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-field-group.elementor-field-type-submit{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.elementor-field-group .elementor-field-textual{width:100%;border:1px solid #818a91;background-color:transparent;color:#373a3c;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.elementor-field-group .elementor-field-textual:focus{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);outline:0}.elementor-field-group .elementor-field-textual::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-field-textual::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-field-group .elementor-select-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;width:100%}.elementor-field-group .elementor-select-wrapper select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-right:20px}.elementor-field-group .elementor-select-wrapper:before{content:"\f0d7";font-family:FontAwesome;font-size:15px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:10px;pointer-events:none}.elementor-field-subgroup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-field-subgroup .elementor-field-option label{display:inline-block}.elementor-field-subgroup.elementor-subgroup-inline .elementor-field-option{padding-right:10px}.elementor-field-subgroup:not(.elementor-subgroup-inline) .elementor-field-option{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-field-label{cursor:pointer}.elementor-mark-required .elementor-field-label:after{content:"*";color:red;padding-left:.2em}.elementor-field-textual{line-height:1.4}.elementor-field-textual.elementor-size-xs{font-size:13px;min-height:33px;padding:4px 12px;border-radius:2px}.elementor-field-textual.elementor-size-sm{font-size:15px;min-height:40px;padding:5px 14px;border-radius:3px}.elementor-field-textual.elementor-size-md{font-size:16px;min-height:47px;padding:6px 16px;border-radius:4px}.elementor-field-textual.elementor-size-lg{font-size:18px;min-height:59px;padding:7px 20px;border-radius:5px}.elementor-field-textual.elementor-size-xl{font-size:20px;min-height:72px;padding:8px 24px;border-radius:6px}.elementor-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (max-width:1024px){.elementor-tablet-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-tablet-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-tablet-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-tablet-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}}@media screen and (max-width:767px){.elementor-mobile-button-align-center .elementor-field-type-submit{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-mobile-button-align-stretch .elementor-field-type-submit button{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.elementor-mobile-button-align-start .elementor-field-type-submit{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.elementor-mobile-button-align-end .elementor-field-type-submit{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}}.elementor-error .elementor-field{border-color:#d9534f}.elementor-error .help-inline{color:#d9534f;font-size:.9em}.elementor-message{margin:10px 0;font-size:1em;line-height:1}.elementor-message:before{content:"\f00c";display:inline-block;font-family:fontawesome;font-weight:400;font-style:normal;vertical-align:middle;margin-right:5px}.elementor-message.elementor-message-danger{color:#d9534f}.elementor-message.elementor-message-danger:before{content:"\f00d"}.elementor-message.form-message-success{color:#5cb85c}.elementor-form .elementor-button{padding-top:0;padding-bottom:0;border:0 none}.elementor-form .elementor-button>span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.elementor-form .elementor-button .elementor-align-icon-right{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.elementor-form .elementor-button .elementor-align-icon-left{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.elementor-form .elementor-button.elementor-size-xs{min-height:33px}.elementor-form .elementor-button.elementor-size-sm{min-height:40px}.elementor-form .elementor-button.elementor-size-md{min-height:47px}.elementor-form .elementor-button.elementor-size-lg{min-height:59px}.elementor-form .elementor-button.elementor-size-xl{min-height:72px}.elementor-widget-heading .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title>a{color:inherit;font-size:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}.elementor-widget-image .elementor-image>a,.elementor-widget-image .elementor-image figure>a{display:block}.elementor-widget-image .elementor-image img{vertical-align:middle}.elementor-widget-image .elementor-image.elementor-image-shape-circle{border-radius:50%}.elementor-image-gallery .gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%;max-width:100%;margin:0 auto}.elementor-image-gallery .gallery-item img{margin:0 auto}.elementor-image-gallery .gallery-item .gallery-caption{margin:0}@media (min-width:768px){.elementor-image-gallery .gallery-columns-2 .gallery-item{max-width:50%}.elementor-image-gallery .gallery-columns-3 .gallery-item{max-width:33.33%}.elementor-image-gallery .gallery-columns-4 .gallery-item{max-width:25%}.elementor-image-gallery .gallery-columns-5 .gallery-item{max-width:20%}.elementor-image-gallery .gallery-columns-6 .gallery-item{max-width:16.666%}.elementor-image-gallery .gallery-columns-7 .gallery-item{max-width:14.28%}.elementor-image-gallery .gallery-columns-8 .gallery-item{max-width:12.5%}.elementor-image-gallery .gallery-columns-9 .gallery-item{max-width:11.11%}.elementor-image-gallery .gallery-columns-10 .gallery-item{max-width:10%}}@media (min-width:480px) and (max-width:767px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:50%}}@media (max-width:479px){.elementor-image-gallery .gallery.gallery-columns-2 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-3 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-4 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-5 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-6 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-7 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-8 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-9 .gallery-item,.elementor-image-gallery .gallery.gallery-columns-10 .gallery-item{max-width:100%}}.elementor-button{display:inline-block;line-height:1;background-color:#818a91;color:#fff;text-align:center;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-button:focus,.elementor-button:hover,.elementor-button:visited{color:#fff;opacity:.9}.elementor-button.elementor-size-xs{font-size:13px;padding:10px 20px;border-radius:2px}.elementor-button.elementor-size-sm{font-size:15px;padding:12px 24px;border-radius:3px}.elementor-button.elementor-size-md{font-size:16px;padding:15px 30px;border-radius:4px}.elementor-button.elementor-size-lg{font-size:18px;padding:20px 40px;border-radius:5px}.elementor-button.elementor-size-xl{font-size:20px;padding:25px 50px;border-radius:6px}.elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-button .elementor-button-text{display:inline-block}.elementor-element.elementor-button-info .elementor-button{background-color:#5bc0de}.elementor-element.elementor-button-success .elementor-button{background-color:#5cb85c}.elementor-element.elementor-button-warning .elementor-button{background-color:#f0ad4e}.elementor-element.elementor-button-danger .elementor-button{background-color:#d9534f}.elementor-widget-button .elementor-button .elementor-button-info{background-color:#5bc0de}.elementor-widget-button .elementor-button .elementor-button-success{background-color:#5cb85c}.elementor-widget-button .elementor-button .elementor-button-warning{background-color:#f0ad4e}.elementor-widget-button .elementor-button .elementor-button-danger{background-color:#d9534f}.elementor-widget-divider .elementor-divider{line-height:0;font-size:0}.elementor-widget-divider .elementor-divider-separator{display:inline-block}.elementor-image-gallery figure img{display:block}.elementor-image-gallery figure figcaption{width:100%}.gallery-spacing-custom .elementor-image-gallery .gallery-icon{padding:0}.elementor-counter .elementor-counter-number-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:69px;font-weight:600;color:#222;line-height:1}.elementor-counter .elementor-counter-number-prefix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right}.elementor-counter .elementor-counter-number-suffix{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.elementor-counter .elementor-counter-title{text-align:center;font-size:19px;font-weight:400;color:#666;line-height:2.5}.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:10px;top:10px;padding:3px;font-size:13px;line-height:1;background:transparent;color:inherit;border:none}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}.elementor-widget-progress{text-align:left}.elementor-progress-wrapper{position:relative;background-color:#eee;color:#fff;height:30px;line-height:30px;border-radius:2px}.elementor-progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#818a91;width:0;font-size:11px;border-radius:2px;-webkit-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.elementor-progress-text{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-left:15px}.elementor-progress-percentage{padding-right:15px}.elementor-widget-progress .elementor-progress-wrapper.progress-info .elementor-progress-bar{background-color:#5bc0de}.elementor-widget-progress .elementor-progress-wrapper.progress-success .elementor-progress-bar{background-color:#5cb85c}.elementor-widget-progress .elementor-progress-wrapper.progress-warning .elementor-progress-bar{background-color:#f0ad4e}.elementor-widget-progress .elementor-progress-wrapper.progress-danger .elementor-progress-bar{background-color:#d9534f}.elementor-progress .elementor-title{display:block}@media (max-width:767px){.elementor-progress-wrapper{height:25px;line-height:25px}.elementor-progress-text{padding-left:10px}}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:before{top:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px none #d4d4d4}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.active{border-color:#d4d4d4}.elementor-widget-tabs .elementor-tab-desktop-title.active:after,.elementor-widget-tabs .elementor-tab-desktop-title.active:before{display:block;content:"";position:absolute}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid;border-bottom-style:none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-style:solid;border-left-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:solid;border-top-style:none}.elementor-tabs .elementor-tab-mobile-title{display:none}}.elementor-accordion{text-align:left}.elementor-accordion .elementor-accordion-item{border:1px solid #d4d4d4}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-accordion-title{padding:15px 20px;font-weight:700;line-height:1;cursor:pointer}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon .fa:before{content:"\f067"}.elementor-accordion .elementor-accordion-title.active .elementor-accordion-icon .fa:before{content:"\f068"}.elementor-accordion .elementor-accordion-content{display:none;padding:15px 20px;border-top:1px solid #d4d4d4}@media (max-width:767px){.elementor-accordion .elementor-accordion-title{padding:12px 15px}.elementor-accordion .elementor-accordion-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-accordion-content{padding:7px 15px}}.elementor-toggle{text-align:left}.elementor-toggle .elementor-toggle-title{font-weight:700;line-height:1;padding:15px;border-bottom:1px solid #d4d4d4;cursor:pointer}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-toggle-title .elementor-toggle-icon .fa:before{content:""}.elementor-toggle .elementor-toggle-title.active{border-bottom:none}.elementor-toggle .elementor-toggle-title.active .elementor-toggle-icon .fa:before{content:"\f0d7"}.elementor-toggle .elementor-toggle-content{padding:0 15px 15px;border-bottom:1px solid #d4d4d4;display:none}@media (max-width:767px){.elementor-toggle .elementor-toggle-title{padding:12px}.elementor-toggle .elementor-toggle-content{padding:0 12px 10px}}.elementor-icon{display:inline-block;line-height:1;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;color:#818a91;font-size:50px;text-align:center}.elementor-icon:hover{color:#818a91}.elementor-icon i{width:1em;height:1em}.elementor-view-stacked .elementor-icon{padding:.5em;background-color:#818a91;color:#fff}.elementor-view-framed .elementor-icon{padding:.5em;color:#818a91;border:3px solid #818a91;background-color:transparent}.elementor-shape-circle .elementor-icon{border-radius:50%}.elementor-widget-icon-list.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget-icon-list:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget-icon-list:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}.elementor-widget-icon-list .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget-icon-list .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget-icon-list .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget-icon-list .elementor-icon-list-item,.elementor-widget-icon-list .elementor-icon-list-item a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-list .elementor-icon-list-item a{width:100%}.elementor-widget-icon-list .elementor-icon-list-text{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;padding-left:5px}.elementor-widget-icon-list .elementor-icon-list-icon{text-align:center}.elementor-widget-icon-list .elementor-icon-list-icon i{vertical-align:middle}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-aspect-ratio-169 .elementor-video-wrapper{padding-bottom:56.25%}.elementor-aspect-ratio-43 .elementor-video-wrapper{padding-bottom:75%}.elementor-aspect-ratio-32 .elementor-video-wrapper{padding-bottom:66.6666%}.elementor-image-carousel-wrapper .slick-image-stretch .slick-slide .slick-slide-image{width:100%}.swiper-container .swiper-slide figure{line-height:0}.elementor-widget-image-box .elementor-image-box-content,.swiper-container .swiper-slide figure img{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}@media (min-width:768px){.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-icon,.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-icon{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.elementor-widget-icon-box.elementor-position-right .elementor-icon-box-wrapper{text-align:right;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-icon-box.elementor-position-left .elementor-icon-box-wrapper{text-align:left;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.elementor-widget-icon-box.elementor-position-top .elementor-icon-box-img{margin:auto}.elementor-widget-icon-box.elementor-vertical-align-top .elementor-icon-box-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.elementor-widget-icon-box.elementor-vertical-align-middle .elementor-icon-box-wrapper{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.elementor-widget-icon-box.elementor-vertical-align-bottom .elementor-icon-box-wrapper{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}@media (max-width:767px){.elementor-widget-icon-box .elementor-icon-box-icon{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-icon-box .elementor-icon-box-wrapper{text-align:center}.elementor-widget-icon-box .elementor-icon-box-title a{color:inherit}.elementor-widget-icon-box .elementor-icon-box-description{margin:0}.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em}.elementor-testimonial-wrapper.elementor-testimonial-text-align-left{text-align:left}.elementor-testimonial-wrapper.elementor-testimonial-text-align-right{text-align:right}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}.elementor-social-icons-wrapper{font-size:0}.elementor-social-icon{font-size:25px;text-align:center;padding:.5em;margin-right:5px;cursor:pointer}.elementor-social-icon i{color:#fff}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-google-plus{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-linkedin{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#55acee}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}.slick-slider{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list,.slick-slider{position:relative;display:block}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translateZ(0);transform:translateZ(0)}.slick-track{position:relative;left:0;top:0;display:block}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}.elementor-slick-slider[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.elementor-slick-slider .slick-loading .slick-list{background:#fff url(../images/ajax-loader.gif) 50% no-repeat}.elementor-slick-slider .slick-next,.elementor-slick-slider .slick-prev{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;padding:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:transparent;border:none;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus,.elementor-slick-slider .slick-next:hover,.elementor-slick-slider .slick-prev:focus,.elementor-slick-slider .slick-prev:hover{color:transparent;outline:none;background:transparent}.elementor-slick-slider .slick-next:focus:before,.elementor-slick-slider .slick-next:hover:before,.elementor-slick-slider .slick-prev:focus:before,.elementor-slick-slider .slick-prev:hover:before{opacity:1}.elementor-slick-slider .slick-next.slick-disabled:before,.elementor-slick-slider .slick-prev.slick-disabled:before{opacity:.25}.elementor-slick-slider .slick-next:before,.elementor-slick-slider .slick-prev:before{font-family:FontAwesome;font-size:35px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider .slick-prev{left:-25px}[dir=rtl] .elementor-slick-slider .slick-prev{left:auto;right:-25px}.elementor-slick-slider .slick-prev:before{content:"\f104"}[dir=rtl] .elementor-slick-slider .slick-prev:before{content:"\f105"}.elementor-slick-slider .slick-next{right:-25px}[dir=rtl] .elementor-slick-slider .slick-next{left:-25px;right:auto}.elementor-slick-slider .slick-next:before{content:"\f105"}[dir=rtl] .elementor-slick-slider .slick-next:before{content:"\f104"}.elementor-slick-slider .slick-dotted.slick-slider{margin-bottom:30px}.elementor-slick-slider ul.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.elementor-slick-slider ul.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0;padding:0;cursor:pointer}.elementor-slick-slider ul.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.elementor-slick-slider ul.slick-dots li button:focus,.elementor-slick-slider ul.slick-dots li button:hover{outline:none}.elementor-slick-slider ul.slick-dots li button:focus:before,.elementor-slick-slider ul.slick-dots li button:hover:before{opacity:1}.elementor-slick-slider ul.slick-dots li button:before{font-family:FontAwesome;font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:"\f111";text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elementor-slick-slider ul.slick-dots li.slick-active button:before{opacity:.75;color:#000}.elementor-slick-slider .slick-arrows-inside .slick-prev{left:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-prev{left:auto;right:20px}.elementor-slick-slider .slick-arrows-inside .slick-next{right:20px}[dir=rtl] .elementor-slick-slider .slick-arrows-inside .slick-next{left:20px;right:auto}.elementor-slick-slider .slick-dots-inside .slick-dots{bottom:5px}.elementor-slick-slider .slick-dots-inside.slick-dotted.slick-slider{margin-bottom:0}.elementor-slick-slider .slick-slider .slick-next,.elementor-slick-slider .slick-slider .slick-prev{z-index:1}.elementor-slick-slider .slick-slide img{margin:auto}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translateZ(0);transform:translateZ(0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background:no-repeat 50%}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23007aff'/%3E%3C/svg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z'/%3E%3C/svg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23007aff'/%3E%3C/svg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z'/%3E%3C/svg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'%3E%3Cpath d='M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z' fill='%23fff'/%3E%3C/svg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:hsla(0,0%,100%,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-size:100%;background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E") no-repeat 50%}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' stroke='%23fff' stroke-width='11' stroke-linecap='round' d='M60 7v20'/%3E%3C/defs%3E%3Cuse xlink:href='%23a' opacity='.27'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(30 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(60 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(90 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(120 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.27' transform='rotate(150 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.37' transform='rotate(180 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.46' transform='rotate(210 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.56' transform='rotate(240 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.66' transform='rotate(270 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.75' transform='rotate(300 60 60)'/%3E%3Cuse xlink:href='%23a' opacity='.85' transform='rotate(330 60 60)'/%3E%3C/svg%3E")}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.elementor-lightbox .dialog-widget-header{display:none}.elementor-lightbox .dialog-widget-content{background:none;-webkit-box-shadow:none;box-shadow:none;width:100%;height:100%}.elementor-lightbox .dialog-message{-webkit-animation-duration:.4s;animation-duration:.4s}.elementor-lightbox .dialog-message:not(.elementor-video-wrapper){height:100%}.elementor-lightbox .dialog-lightbox-close-button{cursor:pointer;position:absolute;color:#fff;font-size:25px;padding:5px;z-index:2;line-height:1;opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .dialog-lightbox-close-button:hover{opacity:.9}.elementor-lightbox .swiper-container{height:100%}.elementor-lightbox .elementor-lightbox-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:80px;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;margin:auto}.elementor-lightbox .elementor-lightbox-image{max-height:100%}.elementor-lightbox .elementor-video-container{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}@media (min-width:768px){.elementor-lightbox .elementor-video-container{width:50%}}@media (max-width:767px){.elementor-lightbox .elementor-video-container{width:100%}}.elementor-lightbox .elementor-swiper-button{opacity:.5;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.elementor-lightbox .elementor-swiper-button:hover{opacity:.9}.elementor-lightbox .elementor-swiper-button-prev{left:40px}.elementor-lightbox .elementor-swiper-button-next{right:40px}@media (min-width:767px){.elementor-lightbox .dialog-lightbox-close-button{top:35px;right:35px}}.animated{-webkit-animation-duration:1.25s;animation-duration:1.25s}.animated.animated-slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.animated-fast{-webkit-animation-duration:.75s;animation-duration:.75s}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.elementor-shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.elementor-shape-top{top:-1px}.elementor-shape-bottom{bottom:-1px}.elementor-shape[data-negative=false].elementor-shape-bottom,.elementor-shape[data-negative=true].elementor-shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elementor-shape svg{display:block;width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elementor-shape .elementor-shape-fill{fill:#fff;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.page-template-elementor_canvas.elementor-page:before{display:none}.elementor-post__thumbnail__link{-webkit-transition:none;-o-transition:none;transition:none}@media (max-width:767px){body:not(.elementor-editor-active) .elementor-hidden-phone{display:none}}@media (min-width:768px) and (max-width:1024px){body:not(.elementor-editor-active) .elementor-hidden-tablet{display:none}}@media (min-width:1025px){body:not(.elementor-editor-active) .elementor-hidden-desktop{display:none}}
assets/js/editor.js CHANGED
@@ -28,11 +28,7 @@ HandleAddDuplicateBehavior = Marionette.Behavior.extend( {
28
  elements: []
29
  };
30
 
31
- elementor.channels.data.trigger( 'element:before:add', newItem );
32
-
33
  this.view.addChildModel( newItem, options );
34
-
35
- elementor.channels.data.trigger( 'element:after:add', newItem );
36
  }
37
  } );
38
 
@@ -51,11 +47,7 @@ HandleDuplicateBehavior = Marionette.Behavior.extend( {
51
  var currentIndex = this.view.collection.indexOf( childView.model ),
52
  newModel = childView.model.clone();
53
 
54
- elementor.channels.data.trigger( 'element:before:duplicate', newModel );
55
-
56
  this.view.addChildModel( newModel, { at: currentIndex + 1 } );
57
-
58
- elementor.channels.data.trigger( 'element:after:duplicate', newModel );
59
  }
60
  } );
61
 
@@ -330,11 +322,11 @@ SortableBehavior = Marionette.Behavior.extend( {
330
  ui.placeholder.height( itemHeight );
331
  }
332
 
 
 
333
  elementor.channels.data
334
  .reply( 'dragging:model', model )
335
- .reply( 'dragging:parent:view', this.view )
336
- .trigger( 'drag:start', model )
337
- .trigger( model.get( 'elType' ) + ':drag:start' );
338
  },
339
 
340
  onSortOver: function( event ) {
@@ -381,10 +373,9 @@ SortableBehavior = Marionette.Behavior.extend( {
381
  return;
382
  }
383
 
384
- elementor.channels.data.trigger( 'drag:before:update', model );
385
 
386
- var newIndex = ui.item.parent().children().index( ui.item ),
387
- modelJSON = model.toJSON( { copyHtmlCache: true } );
388
 
389
  var senderSection = elementor.channels.data.request( 'dragging:parent:view' );
390
 
@@ -393,10 +384,6 @@ SortableBehavior = Marionette.Behavior.extend( {
393
  model.destroy();
394
 
395
  senderSection.isManualRemoving = false;
396
-
397
- this.view.addChildElement( modelJSON, { at: newIndex } );
398
-
399
- elementor.channels.data.trigger( 'drag:after:update', model );
400
  },
401
 
402
  onSortUpdate: function( event, ui ) {
@@ -408,8 +395,6 @@ SortableBehavior = Marionette.Behavior.extend( {
408
  collection = this.view.collection,
409
  newIndex = $childElement.parent().children().index( $childElement );
410
 
411
- elementor.channels.data.trigger( 'drag:before:update', model );
412
-
413
  var child = this.view.children.findByModelCid( model.cid );
414
 
415
  child._isRendering = true;
@@ -419,8 +404,6 @@ SortableBehavior = Marionette.Behavior.extend( {
419
  this.view.addChildElement( model, { at: newIndex } );
420
 
421
  elementor.setFlagEditorChange( true );
422
-
423
- elementor.channels.data.trigger( 'drag:after:update', model );
424
  }
425
  },
426
 
@@ -436,11286 +419,10330 @@ SortableBehavior = Marionette.Behavior.extend( {
436
  module.exports = SortableBehavior;
437
 
438
  },{}],6:[function(require,module,exports){
439
- var InsertTemplateHandler;
440
-
441
- InsertTemplateHandler = Marionette.Behavior.extend( {
442
- ui: {
443
- insertButton: '.elementor-template-library-template-insert'
444
- },
445
 
446
- events: {
447
- 'click @ui.insertButton': 'onInsertButtonClick'
448
- },
449
 
450
- onInsertButtonClick: function() {
451
- if ( this.view.model.get( 'hasPageSettings' ) ) {
452
- InsertTemplateHandler.showImportDialog( this.view.model );
453
- return;
454
- }
455
 
456
- elementor.templates.importTemplate( this.view.model );
457
- }
458
- }, {
459
- dialog: null,
460
 
461
- showImportDialog: function( model ) {
462
- var dialog = InsertTemplateHandler.getDialog();
463
 
464
- dialog.onConfirm = function() {
465
- elementor.templates.importTemplate( model, { withPageSettings: true } );
466
- };
 
 
467
 
468
- dialog.onCancel = function() {
469
- elementor.templates.importTemplate( model );
470
- };
471
 
472
- dialog.show();
473
- },
 
 
 
 
474
 
475
- initDialog: function() {
476
- InsertTemplateHandler.dialog = elementor.dialogsManager.createWidget( 'confirm', {
477
- id: 'elementor-insert-template-settings-dialog',
478
- headerMessage: elementor.translate( 'import_template_dialog_header' ),
479
- message: elementor.translate( 'import_template_dialog_message' ) + '<br>' + elementor.translate( 'import_template_dialog_message_attention' ),
480
- strings: {
481
- confirm: elementor.translate( 'yes' ),
482
- cancel: elementor.translate( 'no' )
483
  }
484
  } );
485
- },
486
 
487
- getDialog: function() {
488
- if ( ! InsertTemplateHandler.dialog ) {
489
- InsertTemplateHandler.initDialog();
490
  }
491
 
492
- return InsertTemplateHandler.dialog;
493
- }
494
- } );
495
-
496
- module.exports = InsertTemplateHandler;
497
 
498
- },{}],7:[function(require,module,exports){
499
- var TemplateLibraryTemplateModel = require( 'elementor-templates/models/template' ),
500
- TemplateLibraryCollection;
501
 
502
- TemplateLibraryCollection = Backbone.Collection.extend( {
503
- model: TemplateLibraryTemplateModel
504
- } );
505
 
506
- module.exports = TemplateLibraryCollection;
 
 
 
507
 
508
- },{"elementor-templates/models/template":9}],8:[function(require,module,exports){
509
- var TemplateLibraryLayoutView = require( 'elementor-templates/views/layout' ),
510
- TemplateLibraryCollection = require( 'elementor-templates/collections/templates' ),
511
- TemplateLibraryManager;
512
 
513
- TemplateLibraryManager = function() {
514
- var self = this,
515
- modal,
516
- deleteDialog,
517
- errorDialog,
518
- layout,
519
- startIntent = {},
520
- templateTypes = {},
521
- templatesCollection;
522
 
523
- var initLayout = function() {
524
- layout = new TemplateLibraryLayoutView();
525
- };
526
 
527
- var registerDefaultTemplateTypes = function() {
528
- var data = {
529
- saveDialog: {
530
- description: elementor.translate( 'save_your_template_description' )
531
  },
532
- ajaxParams: {
533
- success: function( data ) {
534
- self.getTemplatesCollection().add( data );
535
-
536
- self.setTemplatesSource( 'local' );
537
-
538
- self.showTemplates();
539
- },
540
- error: function( data ) {
541
- self.showErrorDialog( data );
542
- }
543
  }
544
  };
545
 
546
- _.each( [ 'page', 'section' ], function( type ) {
547
- var safeData = Backbone.$.extend( true, {}, data, {
548
- saveDialog: {
549
- title: elementor.translate( 'save_your_template', [ elementor.translate( type ) ] )
550
- }
551
- } );
552
 
553
- self.registerTemplateType( type, safeData );
554
- } );
555
- };
556
 
557
- this.init = function() {
558
- registerDefaultTemplateTypes();
 
 
 
 
 
 
559
  };
560
 
561
- this.getTemplateTypes = function( type ) {
562
- if ( type ) {
563
- return templateTypes[ type ];
564
- }
565
 
566
- return templateTypes;
567
- };
568
 
569
- this.registerTemplateType = function( type, data ) {
570
- templateTypes[ type ] = data;
 
571
  };
572
 
573
- this.deleteTemplate = function( templateModel ) {
574
- var dialog = self.getDeleteDialog();
 
 
 
 
 
 
 
575
 
576
- dialog.onConfirm = function() {
577
- elementor.ajax.send( 'delete_template', {
578
- data: {
579
- source: templateModel.get( 'source' ),
580
- template_id: templateModel.get( 'template_id' )
581
- },
582
- success: function() {
583
- templatesCollection.remove( templateModel, { silent: true } );
584
 
585
- self.showTemplates();
 
586
  }
587
- } );
588
  };
589
 
590
- dialog.show();
 
 
 
 
591
  };
592
 
593
- this.importTemplate = function( templateModel, options ) {
594
- options = options || {};
595
 
596
- layout.showLoadingView();
597
 
598
- self.requestTemplateContent( templateModel.get( 'source' ), templateModel.get( 'template_id' ), {
599
- data: {
600
- page_settings: options.withPageSettings
601
- },
602
- success: function( data ) {
603
- self.closeModal();
604
 
605
- elementor.channels.data.trigger( 'template:before:insert', templateModel );
 
 
606
 
607
- elementor.sections.currentView.addChildModel( data.content, startIntent.importOptions || {} );
608
 
609
- elementor.channels.data.trigger( 'template:after:insert', templateModel );
 
610
 
611
- if ( options.withPageSettings ) {
612
- elementor.settings.page.model.set( data.page_settings );
613
- }
614
- },
615
- error: function( data ) {
616
- self.showErrorDialog( data );
617
- }
618
- } );
619
- };
620
 
621
- this.saveTemplate = function( type, data ) {
622
- var templateType = templateTypes[ type ];
 
623
 
624
- _.extend( data, {
625
- source: 'local',
626
- type: type
627
- } );
628
 
629
- if ( templateType.prepareSavedData ) {
630
- data = templateType.prepareSavedData( data );
631
- }
632
 
633
- data.content = JSON.stringify( data.content );
634
 
635
- var ajaxParams = { data: data };
636
 
637
- if ( templateType.ajaxParams ) {
638
- _.extend( ajaxParams, templateType.ajaxParams );
639
- }
640
 
641
- elementor.ajax.send( 'save_template', ajaxParams );
642
- };
 
 
643
 
644
- this.requestTemplateContent = function( source, id, ajaxOptions ) {
645
- var options = {
646
- data: {
647
- source: source,
648
- edit_mode: true,
649
- template_id: id
650
- }
651
- };
652
 
653
- if ( ajaxOptions ) {
654
- Backbone.$.extend( true, options, ajaxOptions );
655
- }
656
 
657
- return elementor.ajax.send( 'get_template_data', options );
658
- };
659
 
660
- this.getDeleteDialog = function() {
661
- if ( ! deleteDialog ) {
662
- deleteDialog = elementor.dialogsManager.createWidget( 'confirm', {
663
- id: 'elementor-template-library-delete-dialog',
664
- headerMessage: elementor.translate( 'delete_template' ),
665
- message: elementor.translate( 'delete_template_confirm' ),
666
- strings: {
667
- confirm: elementor.translate( 'delete' )
668
- }
669
- } );
670
- }
671
 
672
- return deleteDialog;
673
- };
674
 
675
- this.getErrorDialog = function() {
676
- if ( ! errorDialog ) {
677
- errorDialog = elementor.dialogsManager.createWidget( 'alert', {
678
- id: 'elementor-template-library-error-dialog',
679
- headerMessage: elementor.translate( 'an_error_occurred' )
680
- } );
681
- }
682
 
683
- return errorDialog;
684
- };
 
685
 
686
- this.getModal = function() {
687
- if ( ! modal ) {
688
- modal = elementor.dialogsManager.createWidget( 'lightbox', {
689
- id: 'elementor-template-library-modal',
690
- closeButton: false
691
- } );
692
- }
693
 
694
- return modal;
695
- };
696
 
697
- this.getLayout = function() {
698
- return layout;
699
- };
700
 
701
- this.getTemplatesCollection = function() {
702
- return templatesCollection;
703
- };
704
 
705
- this.requestRemoteTemplates = function( callback, forceUpdate ) {
706
- if ( templatesCollection && ! forceUpdate ) {
707
- if ( callback ) {
708
- callback();
709
- }
710
 
711
- return;
712
- }
 
713
 
714
- elementor.ajax.send( 'get_templates', {
715
- success: function( data ) {
716
- templatesCollection = new TemplateLibraryCollection( data );
717
 
718
- if ( callback ) {
719
- callback();
720
- }
721
  }
722
  } );
723
- };
724
 
725
- this.startModal = function( customStartIntent ) {
726
- startIntent = customStartIntent || {};
 
727
 
728
- self.getModal().show();
 
729
 
730
- self.setTemplatesSource( 'remote' );
 
731
 
732
- if ( ! layout ) {
733
- initLayout();
734
- }
735
 
736
- layout.showLoadingView();
737
 
738
- self.requestRemoteTemplates( function() {
739
- if ( startIntent.onReady ) {
740
- startIntent.onReady();
 
 
 
 
 
 
 
 
 
741
  }
742
  } );
743
- };
744
 
745
- this.closeModal = function() {
746
- self.getModal().hide();
747
- };
748
 
749
- this.setTemplatesSource = function( source, trigger ) {
750
- var channel = elementor.channels.templates;
 
751
 
752
- channel.reply( 'filter:source', source );
 
 
753
 
754
- if ( trigger ) {
755
- channel.trigger( 'filter:change' );
756
  }
757
- };
758
 
759
- this.showTemplates = function() {
760
- layout.showTemplatesView( templatesCollection );
761
- };
762
 
763
- this.showTemplatesModal = function() {
764
- self.startModal( {
765
- onReady: self.showTemplates
766
- } );
767
- };
768
 
769
- this.showErrorDialog = function( errorMessage ) {
770
- if ( 'object' === typeof errorMessage ) {
771
- var message = '';
772
 
773
- _.each( errorMessage, function( error ) {
774
- message += '<div>' + error.message + '.</div>';
775
- } );
776
 
777
- errorMessage = message;
778
- } else if ( errorMessage ) {
779
- errorMessage += '.';
780
- } else {
781
- errorMessage = '<i>&#60;The error message is empty&#62;</i>';
782
- }
783
 
784
- self.getErrorDialog()
785
- .setMessage( elementor.translate( 'templates_request_error' ) + '<div id="elementor-template-library-error-info">' + errorMessage + '</div>' )
786
- .show();
787
- };
788
- };
789
 
790
- module.exports = new TemplateLibraryManager();
 
791
 
792
- },{"elementor-templates/collections/templates":7,"elementor-templates/views/layout":10}],9:[function(require,module,exports){
793
- var TemplateLibraryTemplateModel;
794
 
795
- TemplateLibraryTemplateModel = Backbone.Model.extend( {
796
- defaults: {
797
- template_id: 0,
798
- name: '',
799
- title: '',
800
- source: '',
801
- type: '',
802
- author: '',
803
- thumbnail: '',
804
- url: '',
805
- export_link: '',
806
- categories: [],
807
- keywords: []
808
- }
809
- } );
810
 
811
- module.exports = TemplateLibraryTemplateModel;
812
 
813
- },{}],10:[function(require,module,exports){
814
- var TemplateLibraryHeaderView = require( 'elementor-templates/views/parts/header' ),
815
- TemplateLibraryHeaderLogoView = require( 'elementor-templates/views/parts/header-parts/logo' ),
816
- TemplateLibraryHeaderSaveView = require( 'elementor-templates/views/parts/header-parts/save' ),
817
- TemplateLibraryHeaderMenuView = require( 'elementor-templates/views/parts/header-parts/menu' ),
818
- TemplateLibraryHeaderPreviewView = require( 'elementor-templates/views/parts/header-parts/preview' ),
819
- TemplateLibraryHeaderBackView = require( 'elementor-templates/views/parts/header-parts/back' ),
820
- TemplateLibraryLoadingView = require( 'elementor-templates/views/parts/loading' ),
821
- TemplateLibraryCollectionView = require( 'elementor-templates/views/parts/templates' ),
822
- TemplateLibrarySaveTemplateView = require( 'elementor-templates/views/parts/save-template' ),
823
- TemplateLibraryImportView = require( 'elementor-templates/views/parts/import' ),
824
- TemplateLibraryPreviewView = require( 'elementor-templates/views/parts/preview' ),
825
- TemplateLibraryLayoutView;
826
 
827
- TemplateLibraryLayoutView = Marionette.LayoutView.extend( {
828
- el: '#elementor-template-library-modal',
829
 
830
- regions: {
831
- modalContent: '.dialog-message',
832
- modalHeader: '.dialog-widget-header'
833
- },
834
 
835
- initialize: function() {
836
- this.getRegion( 'modalHeader' ).show( new TemplateLibraryHeaderView() );
 
837
  },
838
 
839
- getHeaderView: function() {
840
- return this.getRegion( 'modalHeader' ).currentView;
 
 
841
  },
842
 
843
- getTemplateActionButton: function( templateData ) {
844
- var viewId = '#tmpl-elementor-template-library-' + ( templateData.isPro ? 'get-pro-button' : 'insert-button' );
845
-
846
- viewId = elementor.hooks.applyFilters( 'elementor/editor/template-library/template/action-button', viewId, templateData );
847
 
848
- var template = Marionette.TemplateCache.get( viewId );
849
 
850
- return Marionette.Renderer.render( template );
851
- },
852
 
853
- showLoadingView: function() {
854
- this.modalContent.show( new TemplateLibraryLoadingView() );
855
  },
856
 
857
- showTemplatesView: function( templatesCollection ) {
858
- this.modalContent.show( new TemplateLibraryCollectionView( {
859
- collection: templatesCollection
860
- } ) );
861
-
862
- var headerView = this.getHeaderView();
863
 
864
- headerView.tools.show( new TemplateLibraryHeaderSaveView() );
865
- headerView.menuArea.show( new TemplateLibraryHeaderMenuView() );
866
- headerView.logoArea.show( new TemplateLibraryHeaderLogoView() );
867
- },
868
 
869
- showImportView: function() {
870
- this.modalContent.show( new TemplateLibraryImportView() );
871
- },
872
 
873
- showSaveTemplateView: function( elementModel ) {
874
- this.modalContent.show( new TemplateLibrarySaveTemplateView( { model: elementModel } ) );
 
875
 
876
- var headerView = this.getHeaderView();
877
 
878
- headerView.tools.reset();
879
- headerView.menuArea.reset();
880
- headerView.logoArea.show( new TemplateLibraryHeaderLogoView() );
881
- },
 
 
 
 
 
 
882
 
883
- showPreviewView: function( templateModel ) {
884
- this.modalContent.show( new TemplateLibraryPreviewView( {
885
- url: templateModel.get( 'url' )
886
- } ) );
887
 
888
- var headerView = this.getHeaderView();
 
889
 
890
- headerView.menuArea.reset();
 
 
 
891
 
892
- headerView.tools.show( new TemplateLibraryHeaderPreviewView( {
893
- model: templateModel
894
- } ) );
 
 
 
 
 
 
 
 
 
895
 
896
- headerView.logoArea.show( new TemplateLibraryHeaderBackView() );
897
  }
898
  } );
899
 
900
- module.exports = TemplateLibraryLayoutView;
901
-
902
- },{"elementor-templates/views/parts/header":16,"elementor-templates/views/parts/header-parts/back":11,"elementor-templates/views/parts/header-parts/logo":12,"elementor-templates/views/parts/header-parts/menu":13,"elementor-templates/views/parts/header-parts/preview":14,"elementor-templates/views/parts/header-parts/save":15,"elementor-templates/views/parts/import":17,"elementor-templates/views/parts/loading":18,"elementor-templates/views/parts/preview":19,"elementor-templates/views/parts/save-template":20,"elementor-templates/views/parts/templates":22}],11:[function(require,module,exports){
903
- var TemplateLibraryHeaderBackView;
904
-
905
- TemplateLibraryHeaderBackView = Marionette.ItemView.extend( {
906
- template: '#tmpl-elementor-template-library-header-back',
907
 
908
- id: 'elementor-template-library-header-preview-back',
909
 
910
- events: {
911
- 'click': 'onClick'
 
912
  },
913
 
914
- onClick: function() {
915
- elementor.templates.showTemplates();
 
916
  }
917
  } );
918
 
919
- module.exports = TemplateLibraryHeaderBackView;
920
-
921
  },{}],12:[function(require,module,exports){
922
- var TemplateLibraryHeaderLogoView;
923
-
924
- TemplateLibraryHeaderLogoView = Marionette.ItemView.extend( {
925
- template: '#tmpl-elementor-template-library-header-logo',
926
-
927
- id: 'elementor-template-library-header-logo',
928
-
929
- events: {
930
- 'click': 'onClick'
931
- },
932
-
933
- onClick: function() {
934
- elementor.templates.setTemplatesSource( 'remote' );
935
- elementor.templates.showTemplates();
936
- }
937
- } );
938
-
939
- module.exports = TemplateLibraryHeaderLogoView;
940
-
941
- },{}],13:[function(require,module,exports){
942
- var TemplateLibraryHeaderMenuView;
943
-
944
- TemplateLibraryHeaderMenuView = Marionette.ItemView.extend( {
945
- options: {
946
- activeClass: 'elementor-active'
947
- },
948
-
949
- template: '#tmpl-elementor-template-library-header-menu',
950
-
951
- id: 'elementor-template-library-header-menu',
952
 
 
953
  ui: {
954
- menuItems: '.elementor-template-library-menu-item'
955
  },
956
 
957
  events: {
958
- 'click @ui.menuItems': 'onMenuItemClick'
959
  },
960
 
961
- $activeItem: null,
962
-
963
- activateMenuItem: function( $item ) {
964
- var activeClass = this.getOption( 'activeClass' );
965
-
966
- if ( this.$activeItem === $item ) {
967
  return;
968
  }
969
 
970
- if ( this.$activeItem ) {
971
- this.$activeItem.removeClass( activeClass );
972
- }
 
973
 
974
- $item.addClass( activeClass );
 
975
 
976
- this.$activeItem = $item;
977
- },
 
978
 
979
- onRender: function() {
980
- var currentSource = elementor.channels.templates.request( 'filter:source' ),
981
- $sourceItem = this.ui.menuItems.filter( '[data-template-source="' + currentSource + '"]' );
982
 
983
- this.activateMenuItem( $sourceItem );
984
  },
985
 
986
- onMenuItemClick: function( event ) {
987
- var item = event.currentTarget;
 
 
 
 
 
 
 
 
 
988
 
989
- this.activateMenuItem( Backbone.$( item ) );
 
 
 
990
 
991
- elementor.templates.setTemplatesSource( item.dataset.templateSource, true );
992
  }
993
  } );
994
 
995
- module.exports = TemplateLibraryHeaderMenuView;
996
-
997
- },{}],14:[function(require,module,exports){
998
- var TemplateLibraryInsertTemplateBehavior = require( 'elementor-templates/behaviors/insert-template' ),
999
- TemplateLibraryHeaderPreviewView;
1000
-
1001
- TemplateLibraryHeaderPreviewView = Marionette.ItemView.extend( {
1002
- template: '#tmpl-elementor-template-library-header-preview',
1003
 
1004
- id: 'elementor-template-library-header-preview',
 
 
1005
 
1006
- behaviors: {
1007
- insertTemplate: {
1008
- behaviorClass: TemplateLibraryInsertTemplateBehavior
1009
- }
1010
- }
1011
  } );
1012
 
1013
- module.exports = TemplateLibraryHeaderPreviewView;
1014
 
1015
- },{"elementor-templates/behaviors/insert-template":6}],15:[function(require,module,exports){
1016
- var TemplateLibraryHeaderSaveView;
 
 
1017
 
1018
- TemplateLibraryHeaderSaveView = Marionette.ItemView.extend( {
1019
- template: '#tmpl-elementor-template-library-header-save',
 
 
 
 
 
 
 
1020
 
1021
- id: 'elementor-template-library-header-save',
 
 
1022
 
1023
- className: 'elementor-template-library-header-item',
 
 
 
 
 
 
 
1024
 
1025
- events: {
1026
- 'click': 'onClick'
1027
- },
1028
 
1029
- onClick: function() {
1030
- elementor.templates.getLayout().showSaveTemplateView();
1031
- }
1032
- } );
 
 
 
1033
 
1034
- module.exports = TemplateLibraryHeaderSaveView;
 
 
 
 
 
1035
 
1036
- },{}],16:[function(require,module,exports){
1037
- var TemplateLibraryHeaderView;
1038
-
1039
- TemplateLibraryHeaderView = Marionette.LayoutView.extend( {
1040
-
1041
- id: 'elementor-template-library-header',
1042
-
1043
- template: '#tmpl-elementor-template-library-header',
1044
-
1045
- regions: {
1046
- logoArea: '#elementor-template-library-header-logo-area',
1047
- tools: '#elementor-template-library-header-tools',
1048
- menuArea: '#elementor-template-library-header-menu-area'
1049
- },
1050
-
1051
- ui: {
1052
- closeModal: '#elementor-template-library-header-close-modal'
1053
- },
1054
 
1055
- events: {
1056
- 'click @ui.closeModal': 'onCloseModalClick'
1057
- },
1058
 
1059
- onCloseModalClick: function() {
1060
- elementor.templates.closeModal();
1061
- }
1062
- } );
1063
 
1064
- module.exports = TemplateLibraryHeaderView;
 
1065
 
1066
- },{}],17:[function(require,module,exports){
1067
- var TemplateLibraryImportView;
 
1068
 
1069
- TemplateLibraryImportView = Marionette.ItemView.extend( {
1070
- template: '#tmpl-elementor-template-library-import',
1071
 
1072
- id: 'elementor-template-library-import',
 
 
 
 
 
 
 
1073
 
1074
- ui: {
1075
- uploadForm: '#elementor-template-library-import-form'
1076
- },
 
1077
 
1078
- events: {
1079
- 'submit @ui.uploadForm': 'onFormSubmit'
1080
- },
1081
 
1082
- onFormSubmit: function( event ) {
1083
- event.preventDefault();
1084
 
1085
- elementor.templates.getLayout().showLoadingView();
1086
 
1087
- elementor.ajax.send( 'import_template', {
1088
- data: new FormData( this.ui.uploadForm[ 0 ] ),
1089
- processData: false,
1090
- contentType: false,
1091
  success: function( data ) {
1092
- elementor.templates.getTemplatesCollection().add( data.item );
1093
 
1094
- elementor.templates.showTemplates();
 
 
 
 
1095
  },
1096
  error: function( data ) {
1097
- elementor.templates.showErrorDialog( data );
1098
  }
1099
  } );
1100
- }
1101
- } );
1102
 
1103
- module.exports = TemplateLibraryImportView;
 
1104
 
1105
- },{}],18:[function(require,module,exports){
1106
- var TemplateLibraryLoadingView;
 
 
1107
 
1108
- TemplateLibraryLoadingView = Marionette.ItemView.extend( {
1109
- id: 'elementor-template-library-loading',
 
1110
 
1111
- template: '#tmpl-elementor-template-library-loading'
1112
- } );
1113
 
1114
- module.exports = TemplateLibraryLoadingView;
1115
 
1116
- },{}],19:[function(require,module,exports){
1117
- var TemplateLibraryPreviewView;
 
1118
 
1119
- TemplateLibraryPreviewView = Marionette.ItemView.extend( {
1120
- template: '#tmpl-elementor-template-library-preview',
1121
 
1122
- id: 'elementor-template-library-preview',
 
 
 
 
 
 
 
1123
 
1124
- ui: {
1125
- iframe: '> iframe'
1126
- },
1127
 
1128
- onRender: function() {
1129
- this.ui.iframe.attr( 'src', this.getOption( 'url' ) );
1130
- }
1131
- } );
1132
 
1133
- module.exports = TemplateLibraryPreviewView;
 
 
 
 
 
 
 
 
 
 
1134
 
1135
- },{}],20:[function(require,module,exports){
1136
- var TemplateLibrarySaveTemplateView;
1137
 
1138
- TemplateLibrarySaveTemplateView = Marionette.ItemView.extend( {
1139
- id: 'elementor-template-library-save-template',
 
 
 
 
 
1140
 
1141
- template: '#tmpl-elementor-template-library-save-template',
 
1142
 
1143
- ui: {
1144
- form: '#elementor-template-library-save-template-form',
1145
- submitButton: '#elementor-template-library-save-template-submit'
1146
- },
 
 
 
1147
 
1148
- events: {
1149
- 'submit @ui.form': 'onFormSubmit'
1150
- },
1151
 
1152
- getSaveType: function() {
1153
- return this.model ? this.model.get( 'elType' ) : 'page';
1154
- },
1155
 
1156
- templateHelpers: function() {
1157
- var saveType = this.getSaveType(),
1158
- templateType = elementor.templates.getTemplateTypes( saveType );
1159
 
1160
- return templateType.saveDialog;
1161
- },
 
 
 
1162
 
1163
- onFormSubmit: function( event ) {
1164
- event.preventDefault();
1165
 
1166
- var formData = this.ui.form.elementorSerializeObject(),
1167
- saveType = this.model ? this.model.get( 'elType' ) : 'page',
1168
- JSONParams = { removeDefault: true };
1169
 
1170
- formData.content = this.model ? [ this.model.toJSON( JSONParams ) ] : elementor.elements.toJSON( JSONParams );
 
 
 
 
 
1171
 
1172
- this.ui.submitButton.addClass( 'elementor-button-state' );
 
1173
 
1174
- elementor.templates.saveTemplate( saveType, formData );
1175
- }
1176
- } );
1177
 
1178
- module.exports = TemplateLibrarySaveTemplateView;
1179
 
1180
- },{}],21:[function(require,module,exports){
1181
- var TemplateLibraryTemplatesEmptyView;
 
1182
 
1183
- TemplateLibraryTemplatesEmptyView = Marionette.ItemView.extend( {
1184
- id: 'elementor-template-library-templates-empty',
1185
 
1186
- template: '#tmpl-elementor-template-library-templates-empty'
1187
- } );
 
 
 
 
1188
 
1189
- module.exports = TemplateLibraryTemplatesEmptyView;
 
 
1190
 
1191
- },{}],22:[function(require,module,exports){
1192
- var TemplateLibraryTemplateLocalView = require( 'elementor-templates/views/template/local' ),
1193
- TemplateLibraryTemplateRemoteView = require( 'elementor-templates/views/template/remote' ),
1194
- TemplateLibraryTemplatesEmptyView = require( 'elementor-templates/views/parts/templates-empty' ),
1195
- TemplateLibraryCollectionView;
1196
 
1197
- TemplateLibraryCollectionView = Marionette.CompositeView.extend( {
1198
- template: '#tmpl-elementor-template-library-templates',
1199
 
1200
- id: 'elementor-template-library-templates',
 
 
 
1201
 
1202
- childViewContainer: '#elementor-template-library-templates-container',
 
 
1203
 
1204
- emptyView: TemplateLibraryTemplatesEmptyView,
 
 
 
 
1205
 
1206
- getChildView: function( childModel ) {
1207
- if ( 'remote' === childModel.get( 'source' ) ) {
1208
- return TemplateLibraryTemplateRemoteView;
 
 
 
 
 
 
 
 
 
 
1209
  }
1210
 
1211
- return TemplateLibraryTemplateLocalView;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1212
  },
1213
 
1214
  initialize: function() {
1215
- this.listenTo( elementor.channels.templates, 'filter:change', this._renderChildren );
1216
  },
1217
 
1218
- filterByName: function( model ) {
1219
- var filterValue = elementor.channels.templates.request( 'filter:text' );
 
1220
 
1221
- if ( ! filterValue ) {
1222
- return true;
1223
- }
1224
 
1225
- filterValue = filterValue.toLowerCase();
1226
 
1227
- if ( model.get( 'title' ).toLowerCase().indexOf( filterValue ) >= 0 ) {
1228
- return true;
1229
- }
1230
 
1231
- return _.any( model.get( 'keywords' ), function( keyword ) {
1232
- return keyword.toLowerCase().indexOf( filterValue ) >= 0;
1233
- } );
1234
  },
1235
 
1236
- filterBySource: function( model ) {
1237
- var filterValue = elementor.channels.templates.request( 'filter:source' );
 
1238
 
1239
- if ( ! filterValue ) {
1240
- return true;
1241
- }
 
1242
 
1243
- return filterValue === model.get( 'source' );
 
 
 
 
1244
  },
1245
 
1246
- filterByType: function( model ) {
1247
- return false !== elementor.templates.getTemplateTypes( model.get( 'type' ) ).showInLibrary;
1248
  },
1249
 
1250
- filter: function( childModel ) {
1251
- return this.filterByName( childModel ) && this.filterBySource( childModel ) && this.filterByType( childModel );
 
 
 
 
 
 
1252
  },
1253
 
1254
- onRenderCollection: function() {
1255
- var isEmpty = this.children.isEmpty();
 
 
1256
 
1257
- this.$childViewContainer.attr( 'data-template-source', isEmpty ? 'empty' : elementor.channels.templates.request( 'filter:source' ) );
1258
- }
1259
- } );
1260
 
1261
- module.exports = TemplateLibraryCollectionView;
1262
 
1263
- },{"elementor-templates/views/parts/templates-empty":21,"elementor-templates/views/template/local":24,"elementor-templates/views/template/remote":25}],23:[function(require,module,exports){
1264
- var TemplateLibraryInsertTemplateBehavior = require( 'elementor-templates/behaviors/insert-template' ),
1265
- TemplateLibraryTemplateView;
1266
 
1267
- TemplateLibraryTemplateView = Marionette.ItemView.extend( {
1268
- className: function() {
1269
- var classes = 'elementor-template-library-template elementor-template-library-template-' + this.model.get( 'source' );
1270
 
1271
- if ( this.model.get( 'isPro' ) ) {
1272
- classes += ' elementor-template-library-pro-template';
1273
- }
1274
 
1275
- return classes;
1276
- },
1277
 
1278
- ui: function() {
1279
- return {
1280
- previewButton: '.elementor-template-library-template-preview'
1281
- };
1282
- },
1283
 
1284
- events: function() {
1285
- return {
1286
- 'click @ui.previewButton': 'onPreviewButtonClick'
1287
- };
1288
  },
1289
 
1290
- behaviors: {
1291
- insertTemplate: {
1292
- behaviorClass: TemplateLibraryInsertTemplateBehavior
1293
- }
1294
  }
1295
  } );
1296
 
1297
- module.exports = TemplateLibraryTemplateView;
1298
-
1299
- },{"elementor-templates/behaviors/insert-template":6}],24:[function(require,module,exports){
1300
- var TemplateLibraryTemplateView = require( 'elementor-templates/views/template/base' ),
1301
- TemplateLibraryTemplateLocalView;
1302
 
1303
- TemplateLibraryTemplateLocalView = TemplateLibraryTemplateView.extend( {
1304
- template: '#tmpl-elementor-template-library-template-local',
1305
 
1306
- ui: function() {
1307
- return _.extend( TemplateLibraryTemplateView.prototype.ui.apply( this, arguments ), {
1308
- deleteButton: '.elementor-template-library-template-delete'
1309
- } );
1310
- },
1311
 
1312
- events: function() {
1313
- return _.extend( TemplateLibraryTemplateView.prototype.events.apply( this, arguments ), {
1314
- 'click @ui.deleteButton': 'onDeleteButtonClick'
1315
- } );
1316
- },
1317
 
1318
- onDeleteButtonClick: function() {
1319
- elementor.templates.deleteTemplate( this.model );
1320
  },
1321
 
1322
- onPreviewButtonClick: function() {
1323
- open( this.model.get( 'url' ), '_blank' );
 
1324
  }
1325
  } );
1326
 
1327
- module.exports = TemplateLibraryTemplateLocalView;
1328
 
1329
- },{"elementor-templates/views/template/base":23}],25:[function(require,module,exports){
1330
- var TemplateLibraryTemplateView = require( 'elementor-templates/views/template/base' ),
1331
- TemplateLibraryTemplateRemoteView;
1332
 
1333
- TemplateLibraryTemplateRemoteView = TemplateLibraryTemplateView.extend( {
1334
- template: '#tmpl-elementor-template-library-template-remote',
 
 
1335
 
1336
- onPreviewButtonClick: function() {
1337
- elementor.templates.getLayout().showPreviewView( this.model );
1338
- }
1339
- } );
1340
 
1341
- module.exports = TemplateLibraryTemplateRemoteView;
1342
 
1343
- },{"elementor-templates/views/template/base":23}],26:[function(require,module,exports){
1344
- /* global ElementorConfig */
1345
- var App;
1346
 
1347
- Marionette.TemplateCache.prototype.compileTemplate = function( rawTemplate, options ) {
1348
- options = {
1349
- evaluate: /<#([\s\S]+?)#>/g,
1350
- interpolate: /{{{([\s\S]+?)}}}/g,
1351
- escape: /{{([^}]+?)}}(?!})/g
1352
- };
1353
 
1354
- return _.template( rawTemplate, options );
1355
- };
1356
 
1357
- App = Marionette.Application.extend( {
1358
- helpers: require( 'elementor-editor-utils/helpers' ),
1359
- heartbeat: require( 'elementor-editor-utils/heartbeat' ),
1360
- imagesManager: require( 'elementor-editor-utils/images-manager' ),
1361
- debug: require( 'elementor-editor-utils/debug' ),
1362
- schemes: require( 'elementor-editor-utils/schemes' ),
1363
- presetsFactory: require( 'elementor-editor-utils/presets-factory' ),
1364
- introduction: require( 'elementor-editor-utils/introduction' ),
1365
- templates: require( 'elementor-templates/manager' ),
1366
- ajax: require( 'elementor-editor-utils/ajax' ),
1367
- conditions: require( 'elementor-editor-utils/conditions' ),
1368
- hotKeys: require( 'elementor-utils/hot-keys' ),
1369
- history: require( 'modules/history/assets/js/module' ),
1370
 
1371
- channels: {
1372
- editor: Backbone.Radio.channel( 'ELEMENTOR:editor' ),
1373
- data: Backbone.Radio.channel( 'ELEMENTOR:data' ),
1374
- panelElements: Backbone.Radio.channel( 'ELEMENTOR:panelElements' ),
1375
- dataEditMode: Backbone.Radio.channel( 'ELEMENTOR:editmode' ),
1376
- deviceMode: Backbone.Radio.channel( 'ELEMENTOR:deviceMode' ),
1377
- templates: Backbone.Radio.channel( 'ELEMENTOR:templates' )
1378
- },
1379
 
1380
- // Exporting modules that can be used externally
1381
- modules: {
1382
- element: require( 'elementor-models/element' ),
1383
- WidgetView: require( 'elementor-views/widget' ),
1384
- panel: {
1385
- Menu: require( 'elementor-panel/pages/menu/menu' )
1386
- },
1387
- controls: {
1388
- Base: require( 'elementor-views/controls/base' ),
1389
- BaseMultiple: require( 'elementor-views/controls/base-multiple' ),
1390
- Color: require( 'elementor-views/controls/color' ),
1391
- Dimensions: require( 'elementor-views/controls/dimensions' ),
1392
- Image_dimensions: require( 'elementor-views/controls/image-dimensions' ),
1393
- Media: require( 'elementor-views/controls/media' ),
1394
- Slider: require( 'elementor-views/controls/slider' ),
1395
- Wysiwyg: require( 'elementor-views/controls/wysiwyg' ),
1396
- Choose: require( 'elementor-views/controls/choose' ),
1397
- Url: require( 'elementor-views/controls/base-multiple' ),
1398
- Font: require( 'elementor-views/controls/font' ),
1399
- Section: require( 'elementor-views/controls/section' ),
1400
- Tab: require( 'elementor-views/controls/tab' ),
1401
- Repeater: require( 'elementor-views/controls/repeater' ),
1402
- Wp_widget: require( 'elementor-views/controls/wp_widget' ),
1403
- Icon: require( 'elementor-views/controls/icon' ),
1404
- Gallery: require( 'elementor-views/controls/gallery' ),
1405
- Select2: require( 'elementor-views/controls/select2' ),
1406
- Date_time: require( 'elementor-views/controls/date-time' ),
1407
- Code: require( 'elementor-views/controls/code' ),
1408
- Box_shadow: require( 'elementor-views/controls/box-shadow' ),
1409
- Text_shadow: require( 'elementor-views/controls/box-shadow' ),
1410
- Structure: require( 'elementor-views/controls/structure' ),
1411
- Animation: require( 'elementor-views/controls/select2' ),
1412
- Hover_animation: require( 'elementor-views/controls/select2' ),
1413
- Order: require( 'elementor-views/controls/order' ),
1414
- Switcher: require( 'elementor-views/controls/switcher' ),
1415
- Number: require( 'elementor-views/controls/number' )
1416
- },
1417
- templateLibrary: {
1418
- ElementsCollectionView: require( 'elementor-panel/pages/elements/views/elements' )
1419
  }
 
 
 
 
1420
  },
1421
 
1422
- _defaultDeviceMode: 'desktop',
 
 
1423
 
1424
- addControlView: function( controlID, ControlView ) {
1425
- this.modules.controls[ controlID[0].toUpperCase() + controlID.slice( 1 ) ] = ControlView;
1426
  },
1427
 
1428
- getElementData: function( modelElement ) {
1429
- var elType = modelElement.get( 'elType' );
1430
 
1431
- if ( 'widget' === elType ) {
1432
- var widgetType = modelElement.get( 'widgetType' );
1433
 
1434
- if ( ! this.config.widgets[ widgetType ] ) {
1435
- return false;
1436
- }
1437
 
1438
- return this.config.widgets[ widgetType ];
1439
- }
1440
 
1441
- if ( ! this.config.elements[ elType ] ) {
1442
- return false;
1443
- }
1444
 
1445
- return this.config.elements[ elType ];
1446
- },
1447
 
1448
- getElementControls: function( modelElement ) {
1449
- var self = this,
1450
- elementData = self.getElementData( modelElement );
1451
 
1452
- if ( ! elementData ) {
1453
- return false;
 
1454
  }
 
 
1455
 
1456
- var elType = modelElement.get( 'elType' ),
1457
- isInner = modelElement.get( 'isInner' ),
1458
- controls = {};
1459
 
1460
- _.each( elementData.controls, function( controlData, controlKey ) {
1461
- if ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top ) {
1462
- return;
1463
- }
1464
 
1465
- controls[ controlKey ] = _.extend( {}, self.config.controls[ controlData.type ], controlData );
1466
- } );
1467
 
1468
- return controls;
1469
- },
1470
 
1471
- getControlView: function( controlID ) {
1472
- return this.modules.controls[ controlID[0].toUpperCase() + controlID.slice( 1 ) ] || this.modules.controls.Base;
1473
- },
1474
 
1475
- getPanelView: function() {
1476
- return this.getRegion( 'panel' ).currentView;
1477
  },
1478
 
1479
- initComponents: function() {
1480
- var EventManager = require( 'elementor-utils/hooks' ),
1481
- Settings = require( 'elementor-editor/settings/settings' );
 
1482
 
1483
- this.hooks = new EventManager();
1484
 
1485
- this.settings = new Settings();
 
1486
 
1487
- /**
1488
- * @deprecated - use `this.settings.page` instead
1489
- */
1490
- this.pageSettings = this.settings.page;
1491
 
1492
- this.templates.init();
1493
 
1494
- this.initDialogsManager();
1495
 
1496
- this.heartbeat.init();
 
 
 
 
1497
 
1498
- this.ajax.init();
 
1499
  },
1500
 
1501
- initDialogsManager: function() {
1502
- this.dialogsManager = new DialogsManager.Instance();
1503
  },
1504
 
1505
- initElements: function() {
1506
- var ElementModel = elementor.modules.element,
1507
- config = this.config.data;
 
1508
 
1509
- // If it's an reload, use the not-saved data
1510
- if ( this.elements ) {
1511
- config = this.elements.toJSON();
1512
- }
1513
 
1514
- this.elements = new ElementModel.Collection( config );
 
 
 
 
 
 
 
 
 
1515
  },
1516
 
1517
- initPreview: function() {
1518
- this.$previewWrapper = Backbone.$( '#elementor-preview' );
 
1519
 
1520
- this.$previewResponsiveWrapper = Backbone.$( '#elementor-preview-responsive-wrapper' );
 
1521
 
1522
- var previewIframeId = 'elementor-preview-iframe';
1523
 
1524
- // Make sure the iFrame does not exist.
1525
- if ( ! Backbone.$( '#' + previewIframeId ).length ) {
1526
- var previewIFrame = document.createElement( 'iframe' );
 
 
 
1527
 
1528
- previewIFrame.id = previewIframeId;
1529
- previewIFrame.src = this.config.preview_link + '&' + ( new Date().getTime() );
 
 
 
 
 
 
1530
 
1531
- this.$previewResponsiveWrapper.append( previewIFrame );
1532
- }
1533
 
1534
- this.$preview = Backbone.$( '#' + previewIframeId );
 
1535
 
1536
- this.$preview.on( 'load', _.bind( this.onPreviewLoaded, this ) );
1537
- },
1538
 
1539
- initFrontend: function() {
1540
- var frontendWindow = this.$preview[0].contentWindow;
1541
 
1542
- window.elementorFrontend = frontendWindow.elementorFrontend;
1543
 
1544
- frontendWindow.elementor = this;
 
1545
 
1546
- elementorFrontend.init();
 
1547
 
1548
- elementorFrontend.elementsHandler.initHandlers();
1549
 
1550
- this.trigger( 'frontend:init' );
 
1551
  },
1552
 
1553
- initClearPageDialog: function() {
1554
- var self = this,
1555
- dialog;
 
1556
 
1557
- self.getClearPageDialog = function() {
1558
- if ( dialog ) {
1559
- return dialog;
1560
- }
1561
 
1562
- dialog = this.dialogsManager.createWidget( 'confirm', {
1563
- id: 'elementor-clear-page-dialog',
1564
- headerMessage: elementor.translate( 'clear_page' ),
1565
- message: elementor.translate( 'dialog_confirm_clear_page' ),
1566
- position: {
1567
- my: 'center center',
1568
- at: 'center center'
1569
- },
1570
- strings: {
1571
- confirm: elementor.translate( 'delete' ),
1572
- cancel: elementor.translate( 'cancel' )
1573
- },
1574
- onConfirm: function() {
1575
- self.getRegion( 'sections' ).currentView.collection.reset();
1576
- }
1577
- } );
1578
 
1579
- return dialog;
1580
- };
 
 
 
 
 
 
1581
  },
1582
 
1583
- initHotKeys: function() {
1584
- var keysDictionary = {
1585
- del: 46,
1586
- d: 68,
1587
- l: 76,
1588
- m: 77,
1589
- p: 80,
1590
- s: 83
1591
- };
1592
 
1593
- var $ = jQuery,
1594
- hotKeysHandlers = {},
1595
- hotKeysManager = this.hotKeys;
1596
 
1597
- hotKeysHandlers[ keysDictionary.del ] = {
1598
- deleteElement: {
1599
- isWorthHandling: function( event ) {
1600
- var isEditorOpen = 'editor' === elementor.getPanelView().getCurrentPageName(),
1601
- isInputTarget = $( event.target ).is( ':input, .elementor-input' );
1602
 
1603
- return isEditorOpen && ! isInputTarget;
1604
- },
1605
- handle: function() {
1606
- elementor.getPanelView().getCurrentPageView().getOption( 'editedElementView' ).confirmRemove();
1607
- }
1608
- }
1609
- };
1610
 
1611
- hotKeysHandlers[ keysDictionary.d ] = {
1612
- /* Waiting for CTRL+Z / CTRL+Y
1613
- duplicateElement: {
1614
- isWorthHandling: function( event ) {
1615
- return self.isControlEvent( event );
1616
- },
1617
- handle: function() {
1618
- var panel = elementor.getPanelView();
1619
 
1620
- if ( 'editor' !== panel.getCurrentPageName() ) {
1621
- return;
1622
- }
1623
 
1624
- panel.getCurrentPageView().getOption( 'editedElementView' ).duplicate();
1625
- }
1626
- }*/
1627
- };
1628
 
1629
- hotKeysHandlers[ keysDictionary.l ] = {
1630
- showTemplateLibrary: {
1631
- isWorthHandling: function( event ) {
1632
- return hotKeysManager.isControlEvent( event ) && event.shiftKey;
1633
- },
1634
- handle: function() {
1635
- elementor.templates.showTemplatesModal();
1636
- }
1637
- }
1638
- };
1639
 
1640
- hotKeysHandlers[ keysDictionary.m ] = {
1641
- changeDeviceMode: {
1642
- devices: [ 'desktop', 'tablet', 'mobile' ],
1643
- isWorthHandling: function( event ) {
1644
- return hotKeysManager.isControlEvent( event ) && event.shiftKey;
1645
- },
1646
- handle: function() {
1647
- var currentDeviceMode = elementor.channels.deviceMode.request( 'currentMode' ),
1648
- modeIndex = this.devices.indexOf( currentDeviceMode );
1649
 
1650
- modeIndex++;
1651
 
1652
- if ( modeIndex >= this.devices.length ) {
1653
- modeIndex = 0;
1654
- }
1655
 
1656
- elementor.changeDeviceMode( this.devices[ modeIndex ] );
1657
- }
1658
- }
1659
- };
1660
 
1661
- hotKeysHandlers[ keysDictionary.p ] = {
1662
- changeEditMode: {
1663
- isWorthHandling: function( event ) {
1664
- return hotKeysManager.isControlEvent( event );
1665
- },
1666
- handle: function() {
1667
- elementor.getPanelView().modeSwitcher.currentView.toggleMode();
1668
- }
1669
- }
1670
- };
1671
 
1672
- hotKeysHandlers[ keysDictionary.s ] = {
1673
- saveEditor: {
1674
- isWorthHandling: function( event ) {
1675
- return hotKeysManager.isControlEvent( event );
1676
- },
1677
- handle: function() {
1678
- elementor.getPanelView().getFooterView()._publishBuilder();
1679
- }
1680
- }
1681
- };
1682
 
1683
- _.each( hotKeysHandlers, function( handlers, keyCode ) {
1684
- _.each( handlers, function( handler, handlerName ) {
1685
- hotKeysManager.addHotKeyHandler( keyCode, handlerName, handler );
1686
- } );
1687
- } );
1688
 
1689
- hotKeysManager.bindListener( this.$window.add( elementorFrontend.getElements( '$window' ) ) );
1690
- },
1691
 
1692
- preventClicksInsideEditor: function() {
1693
- this.$previewContents.on( 'click', function( event ) {
1694
- var $target = Backbone.$( event.target ),
1695
- editMode = elementor.channels.dataEditMode.request( 'activeMode' ),
1696
- isClickInsideElementor = !! $target.closest( '#elementor' ).length,
1697
- isTargetInsideDocument = this.contains( $target[0] );
1698
 
1699
- if ( isClickInsideElementor && 'edit' === editMode || ! isTargetInsideDocument ) {
1700
- return;
1701
- }
1702
 
1703
- if ( $target.closest( 'a' ).length ) {
1704
- event.preventDefault();
1705
- }
1706
 
1707
- if ( ! isClickInsideElementor ) {
1708
- var panelView = elementor.getPanelView();
 
 
1709
 
1710
- if ( 'elements' !== panelView.getCurrentPageName() ) {
1711
- panelView.setPage( 'elements' );
1712
- }
1713
- }
1714
- } );
1715
  },
1716
 
1717
- onStart: function() {
1718
- this.$window = Backbone.$( window );
1719
-
1720
- NProgress.start();
1721
- NProgress.inc( 0.2 );
1722
 
1723
- this.config = ElementorConfig;
 
1724
 
1725
- Backbone.Radio.DEBUG = false;
1726
- Backbone.Radio.tuneIn( 'ELEMENTOR' );
 
1727
 
1728
- this.initComponents();
1729
 
1730
- this.channels.dataEditMode.reply( 'activeMode', 'edit' );
 
 
1731
 
1732
- this.listenTo( this.channels.dataEditMode, 'switch', this.onEditModeSwitched );
 
 
 
1733
 
1734
- this.setWorkSaver();
 
1735
 
1736
- this.initClearPageDialog();
 
 
1737
 
1738
- this.$window.trigger( 'elementor:init' );
 
1739
 
1740
- this.initPreview();
 
 
1741
 
1742
- this.logSite();
 
1743
  },
1744
 
1745
- onPreviewLoaded: function() {
1746
- NProgress.done();
1747
 
1748
- this.$previewContents = this.$preview.contents();
 
 
1749
 
1750
- var $previewElementorEl = this.$previewContents.find( '#elementor' );
1751
 
1752
- if ( ! $previewElementorEl.length ) {
1753
- this.onPreviewElNotFound();
1754
- return;
1755
- }
1756
 
1757
- this.initFrontend();
 
 
1758
 
1759
- this.initElements();
 
 
1760
 
1761
- this.initHotKeys();
 
1762
 
1763
- var iframeRegion = new Marionette.Region( {
1764
- // Make sure you get the DOM object out of the jQuery object
1765
- el: $previewElementorEl[0]
1766
- } );
 
1767
 
1768
- this.schemes.init();
 
 
 
 
1769
 
1770
- this.schemes.printSchemesStyle();
 
 
 
 
 
1771
 
1772
- this.preventClicksInsideEditor();
1773
 
1774
- var Preview = require( 'elementor-views/preview' ),
1775
- PanelLayoutView = require( 'elementor-layouts/panel/panel' );
 
1776
 
1777
- this.addRegions( {
1778
- sections: iframeRegion,
1779
- panel: '#elementor-panel'
1780
- } );
1781
 
1782
- this.getRegion( 'sections' ).show( new Preview( {
1783
- collection: this.elements
1784
- } ) );
 
 
1785
 
1786
- this.getRegion( 'panel' ).show( new PanelLayoutView() );
 
 
 
 
1787
 
1788
- this.$previewContents
1789
- .children() // <html>
1790
- .addClass( 'elementor-html' )
1791
- .children( 'body' )
1792
- .addClass( 'elementor-editor-active' );
1793
 
1794
- this.setResizablePanel();
 
 
 
1795
 
1796
- this.changeDeviceMode( this._defaultDeviceMode );
1797
 
1798
- Backbone.$( '#elementor-loading, #elementor-preview-loading' ).fadeOut( 600 );
 
 
1799
 
1800
- _.defer( function() {
1801
- elementorFrontend.getElements( 'window' ).jQuery.holdReady( false );
1802
- } );
1803
 
1804
- this.enqueueTypographyFonts();
1805
- //this.introduction.startOnLoadIntroduction(); // TEMP Removed
 
 
1806
 
1807
- this.onEditModeSwitched();
1808
 
1809
- this.trigger( 'preview:loaded' );
1810
- },
 
1811
 
1812
- onEditModeSwitched: function() {
1813
- var activeMode = this.channels.dataEditMode.request( 'activeMode' );
 
 
 
 
1814
 
1815
- if ( 'edit' === activeMode ) {
1816
- this.exitPreviewMode();
1817
- } else {
1818
- this.enterPreviewMode( 'preview' === activeMode );
1819
- }
1820
- },
1821
 
1822
- onPreviewElNotFound: function() {
1823
- var dialog = this.dialogsManager.createWidget( 'confirm', {
1824
- id: 'elementor-fatal-error-dialog',
1825
- headerMessage: elementor.translate( 'preview_el_not_found_header' ),
1826
- message: elementor.translate( 'preview_el_not_found_message' ),
1827
- position: {
1828
- my: 'center center',
1829
- at: 'center center'
1830
- },
1831
- strings: {
1832
- confirm: elementor.translate( 'learn_more' ),
1833
- cancel: elementor.translate( 'go_back' )
1834
- },
1835
- onConfirm: function() {
1836
- open( elementor.config.help_the_content_url, '_blank' );
1837
- },
1838
- onCancel: function() {
1839
- parent.history.go( -1 );
1840
- },
1841
- hideOnButtonClick: false
1842
- } );
1843
 
1844
- dialog.show();
 
 
 
 
 
 
1845
  },
1846
 
1847
- setFlagEditorChange: function( status ) {
1848
- elementor.channels.editor
1849
- .reply( 'status', status )
1850
- .trigger( 'status:change', status );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1851
  },
1852
 
1853
- isEditorChanged: function() {
1854
- return ( true === elementor.channels.editor.request( 'status' ) );
1855
- },
1856
 
1857
- setWorkSaver: function() {
1858
- this.$window.on( 'beforeunload', function() {
1859
- if ( elementor.isEditorChanged() ) {
1860
- return elementor.translate( 'before_unload_alert' );
1861
- }
1862
- } );
1863
  },
1864
 
1865
- setResizablePanel: function() {
1866
- var self = this,
1867
- side = elementor.config.is_rtl ? 'right' : 'left';
1868
 
1869
- self.panel.$el.resizable( {
1870
- handles: elementor.config.is_rtl ? 'w' : 'e',
1871
- minWidth: 200,
1872
- maxWidth: 680,
1873
- start: function() {
1874
- self.$previewWrapper
1875
- .addClass( 'ui-resizable-resizing' )
1876
- .css( 'pointer-events', 'none' );
1877
- },
1878
- stop: function() {
1879
- self.$previewWrapper
1880
- .removeClass( 'ui-resizable-resizing' )
1881
- .css( 'pointer-events', '' );
1882
 
1883
- elementor.channels.data.trigger( 'scrollbar:update' );
1884
- },
1885
- resize: function( event, ui ) {
1886
- self.$previewWrapper
1887
- .css( side, ui.size.width );
1888
  }
1889
- } );
1890
- },
1891
-
1892
- enterPreviewMode: function( hidePanel ) {
1893
- var $elements = this.$previewContents.find( 'body' );
1894
 
1895
- if ( hidePanel ) {
1896
- $elements = $elements.add( 'body' );
1897
  }
1898
 
1899
- $elements
1900
- .removeClass( 'elementor-editor-active' )
1901
- .addClass( 'elementor-editor-preview' );
1902
-
1903
- if ( hidePanel ) {
1904
- // Handle panel resize
1905
- this.$previewWrapper.css( elementor.config.is_rtl ? 'right' : 'left', '' );
1906
-
1907
- this.panel.$el.css( 'width', '' );
1908
  }
1909
- },
1910
 
1911
- exitPreviewMode: function() {
1912
- this.$previewContents
1913
- .find( 'body' )
1914
- .add( 'body' )
1915
- .removeClass( 'elementor-editor-preview' )
1916
- .addClass( 'elementor-editor-active' );
1917
  },
1918
 
1919
- changeEditMode: function( newMode ) {
1920
- var dataEditMode = elementor.channels.dataEditMode,
1921
- oldEditMode = dataEditMode.request( 'activeMode' );
1922
 
1923
- dataEditMode.reply( 'activeMode', newMode );
1924
-
1925
- if ( newMode !== oldEditMode ) {
1926
- dataEditMode.trigger( 'switch', newMode );
1927
  }
1928
- },
1929
-
1930
- saveEditor: function( options ) {
1931
- options = _.extend( {
1932
- status: 'draft',
1933
- onSuccess: null
1934
- }, options );
1935
-
1936
- var self = this,
1937
- newData = elementor.elements.toJSON( { removeDefault: true } );
1938
 
1939
- return this.ajax.send( 'save_builder', {
1940
- data: {
1941
- post_id: this.config.post_id,
1942
- status: options.status,
1943
- data: JSON.stringify( newData )
1944
- },
1945
- success: function( data ) {
1946
- self.setFlagEditorChange( false );
1947
-
1948
- self.config.data = newData;
1949
-
1950
- self.channels.editor.trigger( 'saved', data );
1951
 
1952
- if ( _.isFunction( options.onSuccess ) ) {
1953
- options.onSuccess.call( this, data );
1954
- }
1955
  }
1956
- } );
1957
- },
1958
 
1959
- reloadPreview: function() {
1960
- Backbone.$( '#elementor-preview-loading' ).show();
1961
 
1962
- this.$preview[0].contentWindow.location.reload( true );
1963
  },
1964
 
1965
- clearPage: function() {
1966
- this.getClearPageDialog().show();
1967
  },
1968
 
1969
- changeDeviceMode: function( newDeviceMode ) {
1970
- var oldDeviceMode = this.channels.deviceMode.request( 'currentMode' );
1971
-
1972
- if ( oldDeviceMode === newDeviceMode ) {
1973
- return;
1974
- }
1975
 
1976
- Backbone.$( 'body' )
1977
- .removeClass( 'elementor-device-' + oldDeviceMode )
1978
- .addClass( 'elementor-device-' + newDeviceMode );
1979
 
1980
- this.channels.deviceMode
1981
- .reply( 'previousMode', oldDeviceMode )
1982
- .reply( 'currentMode', newDeviceMode )
1983
- .trigger( 'change' );
1984
- },
1985
 
1986
- enqueueTypographyFonts: function() {
1987
- var self = this,
1988
- typographyScheme = this.schemes.getScheme( 'typography' );
1989
 
1990
- _.each( typographyScheme.items, function( item ) {
1991
- self.helpers.enqueueFont( item.value.font_family );
1992
- } );
1993
- },
1994
 
1995
- translate: function( stringKey, templateArgs, i18nStack ) {
1996
- if ( ! i18nStack ) {
1997
- i18nStack = this.config.i18n;
1998
- }
1999
 
2000
- var string = i18nStack[ stringKey ];
2001
 
2002
- if ( undefined === string ) {
2003
- string = stringKey;
2004
- }
2005
 
2006
- if ( templateArgs ) {
2007
- string = string.replace( /{(\d+)}/g, function( match, number ) {
2008
- return undefined !== templateArgs[ number ] ? templateArgs[ number ] : match;
2009
- } );
2010
- }
2011
 
2012
- return string;
2013
  },
2014
 
2015
- compareVersions: function( versionA, versionB, operator ) {
2016
- var prepareVersion = function( version ) {
2017
- version = version + '';
2018
-
2019
- return version.replace( /[^\d.]+/, '.-1.' );
2020
- };
2021
 
2022
- versionA = prepareVersion( versionA );
2023
- versionB = prepareVersion( versionB );
 
2024
 
2025
- if ( versionA === versionB ) {
2026
- return ! operator || /^={2,3}$/.test( operator );
 
2027
  }
2028
 
2029
- var versionAParts = versionA.split( '.' ).map( Number ),
2030
- versionBParts = versionB.split( '.' ).map( Number ),
2031
- longestVersionParts = Math.max( versionAParts.length, versionBParts.length );
2032
-
2033
- for ( var i = 0; i < longestVersionParts; i++ ) {
2034
- var valueA = versionAParts[ i ] || 0,
2035
- valueB = versionBParts[ i ] || 0;
2036
-
2037
- if ( valueA !== valueB ) {
2038
- return this.conditions.compare( valueA, valueB, operator );
2039
- }
2040
- }
2041
  },
2042
 
2043
- logSite: function() {
2044
- var text = '',
2045
- style = '';
2046
 
2047
- if ( -1 !== navigator.userAgent.search( 'Firefox' ) ) {
2048
- var asciiText = [
2049
- ' ;;;;;;;;;;;;;;; ',
2050
- ';;; ;; ;;;',
2051
- ';;; ;;;;;;;;;;;;',
2052
- ';;; ;;;;;;;;;;;;',
2053
- ';;; ;; ;;;',
2054
- ';;; ;;;;;;;;;;;;',
2055
- ';;; ;;;;;;;;;;;;',
2056
- ';;; ;; ;;;',
2057
- ' ;;;;;;;;;;;;;;; '
2058
- ];
2059
 
2060
- text += '%c' + asciiText.join( '\n' ) + '\n';
2061
 
2062
- style = 'color: #C42961';
2063
- } else {
2064
- text += '%c00';
2065
 
2066
- style = 'line-height: 1.6; font-size: 20px; background-image: url("' + elementor.config.assets_url + 'images/logo-icon.png"); color: transparent; background-repeat: no-repeat; background-size: cover';
 
 
 
2067
  }
2068
 
2069
- text += '%c\nLove using Elementor? Join our growing community of Elementor developers: %chttps://github.com/pojome/elementor';
2070
 
2071
- setTimeout( console.log.bind( console, text, style, 'color: #9B0A46', '' ) );
2072
- }
2073
- } );
2074
 
2075
- module.exports = ( window.elementor = new App() ).start();
 
2076
 
2077
- },{"elementor-editor-utils/ajax":62,"elementor-editor-utils/conditions":63,"elementor-editor-utils/debug":65,"elementor-editor-utils/heartbeat":66,"elementor-editor-utils/helpers":67,"elementor-editor-utils/images-manager":68,"elementor-editor-utils/introduction":69,"elementor-editor-utils/presets-factory":72,"elementor-editor-utils/schemes":73,"elementor-editor/settings/settings":61,"elementor-layouts/panel/panel":51,"elementor-models/element":54,"elementor-panel/pages/elements/views/elements":38,"elementor-panel/pages/menu/menu":41,"elementor-templates/manager":8,"elementor-utils/hooks":114,"elementor-utils/hot-keys":115,"elementor-views/controls/base":86,"elementor-views/controls/base-multiple":84,"elementor-views/controls/box-shadow":87,"elementor-views/controls/choose":88,"elementor-views/controls/code":89,"elementor-views/controls/color":90,"elementor-views/controls/date-time":91,"elementor-views/controls/dimensions":92,"elementor-views/controls/font":93,"elementor-views/controls/gallery":94,"elementor-views/controls/icon":95,"elementor-views/controls/image-dimensions":96,"elementor-views/controls/media":97,"elementor-views/controls/number":98,"elementor-views/controls/order":99,"elementor-views/controls/repeater":101,"elementor-views/controls/section":102,"elementor-views/controls/select2":103,"elementor-views/controls/slider":104,"elementor-views/controls/structure":105,"elementor-views/controls/switcher":106,"elementor-views/controls/tab":107,"elementor-views/controls/wp_widget":108,"elementor-views/controls/wysiwyg":109,"elementor-views/preview":111,"elementor-views/widget":113,"modules/history/assets/js/module":125}],27:[function(require,module,exports){
2078
- var EditModeItemView;
2079
 
2080
- EditModeItemView = Marionette.ItemView.extend( {
2081
- template: '#tmpl-elementor-mode-switcher-content',
2082
 
2083
- id: 'elementor-mode-switcher-inner',
2084
 
2085
- ui: {
2086
- previewButton: '#elementor-mode-switcher-preview-input',
2087
- previewLabel: '#elementor-mode-switcher-preview',
2088
- previewLabelA11y: '#elementor-mode-switcher-preview .elementor-screen-only'
2089
- },
2090
 
2091
- events: {
2092
- 'change @ui.previewButton': 'onPreviewButtonChange'
2093
  },
2094
 
2095
- initialize: function() {
2096
- this.listenTo( elementor.channels.dataEditMode, 'switch', this.onEditModeChanged );
2097
- },
2098
 
2099
- getCurrentMode: function() {
2100
- return this.ui.previewButton.is( ':checked' ) ? 'preview' : 'edit';
2101
- },
 
2102
 
2103
- setMode: function( mode ) {
2104
- this.ui.previewButton
2105
- .prop( 'checked', 'preview' === mode )
2106
- .trigger( 'change' );
2107
- },
 
 
 
 
 
 
 
 
 
 
 
2108
 
2109
- toggleMode: function() {
2110
- this.setMode( this.ui.previewButton.prop( 'checked' ) ? 'edit' : 'preview' );
2111
  },
2112
 
2113
- onRender: function() {
2114
- this.onEditModeChanged();
2115
- },
 
 
 
 
 
 
2116
 
2117
- onPreviewButtonChange: function() {
2118
- elementor.changeEditMode( this.getCurrentMode() );
2119
- },
2120
 
2121
- onEditModeChanged: function() {
2122
- var activeMode = elementor.channels.dataEditMode.request( 'activeMode' ),
2123
- title = elementor.translate( 'preview' === activeMode ? 'back_to_editor' : 'preview' );
 
 
2124
 
2125
- this.ui.previewLabel.attr( 'title', title );
2126
- this.ui.previewLabelA11y.text( title );
2127
- }
2128
- } );
2129
-
2130
- module.exports = EditModeItemView;
2131
-
2132
- },{}],28:[function(require,module,exports){
2133
- var PanelFooterItemView;
2134
-
2135
- PanelFooterItemView = Marionette.ItemView.extend( {
2136
- template: '#tmpl-elementor-panel-footer-content',
2137
-
2138
- tagName: 'nav',
2139
-
2140
- id: 'elementor-panel-footer-tools',
2141
-
2142
- possibleRotateModes: [ 'portrait', 'landscape' ],
2143
-
2144
- ui: {
2145
- menuButtons: '.elementor-panel-footer-tool',
2146
- deviceModeIcon: '#elementor-panel-footer-responsive > i',
2147
- deviceModeButtons: '#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item',
2148
- buttonSave: '#elementor-panel-footer-save',
2149
- buttonSaveButton: '#elementor-panel-footer-save .elementor-button',
2150
- buttonPublish: '#elementor-panel-footer-publish',
2151
- watchTutorial: '#elementor-panel-footer-watch-tutorial',
2152
- showTemplates: '#elementor-panel-footer-templates-modal',
2153
- saveTemplate: '#elementor-panel-footer-save-template',
2154
- history: '#elementor-panel-footer-history'
2155
- },
2156
 
2157
- events: {
2158
- 'click @ui.deviceModeButtons': 'onClickResponsiveButtons',
2159
- 'click @ui.buttonSave': 'onClickButtonSave',
2160
- 'click @ui.buttonPublish': 'onClickButtonPublish',
2161
- 'click @ui.watchTutorial': 'onClickWatchTutorial',
2162
- 'click @ui.showTemplates': 'onClickShowTemplates',
2163
- 'click @ui.saveTemplate': 'onClickSaveTemplate',
2164
- 'click @ui.history': 'onClickHistory'
2165
- },
2166
 
2167
- initialize: function() {
2168
- this._initDialog();
 
2169
 
2170
- this.listenTo( elementor.channels.editor, 'status:change', this.onEditorChanged )
2171
- .listenTo( elementor.channels.deviceMode, 'change', this.onDeviceModeChange );
2172
- },
 
2173
 
2174
- _initDialog: function() {
2175
- var dialog;
 
 
 
 
 
 
 
 
2176
 
2177
- this.getDialog = function() {
2178
- if ( ! dialog ) {
2179
- var $ = Backbone.$,
2180
- $dialogMessage = $( '<div>', {
2181
- 'class': 'elementor-dialog-message'
2182
- } ),
2183
- $messageIcon = $( '<i>', {
2184
- 'class': 'fa fa-check-circle'
2185
- } ),
2186
- $messageText = $( '<div>', {
2187
- 'class': 'elementor-dialog-message-text'
2188
- } ).text( elementor.translate( 'saved' ) );
2189
 
2190
- $dialogMessage.append( $messageIcon, $messageText );
2191
 
2192
- dialog = elementor.dialogsManager.createWidget( 'simple', {
2193
- id: 'elementor-saved-popup',
2194
- position: {
2195
- element: 'message',
2196
- of: 'widget'
2197
- },
2198
- hide: {
2199
- auto: true,
2200
- autoDelay: 1500
2201
  }
2202
- } );
2203
 
2204
- dialog.setMessage( $dialogMessage );
 
2205
  }
 
2206
 
2207
- return dialog;
 
 
 
 
 
 
 
 
2208
  };
2209
- },
2210
 
2211
- _publishBuilder: function() {
2212
- var self = this;
 
 
 
 
 
 
 
 
2213
 
2214
- var options = {
2215
- status: 'publish',
2216
- onSuccess: function() {
2217
- self.getDialog().show();
 
2218
 
2219
- self.ui.buttonSaveButton.removeClass( 'elementor-button-state' );
 
2220
 
2221
- NProgress.done();
 
 
 
 
 
 
 
 
2222
  }
2223
- };
2224
 
2225
- self.ui.buttonSaveButton.addClass( 'elementor-button-state' );
 
 
2226
 
2227
- NProgress.start();
 
2228
 
2229
- elementor.saveEditor( options );
 
 
 
 
2230
  },
2231
 
2232
- _saveBuilderDraft: function() {
2233
- elementor.saveEditor();
2234
- },
2235
 
2236
- getDeviceModeButton: function( deviceMode ) {
2237
- return this.ui.deviceModeButtons.filter( '[data-device-mode="' + deviceMode + '"]' );
2238
- },
2239
 
2240
- onPanelClick: function( event ) {
2241
- var $target = Backbone.$( event.target ),
2242
- isClickInsideOfTool = $target.closest( '.elementor-panel-footer-sub-menu-wrapper' ).length;
2243
 
2244
- if ( isClickInsideOfTool ) {
2245
- return;
2246
- }
2247
 
2248
- var $tool = $target.closest( '.elementor-panel-footer-tool' ),
2249
- isClosedTool = $tool.length && ! $tool.hasClass( 'elementor-open' );
2250
 
2251
- this.ui.menuButtons.filter( ':not(.elementor-leave-open)' ).removeClass( 'elementor-open' );
2252
 
2253
- if ( isClosedTool ) {
2254
- $tool.addClass( 'elementor-open' );
2255
- }
2256
- },
2257
 
2258
- onEditorChanged: function() {
2259
- this.ui.buttonSave.toggleClass( 'elementor-save-active', elementor.isEditorChanged() );
2260
- },
2261
 
2262
- onDeviceModeChange: function() {
2263
- var previousDeviceMode = elementor.channels.deviceMode.request( 'previousMode' ),
2264
- currentDeviceMode = elementor.channels.deviceMode.request( 'currentMode' );
2265
 
2266
- this.getDeviceModeButton( previousDeviceMode ).removeClass( 'active' );
2267
 
2268
- this.getDeviceModeButton( currentDeviceMode ).addClass( 'active' );
2269
 
2270
- // Change the footer icon
2271
- this.ui.deviceModeIcon.removeClass( 'eicon-device-' + previousDeviceMode ).addClass( 'eicon-device-' + currentDeviceMode );
2272
  },
2273
 
2274
- onClickButtonSave: function() {
2275
- //this._saveBuilderDraft();
2276
- this._publishBuilder();
2277
- },
2278
 
2279
- onClickButtonPublish: function( event ) {
2280
- // Prevent click on save button
2281
- event.stopPropagation();
2282
 
2283
- this._publishBuilder();
2284
- },
2285
 
2286
- onClickResponsiveButtons: function( event ) {
2287
- var $clickedButton = this.$( event.currentTarget ),
2288
- newDeviceMode = $clickedButton.data( 'device-mode' );
 
2289
 
2290
- elementor.changeDeviceMode( newDeviceMode );
2291
- },
2292
 
2293
- onClickWatchTutorial: function() {
2294
- elementor.introduction.startIntroduction();
2295
- },
2296
 
2297
- onClickShowTemplates: function() {
2298
- elementor.templates.showTemplatesModal();
2299
- },
2300
 
2301
- onClickSaveTemplate: function() {
2302
- elementor.templates.startModal( {
2303
- onReady: function() {
2304
- elementor.templates.getLayout().showSaveTemplateView();
2305
- }
2306
  } );
2307
- },
2308
 
2309
- onClickHistory: function() {
2310
- if ( 'historyPage' !== elementor.getPanelView().getCurrentPageName() ) {
2311
- elementor.getPanelView().setPage( 'historyPage' );
2312
- }
2313
- },
2314
 
2315
- onRender: function() {
2316
- var self = this;
2317
 
2318
- _.defer( function() {
2319
- elementor.getPanelView().$el.on( 'click', _.bind( self.onPanelClick, self ) );
2320
- } );
2321
- }
2322
- } );
2323
 
2324
- module.exports = PanelFooterItemView;
 
2325
 
2326
- },{}],29:[function(require,module,exports){
2327
- var PanelHeaderItemView;
 
 
2328
 
2329
- PanelHeaderItemView = Marionette.ItemView.extend( {
2330
- template: '#tmpl-elementor-panel-header',
 
2331
 
2332
- id: 'elementor-panel-header',
2333
 
2334
- ui: {
2335
- menuButton: '#elementor-panel-header-menu-button',
2336
- title: '#elementor-panel-header-title',
2337
- addButton: '#elementor-panel-header-add-button'
2338
- },
2339
 
2340
- events: {
2341
- 'click @ui.addButton': 'onClickAdd',
2342
- 'click @ui.menuButton': 'onClickMenu'
2343
- },
2344
 
2345
- setTitle: function( title ) {
2346
- this.ui.title.html( title );
2347
- },
2348
 
2349
- onClickAdd: function() {
2350
- elementor.getPanelView().setPage( 'elements' );
2351
- },
2352
 
2353
- onClickMenu: function() {
2354
- var panel = elementor.getPanelView(),
2355
- currentPanelPageName = panel.getCurrentPageName(),
2356
- nextPage = 'menu' === currentPanelPageName ? 'elements' : 'menu';
2357
 
2358
- panel.setPage( nextPage );
2359
- }
2360
- } );
2361
 
2362
- module.exports = PanelHeaderItemView;
2363
 
2364
- },{}],30:[function(require,module,exports){
2365
- var ControlsStack = require( 'elementor-views/controls-stack' ),
2366
- EditorView;
2367
 
2368
- EditorView = ControlsStack.extend( {
2369
- template: Marionette.TemplateCache.get( '#tmpl-editor-content' ),
2370
 
2371
- id: 'elementor-panel-page-editor',
 
 
 
 
 
2372
 
2373
- childViewContainer: '#elementor-controls',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2374
 
2375
- childViewOptions: function() {
2376
- return {
2377
- elementSettingsModel: this.model.get( 'settings' ),
2378
- elementEditSettings: this.model.get( 'editSettings' )
2379
- };
2380
  },
2381
 
2382
- openActiveSection: function() {
2383
- ControlsStack.prototype.openActiveSection.apply( this, arguments );
2384
-
2385
- elementor.channels.editor.trigger( 'section:activated', this.activeSection, this );
2386
  },
2387
 
2388
- isVisibleSectionControl: function( sectionControlModel ) {
2389
- return ControlsStack.prototype.isVisibleSectionControl.apply( this, arguments ) && elementor.helpers.isActiveControl( sectionControlModel, this.model.get( 'settings' ).attributes );
2390
  },
2391
 
2392
- scrollToEditedElement: function() {
2393
- elementor.helpers.scrollToView( this.getOption( 'editedElementView' ) );
 
 
 
 
2394
  },
2395
 
2396
- onBeforeRender: function() {
2397
- var controls = elementor.getElementControls( this.model );
 
2398
 
2399
- if ( ! controls ) {
2400
- throw new Error( 'Editor controls not found' );
2401
- }
 
 
 
 
 
 
 
 
 
 
2402
 
2403
- // Create new instance of that collection
2404
- this.collection = new Backbone.Collection( _.values( controls ) );
 
 
 
 
 
2405
  },
2406
 
2407
- onDestroy: function() {
2408
- var editedElementView = this.getOption( 'editedElementView' );
2409
 
2410
- if ( editedElementView ) {
2411
- editedElementView.$el.removeClass( 'elementor-element-editable' );
2412
  }
2413
 
2414
- this.model.trigger( 'editor:close' );
2415
-
2416
- this.triggerMethod( 'editor:destroy' );
2417
- },
2418
 
2419
- onRender: function() {
2420
- var editedElementView = this.getOption( 'editedElementView' );
 
2421
 
2422
- if ( editedElementView ) {
2423
- editedElementView.$el.addClass( 'elementor-element-editable' );
2424
  }
2425
  },
2426
 
2427
- onDeviceModeChange: function() {
2428
- ControlsStack.prototype.onDeviceModeChange.apply( this, arguments );
2429
-
2430
- this.scrollToEditedElement();
 
 
2431
  },
2432
 
2433
- onChildviewSettingsChange: function( childView ) {
2434
- var editedElementView = this.getOption( 'editedElementView' ),
2435
- editedElementType = editedElementView.model.get( 'elType' );
2436
 
2437
- if ( 'widget' === editedElementType ) {
2438
- editedElementType = editedElementView.model.get( 'widgetType' );
 
 
2439
  }
 
2440
 
2441
- elementor.channels.editor
2442
- .trigger( 'change', childView, editedElementView )
2443
- .trigger( 'change:' + editedElementType, childView, editedElementView )
2444
- .trigger( 'change:' + editedElementType + ':' + childView.model.get( 'name' ), childView, editedElementView );
2445
- }
2446
- } );
2447
 
2448
- module.exports = EditorView;
 
2449
 
2450
- },{"elementor-views/controls-stack":83}],31:[function(require,module,exports){
2451
- var PanelElementsCategory = require( '../models/element' ),
2452
- PanelElementsCategoriesCollection;
 
 
 
 
 
2453
 
2454
- PanelElementsCategoriesCollection = Backbone.Collection.extend( {
2455
- model: PanelElementsCategory
2456
- } );
2457
 
2458
- module.exports = PanelElementsCategoriesCollection;
2459
 
2460
- },{"../models/element":34}],32:[function(require,module,exports){
2461
- var PanelElementsElementModel = require( '../models/element' ),
2462
- PanelElementsElementsCollection;
 
 
 
2463
 
2464
- PanelElementsElementsCollection = Backbone.Collection.extend( {
2465
- model: PanelElementsElementModel/*,
2466
- comparator: 'title'*/
2467
- } );
2468
 
2469
- module.exports = PanelElementsElementsCollection;
 
2470
 
2471
- },{"../models/element":34}],33:[function(require,module,exports){
2472
- var PanelElementsCategoriesCollection = require( './collections/categories' ),
2473
- PanelElementsElementsCollection = require( './collections/elements' ),
2474
- PanelElementsCategoriesView = require( './views/categories' ),
2475
- PanelElementsElementsView = elementor.modules.templateLibrary.ElementsCollectionView,
2476
- PanelElementsSearchView = require( './views/search' ),
2477
- PanelElementsGlobalView = require( './views/global' ),
2478
- PanelElementsLayoutView;
2479
 
2480
- PanelElementsLayoutView = Marionette.LayoutView.extend( {
2481
- template: '#tmpl-elementor-panel-elements',
2482
 
2483
- regions: {
2484
- elements: '#elementor-panel-elements-wrapper',
2485
- search: '#elementor-panel-elements-search-area'
2486
- },
2487
 
2488
- ui: {
2489
- tabs: '.elementor-panel-navigation-tab'
2490
- },
2491
 
2492
- events: {
2493
- 'click @ui.tabs': 'onTabClick'
 
 
2494
  },
2495
 
2496
- regionViews: {},
 
 
2497
 
2498
- elementsCollection: null,
 
 
 
2499
 
2500
- categoriesCollection: null,
 
 
 
2501
 
2502
- initialize: function() {
2503
- this.listenTo( elementor.channels.panelElements, 'element:selected', this.destroy );
2504
 
2505
- this.initElementsCollection();
 
 
2506
 
2507
- this.initCategoriesCollection();
 
 
 
 
2508
 
2509
- this.initRegionViews();
2510
  },
2511
 
2512
- initRegionViews: function() {
2513
- var regionViews = {
2514
- elements: {
2515
- region: this.elements,
2516
- view: PanelElementsElementsView,
2517
- options: { collection: this.elementsCollection }
2518
- },
2519
- categories: {
2520
- region: this.elements,
2521
- view: PanelElementsCategoriesView,
2522
- options: { collection: this.categoriesCollection }
2523
- },
2524
- search: {
2525
- region: this.search,
2526
- view: PanelElementsSearchView
2527
- },
2528
- global: {
2529
- region: this.elements,
2530
- view: PanelElementsGlobalView
2531
- }
2532
  };
2533
 
2534
- this.regionViews = elementor.hooks.applyFilters( 'panel/elements/regionViews', regionViews );
2535
- },
2536
 
2537
- initElementsCollection: function() {
2538
- var elementsCollection = new PanelElementsElementsCollection(),
2539
- sectionConfig = elementor.config.elements.section;
2540
 
2541
- elementsCollection.add( {
2542
- title: elementor.translate( 'inner_section' ),
2543
- elType: 'section',
2544
- categories: [ 'basic' ],
2545
- icon: sectionConfig.icon
2546
- } );
2547
 
2548
- // TODO: Change the array from server syntax, and no need each loop for initialize
2549
- _.each( elementor.config.widgets, function( element ) {
2550
- elementsCollection.add( {
2551
- title: element.title,
2552
- elType: element.elType,
2553
- categories: element.categories,
2554
- keywords: element.keywords,
2555
- icon: element.icon,
2556
- widgetType: element.widget_type,
2557
- custom: element.custom
2558
- } );
2559
- } );
2560
 
2561
- this.elementsCollection = elementsCollection;
 
 
 
2562
  },
2563
 
2564
- initCategoriesCollection: function() {
2565
- var categories = {};
 
2566
 
2567
- this.elementsCollection.each( function( element ) {
2568
- _.each( element.get( 'categories' ), function( category ) {
2569
- if ( ! categories[ category ] ) {
2570
- categories[ category ] = [];
2571
- }
 
 
 
 
 
 
 
2572
 
2573
- categories[ category ].push( element );
2574
- } );
2575
- } );
2576
 
2577
- var categoriesCollection = new PanelElementsCategoriesCollection();
 
 
2578
 
2579
- _.each( elementor.config.elements_categories, function( categoryConfig, categoryName ) {
2580
- if ( ! categories[ categoryName ] ) {
2581
- return;
2582
- }
2583
 
2584
- categoriesCollection.add( {
2585
- name: categoryName,
2586
- title: categoryConfig.title,
2587
- icon: categoryConfig.icon,
2588
- items: categories[ categoryName ]
2589
- } );
2590
- } );
2591
 
2592
- this.categoriesCollection = categoriesCollection;
2593
- },
 
2594
 
2595
- activateTab: function( tabName ) {
2596
- this.ui.tabs
2597
- .removeClass( 'active' )
2598
- .filter( '[data-view="' + tabName + '"]' )
2599
- .addClass( 'active' );
2600
 
2601
- this.showView( tabName );
2602
- },
2603
 
2604
- showView: function( viewName ) {
2605
- var viewDetails = this.regionViews[ viewName ],
2606
- options = viewDetails.options || {};
2607
 
2608
- viewDetails.region.show( new viewDetails.view( options ) );
2609
- },
2610
 
2611
- clearSearchInput: function() {
2612
- this.getChildView( 'search' ).clearInput();
 
 
2613
  },
2614
 
2615
- changeFilter: function( filterValue ) {
2616
- elementor.channels.panelElements
2617
- .reply( 'filter:value', filterValue )
2618
- .trigger( 'filter:change' );
2619
  },
2620
 
2621
- clearFilters: function() {
2622
- this.changeFilter( null );
2623
- this.clearSearchInput();
2624
  },
2625
 
2626
- onChildviewChildrenRender: function() {
2627
- this.updateElementsScrollbar();
2628
  },
2629
 
2630
- onChildviewSearchChangeInput: function( child ) {
2631
- this.changeFilter( child.ui.input.val(), 'search' );
 
 
2632
  },
2633
 
2634
- onDestroy: function() {
2635
- elementor.channels.panelElements.reply( 'filter:value', null );
2636
  },
2637
 
2638
- onShow: function() {
2639
- this.showView( 'categories' );
2640
-
2641
- this.showView( 'search' );
2642
  },
2643
 
2644
- onTabClick: function( event ) {
2645
- this.activateTab( event.currentTarget.dataset.view );
2646
  },
2647
 
2648
- updateElementsScrollbar: function() {
2649
- elementor.channels.data.trigger( 'scrollbar:update' );
2650
- }
2651
- } );
2652
-
2653
- module.exports = PanelElementsLayoutView;
2654
-
2655
- },{"./collections/categories":31,"./collections/elements":32,"./views/categories":35,"./views/global":39,"./views/search":40}],34:[function(require,module,exports){
2656
- var PanelElementsElementModel;
2657
 
2658
- PanelElementsElementModel = Backbone.Model.extend( {
2659
- defaults: {
2660
- title: '',
2661
- categories: [],
2662
- keywords: [],
2663
- icon: '',
2664
- elType: 'widget',
2665
- widgetType: ''
2666
  }
2667
  } );
2668
 
2669
- module.exports = PanelElementsElementModel;
2670
 
2671
- },{}],35:[function(require,module,exports){
2672
- var PanelElementsCategoryView = require( './category' ),
2673
- PanelElementsCategoriesView;
2674
 
2675
- PanelElementsCategoriesView = Marionette.CompositeView.extend( {
2676
- template: '#tmpl-elementor-panel-categories',
2677
 
2678
- childView: PanelElementsCategoryView,
2679
 
2680
- childViewContainer: '#elementor-panel-categories',
2681
 
2682
- id: 'elementor-panel-elements-categories',
2683
 
2684
- initialize: function() {
2685
- this.listenTo( elementor.channels.panelElements, 'filter:change', this.onPanelElementsFilterChange );
 
 
 
 
 
 
 
 
2686
  },
2687
 
2688
- onPanelElementsFilterChange: function() {
2689
- elementor.getPanelView().getCurrentPageView().showView( 'elements' );
2690
- }
2691
- } );
2692
-
2693
- module.exports = PanelElementsCategoriesView;
2694
-
2695
- },{"./category":36}],36:[function(require,module,exports){
2696
- var PanelElementsElementsCollection = require( '../collections/elements' ),
2697
- PanelElementsCategoryView;
2698
-
2699
- PanelElementsCategoryView = Marionette.CompositeView.extend( {
2700
- template: '#tmpl-elementor-panel-elements-category',
2701
 
2702
- className: 'elementor-panel-category',
 
2703
 
2704
- childView: require( 'elementor-panel/pages/elements/views/element' ),
 
 
2705
 
2706
- childViewContainer: '.panel-elements-category-items',
 
2707
 
2708
- initialize: function() {
2709
- this.collection = new PanelElementsElementsCollection( this.model.get( 'items' ) );
2710
- }
2711
- } );
 
 
 
 
 
 
 
 
2712
 
2713
- module.exports = PanelElementsCategoryView;
2714
 
2715
- },{"../collections/elements":32,"elementor-panel/pages/elements/views/element":37}],37:[function(require,module,exports){
2716
- var PanelElementsElementView;
 
 
 
 
 
 
 
 
 
2717
 
2718
- PanelElementsElementView = Marionette.ItemView.extend( {
2719
- template: '#tmpl-elementor-element-library-element',
2720
 
2721
- className: 'elementor-element-wrapper',
 
 
2722
 
2723
- onRender: function() {
2724
  var self = this;
2725
 
2726
- this.$el.html5Draggable( {
2727
-
2728
- onDragStart: function() {
2729
- elementor.channels.panelElements
2730
- .reply( 'element:selected', self )
2731
- .trigger( 'element:drag:start' );
2732
- },
2733
 
2734
- onDragEnd: function() {
2735
- elementor.channels.panelElements.trigger( 'element:drag:end' );
2736
- },
2737
 
2738
- groups: [ 'elementor-element' ]
2739
- } );
2740
- }
2741
- } );
2742
 
2743
- module.exports = PanelElementsElementView;
2744
 
2745
- },{}],38:[function(require,module,exports){
2746
- var PanelElementsElementsView;
2747
 
2748
- PanelElementsElementsView = Marionette.CollectionView.extend( {
2749
- childView: require( 'elementor-panel/pages/elements/views/element' ),
2750
 
2751
- id: 'elementor-panel-elements',
 
 
2752
 
2753
- initialize: function() {
2754
- this.listenTo( elementor.channels.panelElements, 'filter:change', this.onFilterChanged );
2755
  },
2756
 
2757
- filter: function( childModel ) {
2758
- var filterValue = elementor.channels.panelElements.request( 'filter:value' );
 
2759
 
2760
- if ( ! filterValue ) {
2761
- return true;
2762
  }
2763
 
2764
- if ( -1 !== childModel.get( 'title' ).toLowerCase().indexOf( filterValue.toLowerCase() ) ) {
2765
- return true;
 
 
 
 
 
2766
  }
 
2767
 
2768
- return _.any( childModel.get( 'keywords' ), function( keyword ) {
2769
- return ( -1 !== keyword.toLowerCase().indexOf( filterValue.toLowerCase() ) );
2770
- } );
2771
  },
2772
 
2773
- onFilterChanged: function() {
2774
- var filterValue = elementor.channels.panelElements.request( 'filter:value' );
 
2775
 
2776
- if ( ! filterValue ) {
2777
- this.onFilterEmpty();
2778
- }
2779
 
2780
- this._renderChildren();
2781
 
2782
- this.triggerMethod( 'children:render' );
 
2783
  },
2784
 
2785
- onFilterEmpty: function() {
2786
- elementor.getPanelView().getCurrentPageView().showView( 'categories' );
2787
- }
2788
- } );
2789
 
2790
- module.exports = PanelElementsElementsView;
 
 
2791
 
2792
- },{"elementor-panel/pages/elements/views/element":37}],39:[function(require,module,exports){
2793
- module.exports = Marionette.ItemView.extend( {
2794
- template: '#tmpl-elementor-panel-global',
2795
 
2796
- id: 'elementor-panel-global',
 
 
2797
 
2798
- initialize: function() {
2799
- elementor.getPanelView().getCurrentPageView().search.reset();
2800
  },
2801
 
2802
- onDestroy: function() {
2803
- elementor.getPanelView().getCurrentPageView().showView( 'search' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2804
  }
2805
  } );
2806
 
2807
- },{}],40:[function(require,module,exports){
2808
- var PanelElementsSearchView;
2809
 
2810
- PanelElementsSearchView = Marionette.ItemView.extend( {
2811
- template: '#tmpl-elementor-panel-element-search',
2812
 
2813
- id: 'elementor-panel-elements-search-wrapper',
 
 
 
2814
 
2815
  ui: {
2816
- input: 'input'
 
 
2817
  },
2818
 
2819
  events: {
2820
- 'keyup @ui.input': 'onInputChanged'
 
2821
  },
2822
 
2823
- onInputChanged: function( event ) {
2824
- var ESC_KEY = 27;
2825
-
2826
- if ( ESC_KEY === event.keyCode ) {
2827
- this.clearInput();
2828
- }
2829
 
2830
- this.triggerMethod( 'search:change:input' );
 
2831
  },
2832
 
2833
- clearInput: function() {
2834
- this.ui.input.val( '' );
 
 
 
 
2835
  }
2836
  } );
2837
 
2838
- module.exports = PanelElementsSearchView;
2839
 
2840
- },{}],41:[function(require,module,exports){
2841
- var PanelMenuItemView = require( 'elementor-panel/pages/menu/views/item' ),
2842
- PanelMenuPageView;
2843
 
2844
- PanelMenuPageView = Marionette.CollectionView.extend( {
2845
- id: 'elementor-panel-page-menu',
2846
 
2847
- childView: PanelMenuItemView,
2848
 
2849
- initialize: function() {
2850
- this.collection = PanelMenuPageView.getItems();
2851
- },
2852
-
2853
- onChildviewClick: function( childView ) {
2854
- var menuItemType = childView.model.get( 'type' );
2855
-
2856
- switch ( menuItemType ) {
2857
- case 'page':
2858
- var pageName = childView.model.get( 'pageName' ),
2859
- pageTitle = childView.model.get( 'title' );
2860
 
2861
- elementor.getPanelView().setPage( pageName, pageTitle );
2862
- break;
 
 
 
 
2863
 
2864
- case 'link':
2865
- var link = childView.model.get( 'link' ),
2866
- isNewTab = childView.model.get( 'newTab' );
2867
 
2868
- if ( isNewTab ) {
2869
- open( link, '_blank' );
2870
- } else {
2871
- location.href = childView.model.get( 'link' );
2872
- }
2873
 
2874
- break;
 
 
2875
 
2876
- default:
2877
- var callback = childView.model.get( 'callback' );
2878
 
2879
- if ( _.isFunction( callback ) ) {
2880
- callback.call( childView );
2881
- }
2882
  }
2883
- }
2884
- }, {
2885
- items: null,
2886
 
2887
- initItems: function() {
2888
- this.items = new Backbone.Collection( [
2889
- {
2890
- name: 'global-colors',
2891
- icon: 'fa fa-paint-brush',
2892
- title: elementor.translate( 'global_colors' ),
2893
- type: 'page',
2894
- pageName: 'colorScheme'
2895
- },
2896
- {
2897
- name: 'global-fonts',
2898
- icon: 'fa fa-font',
2899
- title: elementor.translate( 'global_fonts' ),
2900
- type: 'page',
2901
- pageName: 'typographyScheme'
2902
- },
2903
- {
2904
- name: 'color-picker',
2905
- icon: 'fa fa-eyedropper',
2906
- title: elementor.translate( 'color_picker' ),
2907
- type: 'page',
2908
- pageName: 'colorPickerScheme'
2909
- },
2910
- {
2911
- name: 'clear-page',
2912
- icon: 'fa fa-eraser',
2913
- title: elementor.translate( 'clear_page' ),
2914
- callback: function() {
2915
- elementor.clearPage();
2916
- }
2917
- },
2918
- {
2919
- name: 'elementor-settings',
2920
- icon: 'eicon-elementor',
2921
- title: elementor.translate( 'elementor_settings' ),
2922
- type: 'link',
2923
- link: elementor.config.settings_page_link,
2924
- newTab: true
2925
- },
2926
- {
2927
- name: 'about-elementor',
2928
- icon: 'fa fa-info-circle',
2929
- title: elementor.translate( 'about_elementor' ),
2930
- type: 'link',
2931
- link: elementor.config.elementor_site,
2932
- newTab: true
2933
- }
2934
- ] );
2935
  },
2936
 
2937
- getItems: function() {
2938
- if ( ! this.items ) {
2939
- this.initItems();
 
 
2940
  }
2941
 
2942
- return this.items;
2943
- },
2944
 
2945
- addItem: function( itemData, before ) {
2946
- var items = this.getItems(),
2947
- options = {};
2948
 
2949
- if ( before ) {
2950
- var beforeItem = items.findWhere( { name: before } );
2951
 
2952
- if ( beforeItem ) {
2953
- options.at = items.indexOf( beforeItem );
2954
- }
2955
  }
 
2956
 
2957
- items.add( itemData, options );
2958
- }
2959
- } );
2960
 
2961
- module.exports = PanelMenuPageView;
2962
 
2963
- },{"elementor-panel/pages/menu/views/item":42}],42:[function(require,module,exports){
2964
- var PanelMenuItemView;
 
 
 
 
 
2965
 
2966
- PanelMenuItemView = Marionette.ItemView.extend( {
2967
- template: '#tmpl-elementor-panel-menu-item',
 
2968
 
2969
- className: 'elementor-panel-menu-item',
 
 
2970
 
2971
- triggers: {
2972
- click: 'click'
 
 
2973
  }
2974
  } );
2975
 
2976
- module.exports = PanelMenuItemView;
2977
 
2978
- },{}],43:[function(require,module,exports){
2979
- var childViewTypes = {
2980
- color: require( 'elementor-panel/pages/schemes/items/color' ),
2981
- typography: require( 'elementor-panel/pages/schemes/items/typography' )
2982
- },
2983
- PanelSchemeBaseView;
2984
 
2985
- PanelSchemeBaseView = Marionette.CompositeView.extend( {
2986
- id: function() {
2987
- return 'elementor-panel-scheme-' + this.getType();
2988
- },
2989
 
2990
- className: function() {
2991
- return 'elementor-panel-scheme elementor-panel-scheme-' + this.getUIType();
2992
- },
2993
 
2994
- childViewContainer: '.elementor-panel-scheme-items',
 
 
2995
 
2996
- getTemplate: function() {
2997
- return Marionette.TemplateCache.get( '#tmpl-elementor-panel-schemes-' + this.getType() );
2998
- },
 
2999
 
3000
- getChildView: function() {
3001
- return childViewTypes[ this.getUIType() ];
3002
- },
3003
 
3004
- getUIType: function() {
3005
- return this.getType();
3006
- },
 
 
 
 
 
3007
 
3008
- ui: function() {
3009
- return {
3010
- saveButton: '.elementor-panel-scheme-save .elementor-button',
3011
- discardButton: '.elementor-panel-scheme-discard .elementor-button',
3012
- resetButton: '.elementor-panel-scheme-reset .elementor-button'
3013
- };
3014
- },
3015
 
3016
- events: function() {
3017
- return {
3018
- 'click @ui.saveButton': 'saveScheme',
3019
- 'click @ui.discardButton': 'discardScheme',
3020
- 'click @ui.resetButton': 'setDefaultScheme'
3021
- };
3022
  },
3023
 
3024
- initialize: function() {
3025
- this.model = new Backbone.Model();
3026
-
3027
- this.resetScheme();
3028
  },
3029
 
3030
- getType: function() {},
3031
-
3032
- getScheme: function() {
3033
- return elementor.schemes.getScheme( this.getType() );
3034
  },
3035
 
3036
- changeChildrenUIValues: function( schemeItems ) {
3037
- var self = this;
3038
-
3039
- _.each( schemeItems, function( value, key ) {
3040
- var model = self.collection.findWhere( { key: key } ),
3041
- childView = self.children.findByModelCid( model.cid );
3042
-
3043
- childView.changeUIValue( value );
3044
- } );
3045
- },
3046
 
3047
- discardScheme: function() {
3048
- elementor.schemes.resetSchemes( this.getType() );
3049
 
3050
- this.onSchemeChange();
3051
 
3052
- this.ui.saveButton.prop( 'disabled', true );
 
3053
 
3054
- this._renderChildren();
3055
- },
3056
 
3057
- setSchemeValue: function( key, value ) {
3058
- elementor.schemes.setSchemeValue( this.getType(), key, value );
3059
 
3060
- this.onSchemeChange();
3061
  },
3062
 
3063
- saveScheme: function() {
3064
- elementor.schemes.saveScheme( this.getType() );
3065
-
3066
- this.ui.saveButton.prop( 'disabled', true );
3067
-
3068
- this.resetScheme();
3069
-
3070
- this._renderChildren();
3071
- },
3072
-
3073
- setDefaultScheme: function() {
3074
- var defaultScheme = elementor.config.default_schemes[ this.getType() ].items;
3075
-
3076
- this.changeChildrenUIValues( defaultScheme );
3077
- },
 
 
 
 
 
 
3078
 
3079
- resetItems: function() {
3080
- this.model.set( 'items', this.getScheme().items );
3081
  },
3082
 
3083
- resetCollection: function() {
3084
- var items = this.model.get( 'items' );
 
3085
 
3086
- this.collection = new Backbone.Collection();
 
 
 
 
 
3087
 
3088
- _.each( items, _.bind( function( item, key ) {
3089
- item.type = this.getType();
3090
- item.key = key;
 
 
 
 
 
 
 
 
 
3091
 
3092
- this.collection.add( item );
3093
- }, this ) );
3094
  },
3095
 
3096
- resetScheme: function() {
3097
- this.resetItems();
3098
- this.resetCollection();
3099
- },
3100
 
3101
- onSchemeChange: function() {
3102
- elementor.schemes.printSchemesStyle();
3103
- },
 
 
3104
 
3105
- onChildviewValueChange: function( childView, newValue ) {
3106
- this.ui.saveButton.removeProp( 'disabled' );
 
3107
 
3108
- this.setSchemeValue( childView.model.get( 'key' ), newValue );
3109
- }
3110
- } );
3111
 
3112
- module.exports = PanelSchemeBaseView;
 
 
 
3113
 
3114
- },{"elementor-panel/pages/schemes/items/color":48,"elementor-panel/pages/schemes/items/typography":49}],44:[function(require,module,exports){
3115
- var PanelSchemeColorsView = require( 'elementor-panel/pages/schemes/colors' ),
3116
- PanelSchemeColorPickerView;
 
 
 
 
3117
 
3118
- PanelSchemeColorPickerView = PanelSchemeColorsView.extend( {
3119
- getType: function() {
3120
- return 'color-picker';
3121
  },
3122
 
3123
- getUIType: function() {
3124
- return 'color';
 
 
 
 
 
3125
  },
3126
 
3127
- onSchemeChange: function() {},
 
 
3128
 
3129
- getViewComparator: function() {
3130
- return this.orderView;
3131
  },
3132
 
3133
- orderView: function( model ) {
3134
- return elementor.helpers.getColorPickerPaletteIndex( model.get( 'key' ) );
3135
- }
3136
- } );
3137
-
3138
- module.exports = PanelSchemeColorPickerView;
3139
 
3140
- },{"elementor-panel/pages/schemes/colors":45}],45:[function(require,module,exports){
3141
- var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
3142
- PanelSchemeColorsView;
 
 
3143
 
3144
- PanelSchemeColorsView = PanelSchemeBaseView.extend( {
3145
- ui: function() {
3146
- var ui = PanelSchemeBaseView.prototype.ui.apply( this, arguments );
 
3147
 
3148
- ui.systemSchemes = '.elementor-panel-scheme-color-system-scheme';
 
 
3149
 
3150
- return ui;
 
3151
  },
3152
 
3153
- events: function() {
3154
- var events = PanelSchemeBaseView.prototype.events.apply( this, arguments );
 
3155
 
3156
- events[ 'click @ui.systemSchemes' ] = 'onSystemSchemeClick';
 
3157
 
3158
- return events;
3159
  },
3160
 
3161
- getType: function() {
3162
- return 'color';
3163
  },
3164
 
3165
- onSystemSchemeClick: function( event ) {
3166
- var $schemeClicked = Backbone.$( event.currentTarget ),
3167
- schemeName = $schemeClicked.data( 'schemeName' ),
3168
- scheme = elementor.config.system_schemes[ this.getType() ][ schemeName ].items;
3169
-
3170
- this.changeChildrenUIValues( scheme );
3171
  }
3172
  } );
3173
 
3174
- module.exports = PanelSchemeColorsView;
3175
 
3176
- },{"elementor-panel/pages/schemes/base":43}],46:[function(require,module,exports){
3177
- var PanelSchemeDisabledView;
3178
 
3179
- PanelSchemeDisabledView = Marionette.ItemView.extend( {
3180
- template: '#tmpl-elementor-panel-schemes-disabled',
 
 
 
 
 
 
 
 
3181
 
3182
- id: 'elementor-panel-schemes-disabled',
3183
 
3184
- className: 'elementor-panel-nerd-box',
 
 
3185
 
3186
- disabledTitle: '',
 
3187
 
3188
- templateHelpers: function() {
3189
- return {
3190
- disabledTitle: this.disabledTitle
3191
- };
3192
- }
3193
- } );
3194
 
3195
- module.exports = PanelSchemeDisabledView;
3196
 
3197
- },{}],47:[function(require,module,exports){
3198
- var PanelSchemeItemView;
3199
 
3200
- PanelSchemeItemView = Marionette.ItemView.extend( {
3201
- getTemplate: function() {
3202
- return Marionette.TemplateCache.get( '#tmpl-elementor-panel-scheme-' + this.getUIType() + '-item' );
3203
  },
3204
 
3205
- className: function() {
3206
- return 'elementor-panel-scheme-item';
3207
  }
3208
  } );
3209
 
3210
- module.exports = PanelSchemeItemView;
3211
 
3212
- },{}],48:[function(require,module,exports){
3213
- var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
3214
- PanelSchemeColorView;
3215
 
3216
- PanelSchemeColorView = PanelSchemeItemView.extend( {
3217
- getUIType: function() {
3218
- return 'color';
3219
- },
3220
 
3221
- ui: {
3222
- input: '.elementor-panel-scheme-color-value'
3223
- },
3224
 
3225
- changeUIValue: function( newValue ) {
3226
- this.ui.input.wpColorPicker( 'color', newValue );
3227
- },
3228
 
3229
- onBeforeDestroy: function() {
3230
- if ( this.ui.input.wpColorPicker( 'instance' ) ) {
3231
- this.ui.input.wpColorPicker( 'close' );
3232
- }
3233
- },
3234
 
3235
- onRender: function() {
3236
- elementor.helpers.wpColorPicker( this.ui.input, {
3237
- change: _.bind( function( event, ui ) {
3238
- this.triggerMethod( 'value:change', ui.color.toString() );
3239
- }, this )
3240
- } );
3241
  }
3242
  } );
3243
 
3244
- module.exports = PanelSchemeColorView;
3245
-
3246
- },{"elementor-panel/pages/schemes/items/base":47}],49:[function(require,module,exports){
3247
- var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
3248
- PanelSchemeTypographyView;
3249
-
3250
- PanelSchemeTypographyView = PanelSchemeItemView.extend( {
3251
- getUIType: function() {
3252
- return 'typography';
3253
- },
3254
-
3255
- className: function() {
3256
- var classes = PanelSchemeItemView.prototype.className.apply( this, arguments );
3257
 
3258
- return classes + ' elementor-panel-box';
3259
- },
3260
 
3261
- ui: {
3262
- heading: '.elementor-panel-heading',
3263
- allFields: '.elementor-panel-scheme-typography-item-field',
3264
- inputFields: 'input.elementor-panel-scheme-typography-item-field',
3265
- selectFields: 'select.elementor-panel-scheme-typography-item-field',
3266
- selectFamilyFields: 'select.elementor-panel-scheme-typography-item-field[name="font_family"]'
3267
- },
3268
 
3269
- events: {
3270
- 'input @ui.inputFields': 'onFieldChange',
3271
- 'change @ui.selectFields': 'onFieldChange',
3272
- 'click @ui.heading': 'toggleVisibility'
3273
- },
3274
 
3275
  onRender: function() {
3276
  var self = this;
3277
 
3278
- this.ui.inputFields.add( this.ui.selectFields ).each( function() {
3279
- var $this = Backbone.$( this ),
3280
- name = $this.attr( 'name' ),
3281
- value = self.model.get( 'value' )[ name ];
3282
-
3283
- $this.val( value );
3284
- } );
3285
-
3286
- this.ui.selectFamilyFields.select2( {
3287
- dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
3288
- } );
3289
- },
3290
 
3291
- toggleVisibility: function() {
3292
- this.ui.heading.toggleClass( 'elementor-open' );
3293
- },
 
 
3294
 
3295
- changeUIValue: function( newValue ) {
3296
- this.ui.allFields.each( function() {
3297
- var $this = Backbone.$( this ),
3298
- thisName = $this.attr( 'name' ),
3299
- newFieldValue = newValue[ thisName ];
3300
 
3301
- $this.val( newFieldValue ).trigger( 'change' );
3302
  } );
3303
- },
3304
-
3305
- onFieldChange: function( event ) {
3306
- var $select = this.$( event.currentTarget ),
3307
- currentValue = elementor.schemes.getSchemeValue( 'typography', this.model.get( 'key' ) ).value,
3308
- fieldKey = $select.attr( 'name' );
3309
-
3310
- currentValue[ fieldKey ] = $select.val();
3311
-
3312
- if ( 'font_family' === fieldKey && ! _.isEmpty( currentValue[ fieldKey ] ) ) {
3313
- elementor.helpers.enqueueFont( currentValue[ fieldKey ] );
3314
- }
3315
-
3316
- this.triggerMethod( 'value:change', currentValue );
3317
- }
3318
- } );
3319
-
3320
- module.exports = PanelSchemeTypographyView;
3321
-
3322
- },{"elementor-panel/pages/schemes/items/base":47}],50:[function(require,module,exports){
3323
- var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
3324
- PanelSchemeTypographyView;
3325
-
3326
- PanelSchemeTypographyView = PanelSchemeBaseView.extend( {
3327
- getType: function() {
3328
- return 'typography';
3329
  }
3330
  } );
3331
 
3332
- module.exports = PanelSchemeTypographyView;
3333
 
3334
- },{"elementor-panel/pages/schemes/base":43}],51:[function(require,module,exports){
3335
- var EditModeItemView = require( 'elementor-layouts/edit-mode' ),
3336
- PanelLayoutView;
3337
 
3338
- PanelLayoutView = Marionette.LayoutView.extend( {
3339
- template: '#tmpl-elementor-panel',
3340
 
3341
- id: 'elementor-panel-inner',
3342
 
3343
- regions: {
3344
- content: '#elementor-panel-content-wrapper',
3345
- header: '#elementor-panel-header-wrapper',
3346
- footer: '#elementor-panel-footer',
3347
- modeSwitcher: '#elementor-mode-switcher'
3348
  },
3349
 
3350
- pages: {},
 
3351
 
3352
- childEvents: {
3353
- 'click:add': function() {
3354
- this.setPage( 'elements' );
3355
- },
3356
- 'editor:destroy': function() {
3357
- this.setPage( 'elements' );
3358
  }
 
 
 
 
3359
  },
3360
 
3361
- currentPageName: null,
 
3362
 
3363
- currentPageView: null,
 
 
3364
 
3365
- _isScrollbarInitialized: false,
3366
 
3367
- initialize: function() {
3368
- this.initPages();
3369
  },
3370
 
3371
- buildPages: function() {
3372
- var pages = {
3373
- elements: {
3374
- view: require( 'elementor-panel/pages/elements/elements' ),
3375
- title: '<img src="' + elementor.config.assets_url + 'images/logo-panel.svg">'
3376
- },
3377
- editor: {
3378
- view: require( 'elementor-panel/pages/editor' )
3379
- },
3380
- menu: {
3381
- view: elementor.modules.panel.Menu,
3382
- title: '<img src="' + elementor.config.assets_url + 'images/logo-panel.svg">'
3383
- },
3384
- colorScheme: {
3385
- view: require( 'elementor-panel/pages/schemes/colors' )
3386
- },
3387
- typographyScheme: {
3388
- view: require( 'elementor-panel/pages/schemes/typography' )
3389
- },
3390
- colorPickerScheme: {
3391
- view: require( 'elementor-panel/pages/schemes/color-picker' )
3392
- }
3393
- };
3394
 
3395
- var schemesTypes = Object.keys( elementor.schemes.getSchemes() ),
3396
- disabledSchemes = _.difference( schemesTypes, elementor.schemes.getEnabledSchemesTypes() );
3397
 
3398
- _.each( disabledSchemes, function( schemeType ) {
3399
- var scheme = elementor.schemes.getScheme( schemeType );
 
3400
 
3401
- pages[ schemeType + 'Scheme' ].view = require( 'elementor-panel/pages/schemes/disabled' ).extend( {
3402
- disabledTitle: scheme.disabled_title
3403
- } );
3404
- } );
3405
 
3406
- return pages;
 
3407
  },
3408
 
3409
- initPages: function() {
3410
- var pages;
 
 
3411
 
3412
- this.getPages = function( page ) {
3413
- if ( ! pages ) {
3414
- pages = this.buildPages();
3415
- }
3416
 
3417
- return page ? pages[ page ] : pages;
3418
- };
3419
 
3420
- this.addPage = function( pageName, pageData ) {
3421
- if ( ! pages ) {
3422
- pages = this.buildPages();
3423
- }
3424
 
3425
- pages[ pageName ] = pageData;
3426
- };
3427
  },
3428
 
3429
- getHeaderView: function() {
3430
- return this.getChildView( 'header' );
3431
  },
3432
 
3433
- getFooterView: function() {
3434
- return this.getChildView( 'footer' );
3435
- },
3436
 
3437
- getCurrentPageName: function() {
3438
- return this.currentPageName;
3439
- },
3440
 
3441
- getCurrentPageView: function() {
3442
- return this.currentPageView;
3443
  },
3444
 
3445
- setPage: function( page, title, viewOptions ) {
3446
- var pageData = this.getPages( page );
3447
-
3448
- if ( ! pageData ) {
3449
- throw new ReferenceError( 'Elementor panel doesn\'t have page named \'' + page + '\'' );
3450
- }
3451
 
3452
- if ( pageData.options ) {
3453
- viewOptions = _.extend( pageData.options, viewOptions );
3454
- }
3455
 
3456
- var View = pageData.view;
 
 
3457
 
3458
- if ( pageData.getView ) {
3459
- View = pageData.getView();
3460
- }
3461
 
3462
- this.currentPageView = new View( viewOptions );
3463
 
3464
- this.showChildView( 'content', this.currentPageView );
 
 
3465
 
3466
- this.getHeaderView().setTitle( title || pageData.title );
 
3467
 
3468
- this.currentPageName = page;
 
 
 
3469
 
3470
- this
3471
- .trigger( 'set:page', this.currentPageView )
3472
- .trigger( 'set:page:' + page, this.currentPageView );
3473
- },
3474
 
3475
- openEditor: function( model, view ) {
3476
- var currentPageName = this.getCurrentPageName();
 
3477
 
3478
- if ( 'editor' === currentPageName ) {
3479
- var currentPageView = this.getCurrentPageView(),
3480
- currentEditableModel = currentPageView.model;
 
 
3481
 
3482
- if ( currentEditableModel === model ) {
3483
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3484
  }
 
 
 
 
 
 
3485
  }
3486
 
3487
- var elementData = elementor.getElementData( model );
 
3488
 
3489
- this.setPage( 'editor', elementor.translate( 'edit_element', [ elementData.title ] ), {
3490
- model: model,
3491
- editedElementView: view
3492
- } );
3493
 
3494
- var action = 'panel/open_editor/' + model.get( 'elType' );
 
3495
 
3496
- // Example: panel/open_editor/widget
3497
- elementor.hooks.doAction( action, this, model, view );
 
 
3498
 
3499
- // Example: panel/open_editor/widget/heading
3500
- elementor.hooks.doAction( action + '/' + model.get( 'widgetType' ), this, model, view );
3501
- },
3502
 
3503
- onBeforeShow: function() {
3504
- var PanelFooterItemView = require( 'elementor-layouts/panel/footer' ),
3505
- PanelHeaderItemView = require( 'elementor-layouts/panel/header' );
3506
 
3507
- // Edit Mode
3508
- this.showChildView( 'modeSwitcher', new EditModeItemView() );
3509
 
3510
- // Header
3511
- this.showChildView( 'header', new PanelHeaderItemView() );
3512
 
3513
- // Footer
3514
- this.showChildView( 'footer', new PanelFooterItemView() );
3515
 
3516
- // Added Editor events
3517
- this.updateScrollbar = _.throttle( this.updateScrollbar, 100 );
 
 
3518
 
3519
- this.getRegion( 'content' )
3520
- .on( 'before:show', _.bind( this.onEditorBeforeShow, this ) )
3521
- .on( 'empty', _.bind( this.onEditorEmpty, this ) )
3522
- .on( 'show', _.bind( this.updateScrollbar, this ) );
3523
 
3524
- // Set default page to elements
3525
- this.setPage( 'elements' );
 
 
 
 
3526
 
3527
- this.listenTo( elementor.channels.data, 'scrollbar:update', this.updateScrollbar );
 
 
3528
  },
3529
 
3530
- onEditorBeforeShow: function() {
3531
- _.defer( _.bind( this.updateScrollbar, this ) );
3532
  },
3533
 
3534
- onEditorEmpty: function() {
3535
- this.updateScrollbar();
 
 
3536
  },
3537
 
3538
- updateScrollbar: function() {
3539
- var $panel = this.content.$el;
 
3540
 
3541
- if ( ! this._isScrollbarInitialized ) {
3542
- $panel.perfectScrollbar();
3543
- this._isScrollbarInitialized = true;
3544
 
3545
- return;
3546
- }
 
 
 
 
 
3547
 
3548
- $panel.perfectScrollbar( 'update' );
3549
- }
3550
- } );
 
 
 
 
3551
 
3552
- module.exports = PanelLayoutView;
 
3553
 
3554
- },{"elementor-layouts/edit-mode":27,"elementor-layouts/panel/footer":28,"elementor-layouts/panel/header":29,"elementor-panel/pages/editor":30,"elementor-panel/pages/elements/elements":33,"elementor-panel/pages/schemes/color-picker":44,"elementor-panel/pages/schemes/colors":45,"elementor-panel/pages/schemes/disabled":46,"elementor-panel/pages/schemes/typography":50}],52:[function(require,module,exports){
3555
- var BaseSettingsModel;
3556
 
3557
- BaseSettingsModel = Backbone.Model.extend( {
3558
- options: {},
3559
 
3560
- initialize: function( data, options ) {
 
 
 
 
3561
  var self = this;
3562
 
3563
- if ( options ) {
3564
- // Keep the options for cloning
3565
- self.options = options;
3566
- }
3567
 
3568
- self.controls = ( options && options.controls ) ? options.controls : elementor.getElementControls( self );
 
 
3569
 
3570
- self.validators = {};
 
3571
 
3572
- if ( ! self.controls ) {
3573
- return;
3574
- }
3575
 
3576
- var attrs = data || {},
3577
- defaults = {};
3578
 
3579
- _.each( self.controls, function( field ) {
3580
- var control = elementor.config.controls[ field.type ],
3581
- isUIControl = -1 !== control.features.indexOf( 'ui' );
3582
 
3583
- if ( isUIControl ) {
3584
- return;
3585
- }
3586
 
3587
- // Check if the value is a plain object ( and not an array )
3588
- var isMultipleControl = jQuery.isPlainObject( control.default_value );
3589
 
3590
- if ( isMultipleControl ) {
3591
- defaults[ field.name ] = _.extend( {}, control.default_value, field['default'] || {} );
3592
- } else {
3593
- defaults[ field.name ] = field['default'] || control.default_value;
3594
- }
3595
 
3596
- if ( undefined !== attrs[ field.name ] ) {
3597
- if ( isMultipleControl && ! _.isObject( attrs[ field.name ] ) ) {
3598
- elementor.debug.addCustomError(
3599
- new TypeError( 'An invalid argument supplied as multiple control value' ),
3600
- 'InvalidElementData',
3601
- 'Element `' + ( self.get( 'widgetType' ) || self.get( 'elType' ) ) + '` got <' + attrs[ field.name ] + '> as `' + field.name + '` value. Expected array or object.'
3602
- );
3603
 
3604
- delete attrs[ field.name ];
3605
- }
3606
- }
3607
 
3608
- if ( undefined === attrs[ field.name ] ) {
3609
- attrs[ field.name ] = defaults[ field.name ];
3610
- }
3611
- } );
3612
 
3613
- self.defaults = defaults;
 
3614
 
3615
- self.handleRepeaterData( attrs );
 
3616
 
3617
- self.set( attrs );
 
3618
  },
3619
 
3620
- handleRepeaterData: function( attrs ) {
3621
- _.each( this.controls, function( field ) {
3622
- if ( field.is_repeater ) {
3623
- // TODO: Apply defaults on each field in repeater fields
3624
- if ( ! ( attrs[ field.name ] instanceof Backbone.Collection ) ) {
3625
- attrs[ field.name ] = new Backbone.Collection( attrs[ field.name ], {
3626
- model: function( attrs, options ) {
3627
- options = options || {};
3628
 
3629
- options.controls = field.fields;
3630
 
3631
- if ( ! attrs._id ) {
3632
- attrs._id = elementor.helpers.getUniqueID();
3633
- }
3634
 
3635
- return new BaseSettingsModel( attrs, options );
3636
- }
3637
- } );
3638
- }
3639
- }
3640
- } );
3641
  },
3642
 
3643
- getFontControls: function() {
3644
- return _.filter( this.getActiveControls(), function( control ) {
3645
- return 'font' === control.type;
3646
- } );
3647
  },
3648
 
3649
- getStyleControls: function( controls ) {
3650
- var self = this;
3651
-
3652
- controls = controls || self.getActiveControls();
3653
 
3654
- return _.filter( controls, function( control ) {
3655
- if ( control.fields ) {
3656
- control.styleFields = self.getStyleControls( control.fields );
3657
 
3658
- return true;
3659
- }
 
3660
 
3661
- return self.isStyleControl( control.name, controls );
3662
- } );
3663
- },
3664
 
3665
- isStyleControl: function( attribute, controls ) {
3666
- controls = controls || this.controls;
 
3667
 
3668
- var currentControl = _.find( controls, function( control ) {
3669
- return attribute === control.name;
3670
- } );
 
3671
 
3672
- return currentControl && ! _.isEmpty( currentControl.selectors );
 
3673
  },
3674
 
3675
- getClassControls: function( controls ) {
3676
- controls = controls || this.controls;
3677
 
3678
- return _.filter( controls, function( control ) {
3679
- return ! _.isUndefined( control.prefix_class );
3680
- } );
3681
  },
3682
 
3683
- isClassControl: function( attribute ) {
3684
- var currentControl = _.find( this.controls, function( control ) {
3685
- return attribute === control.name;
3686
- } );
3687
 
3688
- return currentControl && ! _.isUndefined( currentControl.prefix_class );
3689
- },
3690
 
3691
- getControl: function( id ) {
3692
- return _.find( this.controls, function( control ) {
3693
- return id === control.name;
3694
- } );
3695
- },
3696
 
3697
- getActiveControls: function() {
3698
- var self = this,
3699
- controls = {};
3700
 
3701
- _.each( self.controls, function( control, controlKey ) {
3702
- if ( elementor.helpers.isActiveControl( control, self.attributes ) ) {
3703
- controls[ controlKey ] = control;
3704
- }
3705
- } );
3706
 
3707
- return controls;
3708
  },
3709
 
3710
- clone: function() {
3711
- return new BaseSettingsModel( elementor.helpers.cloneObject( this.attributes ), elementor.helpers.cloneObject( this.options ) );
3712
- },
3713
 
3714
- setExternalChange: function( key, value ) {
3715
- this.set( key, value );
3716
 
3717
- this.trigger( 'change:external', key, value )
3718
- .trigger( 'change:external:' + key, value );
3719
  },
3720
 
3721
- toJSON: function( options ) {
3722
- var data = Backbone.Model.prototype.toJSON.call( this );
3723
-
3724
- options = options || {};
3725
-
3726
- delete data.widgetType;
3727
- delete data.elType;
3728
- delete data.isInner;
3729
 
3730
- _.each( data, function( attribute, key ) {
3731
- if ( attribute && attribute.toJSON ) {
3732
- data[ key ] = attribute.toJSON();
3733
- }
3734
- } );
3735
 
3736
- if ( options.removeDefault ) {
3737
- var controls = this.controls;
 
3738
 
3739
- _.each( data, function( value, key ) {
3740
- var control = controls[ key ];
3741
 
3742
- if ( control ) {
3743
- if ( ( 'text' === control.type || 'textarea' === control.type ) && data[ key ] ) {
3744
- return;
3745
- }
3746
 
3747
- if ( data[ key ] && 'object' === typeof data[ key ] ) {
3748
- // First check length difference
3749
- if ( Object.keys( data[ key ] ).length !== Object.keys( control[ 'default' ] ).length ) {
3750
- return;
3751
- }
3752
 
3753
- // If it's equal length, loop over value
3754
- var isEqual = true;
3755
 
3756
- _.each( data[ key ], function( propertyValue, propertyKey ) {
3757
- if ( data[ key ][ propertyKey ] !== control[ 'default' ][ propertyKey ] ) {
3758
- return isEqual = false;
3759
- }
3760
- } );
3761
 
3762
- if ( isEqual ) {
3763
- delete data[ key ];
3764
- }
3765
- } else {
3766
- if ( data[ key ] === control[ 'default' ] ) {
3767
- delete data[ key ];
3768
- }
3769
- }
3770
- }
3771
- } );
3772
- }
3773
 
3774
- return data;
 
 
 
3775
  }
3776
  } );
3777
 
3778
- module.exports = BaseSettingsModel;
3779
 
3780
  },{}],53:[function(require,module,exports){
3781
- var BaseSettingsModel = require( 'elementor-models/base-settings' ),
3782
- ColumnSettingsModel;
3783
 
3784
- ColumnSettingsModel = BaseSettingsModel.extend( {
3785
- defaults: {
3786
- _column_size: 100
 
 
 
 
3787
  }
3788
  } );
3789
 
3790
- module.exports = ColumnSettingsModel;
3791
 
3792
- },{"elementor-models/base-settings":52}],54:[function(require,module,exports){
3793
- var BaseSettingsModel = require( 'elementor-models/base-settings' ),
3794
- WidgetSettingsModel = require( 'elementor-models/widget-settings' ),
3795
- ColumnSettingsModel = require( 'elementor-models/column-settings' ),
3796
- SectionSettingsModel = require( 'elementor-models/section-settings' ),
3797
 
3798
- ElementModel,
3799
- ElementCollection;
 
 
3800
 
3801
- ElementModel = Backbone.Model.extend( {
3802
- defaults: {
3803
- id: '',
3804
- elType: '',
3805
- isInner: false,
3806
- settings: {},
3807
- defaultEditSettings: {}
3808
  },
3809
 
3810
- remoteRender: false,
3811
- _htmlCache: null,
3812
- _jqueryXhr: null,
3813
- renderOnLeave: false,
3814
 
3815
- initialize: function( options ) {
3816
- var elType = this.get( 'elType' ),
3817
- elements = this.get( 'elements' );
 
 
3818
 
3819
- if ( undefined !== elements ) {
3820
- this.set( 'elements', new ElementCollection( elements ) );
3821
- }
3822
-
3823
- if ( 'widget' === elType ) {
3824
- this.remoteRender = true;
3825
- this.setHtmlCache( options.htmlCache || '' );
3826
- }
3827
 
3828
- // No need this variable anymore
3829
- delete options.htmlCache;
3830
 
3831
- // Make call to remote server as throttle function
3832
- this.renderRemoteServer = _.throttle( this.renderRemoteServer, 1000 );
 
3833
 
3834
- this.initSettings();
 
 
 
3835
 
3836
- this.initEditSettings();
 
3837
 
3838
- this.on( {
3839
- destroy: this.onDestroy,
3840
- 'editor:close': this.onCloseEditor
3841
- } );
3842
  },
3843
 
3844
- initSettings: function() {
3845
- var elType = this.get( 'elType' ),
3846
- settings = this.get( 'settings' ),
3847
- settingModels = {
3848
- widget: WidgetSettingsModel,
3849
- column: ColumnSettingsModel,
3850
- section: SectionSettingsModel
3851
- },
3852
- SettingsModel = settingModels[ elType ] || BaseSettingsModel;
3853
-
3854
- if ( Backbone.$.isEmptyObject( settings ) ) {
3855
- settings = elementor.helpers.cloneObject( settings );
3856
- }
3857
 
3858
- if ( 'widget' === elType ) {
3859
- settings.widgetType = this.get( 'widgetType' );
3860
- }
 
 
3861
 
3862
- settings.elType = elType;
3863
- settings.isInner = this.get( 'isInner' );
3864
 
3865
- settings = new SettingsModel( settings );
 
 
 
3866
 
3867
- this.set( 'settings', settings );
 
3868
 
3869
- elementorFrontend.config.elements.data[ this.cid ] = settings;
 
 
3870
  },
3871
 
3872
- initEditSettings: function() {
3873
- var editSettings = new Backbone.Model( this.get( 'defaultEditSettings' ) );
 
3874
 
3875
- this.set( 'editSettings', editSettings );
 
 
 
 
3876
 
3877
- elementorFrontend.config.elements.editSettings[ this.cid ] = editSettings;
 
3878
  },
3879
 
3880
- onDestroy: function() {
3881
- // Clean the memory for all use instances
3882
- var settings = this.get( 'settings' ),
3883
- elements = this.get( 'elements' );
3884
 
3885
- if ( undefined !== elements ) {
3886
- _.each( _.clone( elements.models ), function( model ) {
3887
- model.destroy();
3888
- } );
3889
- }
3890
 
3891
- if ( settings instanceof BaseSettingsModel ) {
3892
- settings.destroy();
3893
  }
3894
- },
3895
 
3896
- onCloseEditor: function() {
3897
- this.initEditSettings();
 
3898
 
3899
- if ( this.renderOnLeave ) {
3900
- this.renderRemoteServer();
3901
- }
3902
- },
3903
 
3904
- setSetting: function( key, value ) {
3905
- this.get( 'settings' ).setExternalChange( key, value );
3906
- },
3907
 
3908
- getSetting: function( key ) {
3909
- var settings = this.get( 'settings' );
 
 
 
3910
 
3911
- if ( undefined === settings.get( key ) ) {
3912
- return '';
3913
- }
3914
 
3915
- return settings.get( key );
3916
- },
 
3917
 
3918
- setHtmlCache: function( htmlCache ) {
3919
- this._htmlCache = htmlCache;
3920
- },
3921
 
3922
- getHtmlCache: function() {
3923
- return this._htmlCache;
 
 
 
 
 
3924
  },
3925
 
3926
- getTitle: function() {
3927
- var elementData = elementor.getElementData( this );
3928
 
3929
- return ( elementData ) ? elementData.title : 'Unknown';
 
 
 
 
 
 
3930
  },
3931
 
3932
- getIcon: function() {
3933
- var elementData = elementor.getElementData( this );
3934
 
3935
- return ( elementData ) ? elementData.icon : 'unknown';
3936
- },
3937
 
3938
- createRemoteRenderRequest: function() {
3939
- var data = this.toJSON();
3940
 
3941
- return elementor.ajax.send( 'render_widget', {
3942
- data: {
3943
- post_id: elementor.config.post_id,
3944
- data: JSON.stringify( data ),
3945
- _nonce: elementor.config.nonce
 
 
 
 
3946
  },
3947
- success: _.bind( this.onRemoteGetHtml, this )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3948
  } );
 
 
3949
  },
3950
 
3951
- renderRemoteServer: function() {
3952
- if ( ! this.remoteRender ) {
3953
- return;
3954
- }
3955
 
3956
- this.renderOnLeave = false;
 
 
 
3957
 
3958
- this.trigger( 'before:remote:render' );
 
3959
 
3960
- if ( this.isRemoteRequestActive() ) {
3961
- this._jqueryXhr.abort();
3962
- }
 
3963
 
3964
- this._jqueryXhr = this.createRemoteRenderRequest();
 
3965
  },
3966
 
3967
- isRemoteRequestActive: function() {
3968
- return this._jqueryXhr && 4 !== this._jqueryXhr.readyState;
3969
  },
3970
 
3971
- onRemoteGetHtml: function( data ) {
3972
- this.setHtmlCache( data.render );
3973
- this.trigger( 'remote:render' );
3974
  },
3975
 
3976
- clone: function() {
3977
- var newModel = new this.constructor( elementor.helpers.cloneObject( this.attributes ) );
 
3978
 
3979
- newModel.set( 'id', elementor.helpers.getUniqueID() );
 
 
3980
 
3981
- newModel.setHtmlCache( this.getHtmlCache() );
 
3982
 
3983
- var elements = this.get( 'elements' );
 
 
3984
 
3985
- if ( ! _.isEmpty( elements ) ) {
3986
- newModel.set( 'elements', elements.clone() );
3987
  }
3988
 
3989
- return newModel;
3990
- },
3991
 
3992
- toJSON: function( options ) {
3993
- options = _.extend( { copyHtmlCache: false }, options );
 
3994
 
3995
- // Call parent's toJSON method
3996
- var data = Backbone.Model.prototype.toJSON.call( this );
3997
 
3998
- _.each( data, function( attribute, key ) {
3999
- if ( attribute && attribute.toJSON ) {
4000
- data[ key ] = attribute.toJSON( options );
4001
- }
4002
- } );
4003
 
4004
- if ( options.copyHtmlCache ) {
4005
- data.htmlCache = this.getHtmlCache();
4006
- } else {
4007
- delete data.htmlCache;
4008
- }
4009
 
4010
- return data;
4011
- }
4012
 
4013
- } );
 
 
 
4014
 
4015
- ElementCollection = Backbone.Collection.extend( {
4016
- add: function( models, options, isCorrectSet ) {
4017
- if ( ( ! options || ! options.silent ) && ! isCorrectSet ) {
4018
- throw 'Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.';
 
 
 
 
 
 
4019
  }
4020
 
4021
- return Backbone.Collection.prototype.add.call( this, models, options );
4022
- },
4023
 
4024
- model: function( attrs, options ) {
4025
- var ModelClass = Backbone.Model;
 
 
4026
 
4027
- if ( attrs.elType ) {
4028
- ModelClass = elementor.hooks.applyFilters( 'element/model', ElementModel, attrs );
4029
- }
4030
 
4031
- return new ModelClass( attrs, options );
 
 
 
 
4032
  },
4033
 
4034
- clone: function() {
4035
- var tempCollection = Backbone.Collection.prototype.clone.apply( this, arguments ),
4036
- newCollection = new ElementCollection();
4037
 
4038
- tempCollection.forEach( function( model ) {
4039
- newCollection.add( model.clone(), null, true );
4040
- } );
4041
 
4042
- return newCollection;
4043
- }
4044
- } );
4045
 
4046
- ElementCollection.prototype.sync = function() {
4047
- return null;
4048
- };
4049
 
4050
- ElementCollection.prototype.fetch = function() {
4051
- return null;
4052
- };
4053
 
4054
- ElementCollection.prototype.save = function() {
4055
- return null;
4056
- };
 
4057
 
4058
- ElementModel.prototype.sync = function() {
4059
- return null;
4060
- };
4061
- ElementModel.prototype.fetch = function() {
4062
- return null;
4063
- };
4064
- ElementModel.prototype.save = function() {
4065
- return null;
4066
- };
4067
 
4068
- module.exports = {
4069
- Model: ElementModel,
4070
- Collection: ElementCollection
4071
- };
4072
 
4073
- },{"elementor-models/base-settings":52,"elementor-models/column-settings":53,"elementor-models/section-settings":55,"elementor-models/widget-settings":56}],55:[function(require,module,exports){
4074
- var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4075
- SectionSettingsModel;
4076
 
4077
- SectionSettingsModel = BaseSettingsModel.extend( {
4078
- defaults: {}
4079
- } );
4080
 
4081
- module.exports = SectionSettingsModel;
 
4082
 
4083
- },{"elementor-models/base-settings":52}],56:[function(require,module,exports){
4084
- var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4085
- WidgetSettingsModel;
4086
 
4087
- WidgetSettingsModel = BaseSettingsModel.extend( {
 
4088
 
 
 
4089
  } );
4090
 
4091
- module.exports = WidgetSettingsModel;
4092
 
4093
- },{"elementor-models/base-settings":52}],57:[function(require,module,exports){
4094
- var ViewModule = require( 'elementor-utils/view-module' ),
4095
- SettingsModel = require( 'elementor-models/base-settings' ),
4096
- ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' );
4097
 
4098
- module.exports = ViewModule.extend( {
4099
- controlsCSS: null,
4100
 
4101
- model: null,
 
4102
 
4103
- hasChange: false,
 
 
 
4104
 
4105
- changeCallbacks: {},
4106
 
4107
- addChangeCallback: function( attribute, callback ) {
4108
- this.changeCallbacks[ attribute ] = callback;
4109
- },
4110
 
4111
- bindEvents: function() {
4112
- elementor.on( 'preview:loaded', this.onElementorPreviewLoaded );
 
4113
 
4114
- this.model.on( 'change', this.onModelChange );
4115
- },
4116
 
4117
- addPanelPage: function() {
4118
- var name = this.getSettings( 'name' );
 
4119
 
4120
- elementor.getPanelView().addPage( name + '_settings', {
4121
- view: elementor.settings.panelPages[ name ] || elementor.settings.panelPages.base,
4122
- title: this.getSettings( 'panelPage.title' ),
4123
- options: {
4124
- model: this.model,
4125
- name: name
4126
  }
4127
- } );
4128
- },
4129
 
4130
- updateStylesheet: function() {
4131
- this.controlsCSS.stylesheet.empty();
4132
 
4133
- this.controlsCSS.addStyleRules( this.model.getStyleControls(), this.model.attributes, this.model.controls, [ /{{WRAPPER}}/g ], [ this.getSettings( 'cssWrapperSelector' ) ] );
 
 
 
 
4134
 
4135
- this.controlsCSS.addStyleToDocument();
4136
- },
 
 
 
 
 
4137
 
4138
- initModel: function() {
4139
- this.model = new SettingsModel( this.getSettings( 'settings' ), {
4140
- controls: this.getSettings( 'controls' )
 
 
 
 
4141
  } );
4142
- },
4143
 
4144
- initControlsCSSParser: function() {
4145
- this.controlsCSS = new ControlsCSSParser( { id: this.getSettings( 'name' ) } );
4146
- },
4147
 
4148
- getDataToSave: function( data ) {
4149
- return data;
 
4150
  },
4151
 
4152
- save: function( callback ) {
4153
- var self = this;
 
 
 
 
 
 
4154
 
4155
- if ( ! self.hasChange ) {
4156
- return;
4157
- }
4158
-
4159
- var settings = this.model.toJSON( { removeDefault: true } ),
4160
- data = this.getDataToSave( {
4161
- data: JSON.stringify( settings )
4162
- } );
4163
-
4164
- NProgress.start();
4165
-
4166
- elementor.ajax.send( 'save_' + this.getSettings( 'name' ) + '_settings', {
4167
- data: data,
4168
- success: function() {
4169
- NProgress.done();
4170
-
4171
- self.setSettings( 'settings', settings );
4172
 
4173
- self.hasChange = false;
 
 
4174
 
4175
- if ( callback ) {
4176
- callback.apply( self, arguments );
 
4177
  }
4178
- },
4179
- error: function() {
4180
- alert( 'An error occurred' );
4181
  }
4182
  } );
4183
  },
4184
 
4185
- addPanelMenuItem: function() {
4186
- var menuSettings = this.getSettings( 'panelPage.menu' ),
4187
- menuItemOptions = {
4188
- icon: menuSettings.icon,
4189
- title: this.getSettings( 'panelPage.title' ),
4190
- type: 'page',
4191
- pageName: this.getSettings( 'name' ) + '_settings'
4192
- };
4193
-
4194
- elementor.modules.panel.Menu.addItem( menuItemOptions, menuSettings.beforeItem );
4195
  },
4196
 
4197
- onInit: function() {
4198
- this.initModel();
4199
 
4200
- this.initControlsCSSParser();
4201
 
4202
- this.addPanelMenuItem();
 
 
4203
 
4204
- this.debounceSave = _.debounce( this.save, 3000 );
 
4205
 
4206
- ViewModule.prototype.onInit.apply( this, arguments );
 
4207
  },
4208
 
4209
- onModelChange: function( model ) {
4210
- var self = this;
4211
 
4212
- self.hasChange = true;
 
 
4213
 
4214
- this.controlsCSS.stylesheet.empty();
 
4215
 
4216
- _.each( model.changed, function( value, key ) {
4217
- if ( self.changeCallbacks[ key ] ) {
4218
- self.changeCallbacks[ key ].call( self, value );
4219
- }
 
4220
  } );
 
4221
 
4222
- self.updateStylesheet();
 
 
 
4223
 
4224
- self.debounceSave();
4225
  },
4226
 
4227
- onElementorPreviewLoaded: function() {
4228
- this.updateStylesheet();
 
 
 
4229
 
4230
- this.addPanelPage();
4231
- }
4232
- } );
4233
 
4234
- },{"elementor-editor-utils/controls-css-parser":64,"elementor-models/base-settings":52,"elementor-utils/view-module":117}],58:[function(require,module,exports){
4235
- var ControlsStack = require( 'elementor-views/controls-stack' );
 
 
 
4236
 
4237
- module.exports = ControlsStack.extend( {
4238
- id: function() {
4239
- return 'elementor-panel-' + this.getOption( 'name' ) + '-settings';
4240
  },
4241
 
4242
- getTemplate: function() {
4243
- return '#tmpl-elementor-panel-' + this.getOption( 'name' ) + '-settings';
4244
  },
4245
 
4246
- childViewContainer: function() {
4247
- return '#elementor-panel-' + this.getOption( 'name' ) + '-settings-controls';
4248
- },
4249
 
4250
- childViewOptions: function() {
4251
- return {
4252
- elementSettingsModel: this.model
4253
- };
4254
  },
4255
 
4256
- initialize: function() {
4257
- this.collection = new Backbone.Collection( _.values( this.model.controls ) );
4258
- }
4259
- } );
4260
 
4261
- },{"elementor-views/controls-stack":83}],59:[function(require,module,exports){
4262
- var BaseSettings = require( 'elementor-editor/settings/base/manager' );
4263
 
4264
- module.exports = BaseSettings.extend( {
4265
- changeCallbacks: {
4266
- elementor_page_title_selector: function( newValue ) {
4267
- var newSelector = newValue || 'h1.entry-title',
4268
- titleSelectors = elementor.settings.page.model.controls.hide_title.selectors = {};
4269
 
4270
- titleSelectors[ newSelector ] = 'display: none';
 
 
 
 
4271
 
4272
- elementor.settings.page.updateStylesheet();
4273
- }
4274
- }
4275
- } );
4276
 
4277
- },{"elementor-editor/settings/base/manager":57}],60:[function(require,module,exports){
4278
- var BaseSettings = require( 'elementor-editor/settings/base/manager' );
4279
 
4280
- module.exports = BaseSettings.extend( {
4281
- changeCallbacks: {
4282
- post_title: function( newValue ) {
4283
- var $title = elementorFrontend.getElements( '$document' ).find( elementor.config.page_title_selector );
4284
 
4285
- $title.text( newValue );
4286
- },
 
 
 
4287
 
4288
- template: function() {
4289
- this.save( function() {
4290
- elementor.reloadPreview();
4291
 
4292
- elementor.once( 'preview:loaded', function() {
4293
- elementor.getPanelView().setPage( 'page_settings' );
4294
- } );
 
 
 
 
 
 
 
 
 
 
 
 
4295
  } );
4296
  }
4297
- },
4298
-
4299
- getDataToSave: function( data ) {
4300
- data.id = elementor.config.post_id;
4301
 
4302
  return data;
4303
  }
4304
  } );
4305
 
4306
- },{"elementor-editor/settings/base/manager":57}],61:[function(require,module,exports){
4307
- var Module = require( 'elementor-utils/module' );
4308
-
4309
- module.exports = Module.extend( {
4310
- modules: {
4311
- base: require( 'elementor-editor/settings/base/manager' ),
4312
- general: require( 'elementor-editor/settings/general/manager' ),
4313
- page: require( 'elementor-editor/settings/page/manager' )
4314
- },
4315
-
4316
- panelPages: {
4317
- base: require( 'elementor-editor/settings/base/panel' )
4318
- },
4319
-
4320
- onInit: function() {
4321
- this.initSettings();
4322
- },
4323
-
4324
- initSettings: function() {
4325
- var self = this;
4326
 
4327
- _.each( elementor.config.settings, function( config, name ) {
4328
- var Manager = self.modules[ name ] || self.modules.base;
 
4329
 
4330
- self[ name ] = new Manager( config );
4331
- } );
 
4332
  }
4333
  } );
4334
 
4335
- },{"elementor-editor/settings/base/manager":57,"elementor-editor/settings/base/panel":58,"elementor-editor/settings/general/manager":59,"elementor-editor/settings/page/manager":60,"elementor-utils/module":116}],62:[function(require,module,exports){
4336
- var Ajax;
4337
 
4338
- Ajax = {
4339
- config: {},
 
 
 
4340
 
4341
- initConfig: function() {
4342
- this.config = {
4343
- ajaxParams: {
4344
- type: 'POST',
4345
- url: elementor.config.ajaxurl,
4346
- data: {}
4347
- },
4348
- actionPrefix: 'elementor_'
4349
- };
4350
- },
4351
 
4352
- init: function() {
4353
- this.initConfig();
 
 
 
 
 
4354
  },
4355
 
4356
- send: function( action, options ) {
4357
- var ajaxParams = elementor.helpers.cloneObject( this.config.ajaxParams );
4358
-
4359
- options = options || {};
4360
-
4361
- action = this.config.actionPrefix + action;
4362
 
4363
- Backbone.$.extend( ajaxParams, options );
 
 
4364
 
4365
- if ( ajaxParams.data instanceof FormData ) {
4366
- ajaxParams.data.append( 'action', action );
4367
- ajaxParams.data.append( '_nonce', elementor.config.nonce );
4368
- } else {
4369
- ajaxParams.data.action = action;
4370
- ajaxParams.data._nonce = elementor.config.nonce;
4371
  }
4372
 
4373
- var successCallback = ajaxParams.success,
4374
- errorCallback = ajaxParams.error;
4375
-
4376
- if ( successCallback || errorCallback ) {
4377
- ajaxParams.success = function( response ) {
4378
- if ( response.success && successCallback ) {
4379
- successCallback( response.data );
4380
- }
4381
 
4382
- if ( ( ! response.success ) && errorCallback ) {
4383
- errorCallback( response.data );
4384
- }
4385
- };
4386
 
4387
- if ( errorCallback ) {
4388
- ajaxParams.error = function( data ) {
4389
- errorCallback( data );
4390
- };
4391
- }
4392
- }
4393
 
4394
- return Backbone.$.ajax( ajaxParams );
4395
- }
4396
- };
4397
 
4398
- module.exports = Ajax;
4399
 
4400
- },{}],63:[function(require,module,exports){
4401
- var Conditions;
 
 
 
4402
 
4403
- Conditions = function() {
4404
- var self = this;
 
 
 
 
 
 
 
4405
 
4406
- this.compare = function( leftValue, rightValue, operator ) {
4407
- switch ( operator ) {
4408
- /* jshint ignore:start */
4409
- case '==':
4410
- return leftValue == rightValue;
4411
- case '!=':
4412
- return leftValue != rightValue;
4413
- /* jshint ignore:end */
4414
- case '!==':
4415
- return leftValue !== rightValue;
4416
- case 'in':
4417
- return -1 !== rightValue.indexOf( leftValue );
4418
- case '!in':
4419
- return -1 === rightValue.indexOf( leftValue );
4420
- case '<':
4421
- return leftValue < rightValue;
4422
- case '<=':
4423
- return leftValue <= rightValue;
4424
- case '>':
4425
- return leftValue > rightValue;
4426
- case '>=':
4427
- return leftValue >= rightValue;
4428
- default:
4429
- return leftValue === rightValue;
4430
  }
4431
- };
4432
 
4433
- this.check = function( conditions, comparisonObject ) {
4434
- var isOrCondition = 'or' === conditions.relation,
4435
- conditionSucceed = ! isOrCondition;
4436
 
4437
- Backbone.$.each( conditions.terms, function() {
4438
- var term = this,
4439
- comparisonResult;
4440
 
4441
- if ( term.terms ) {
4442
- comparisonResult = self.check( term, comparisonObject );
4443
- } else {
4444
- var parsedName = term.name.match( /(\w+)(?:\[(\w+)])?/ ),
4445
- value = comparisonObject[ parsedName[ 1 ] ];
4446
 
4447
- if ( parsedName[ 2 ] ) {
4448
- value = value[ parsedName[ 2 ] ];
4449
- }
4450
 
4451
- comparisonResult = self.compare( value, term.value, term.operator );
4452
- }
4453
 
4454
- if ( isOrCondition ) {
4455
- if ( comparisonResult ) {
4456
- conditionSucceed = true;
4457
- }
4458
 
4459
- return ! comparisonResult;
4460
- }
4461
 
4462
- if ( ! comparisonResult ) {
4463
- return conditionSucceed = false;
4464
- }
4465
- } );
4466
 
4467
- return conditionSucceed;
4468
- };
4469
- };
 
4470
 
4471
- module.exports = new Conditions();
 
 
 
 
4472
 
4473
- },{}],64:[function(require,module,exports){
4474
- var ViewModule = require( 'elementor-utils/view-module' ),
4475
- Stylesheet = require( 'elementor-editor-utils/stylesheet' ),
4476
- ControlsCSSParser;
4477
 
4478
- ControlsCSSParser = ViewModule.extend( {
4479
- stylesheet: null,
4480
 
4481
- getDefaultSettings: function() {
4482
- return {
4483
- id: 0
4484
- };
4485
  },
4486
 
4487
- getDefaultElements: function() {
4488
- return {
4489
- $stylesheetElement: Backbone.$( '<style>', { id: 'elementor-style-' + this.getSettings( 'id' ) } )
4490
- };
4491
  },
4492
 
4493
- initStylesheet: function() {
4494
- var viewportBreakpoints = elementor.config.viewportBreakpoints;
4495
 
4496
- this.stylesheet = new Stylesheet();
 
 
4497
 
4498
- this.stylesheet
4499
- .addDevice( 'mobile', 0 )
4500
- .addDevice( 'tablet', viewportBreakpoints.md )
4501
- .addDevice( 'desktop', viewportBreakpoints.lg );
4502
  },
4503
 
4504
- addStyleRules: function( controls, values, controlsStack, placeholders, replacements ) {
4505
- var self = this;
 
4506
 
4507
- _.each( controls, function( control ) {
4508
- if ( control.styleFields && control.styleFields.length ) {
4509
- values[ control.name ].each( function( itemModel ) {
4510
- self.addStyleRules(
4511
- control.styleFields,
4512
- itemModel.attributes,
4513
- controlsStack,
4514
- placeholders.concat( [ '{{CURRENT_ITEM}}' ] ),
4515
- replacements.concat( [ '.elementor-repeater-item-' + itemModel.get( '_id' ) ] )
4516
- );
4517
- } );
4518
- }
4519
 
4520
- self.addControlStyleRules( control, values, controlsStack, placeholders, replacements );
4521
- } );
 
 
4522
  },
4523
 
4524
- addControlStyleRules: function( control, values, controlsStack, placeholders, replacements ) {
4525
- var self = this;
4526
 
4527
- ControlsCSSParser.addControlStyleRules( self.stylesheet, control, controlsStack, function( control ) {
4528
- return self.getStyleControlValue( control, values );
4529
- }, placeholders, replacements );
4530
  },
4531
 
4532
- getStyleControlValue: function( control, values ) {
4533
- var value = values[ control.name ];
4534
 
4535
- if ( control.selectors_dictionary ) {
4536
- value = control.selectors_dictionary[ value ] || value;
4537
- }
 
 
 
 
 
 
4538
 
4539
- if ( ! _.isNumber( value ) && _.isEmpty( value ) ) {
 
4540
  return;
4541
  }
4542
 
4543
- return value;
4544
- },
4545
 
4546
- addStyleToDocument: function() {
4547
- elementor.$previewContents.find( 'head' ).append( this.elements.$stylesheetElement );
4548
 
4549
- this.elements.$stylesheetElement.text( this.stylesheet );
 
 
 
 
4550
  },
4551
 
4552
- removeStyleFromDocument: function() {
4553
- this.elements.$stylesheetElement.remove();
4554
  },
4555
 
4556
- onInit: function() {
4557
- ViewModule.prototype.onInit.apply( this, arguments );
4558
-
4559
- this.initStylesheet();
4560
- }
4561
- } );
4562
-
4563
- ControlsCSSParser.addControlStyleRules = function( stylesheet, control, controlsStack, valueCallback, placeholders, replacements ) {
4564
- var value = valueCallback( control );
4565
 
4566
- if ( undefined === value ) {
4567
- return;
4568
- }
4569
 
4570
- _.each( control.selectors, function( cssProperty, selector ) {
4571
- var outputCssProperty;
4572
 
4573
- try {
4574
- outputCssProperty = cssProperty.replace( /{{(?:([^.}]+)\.)?([^}]*)}}/g, function( originalPhrase, controlName, placeholder ) {
4575
- var parserControl = control,
4576
- valueToInsert = value;
4577
 
4578
- if ( controlName ) {
4579
- parserControl = _.findWhere( controlsStack, { name: controlName } );
4580
 
4581
- if ( ! parserControl ) {
4582
- return '';
4583
- }
4584
 
4585
- valueToInsert = valueCallback( parserControl );
4586
- }
4587
 
4588
- var parsedValue = elementor.getControlView( parserControl.type ).getStyleValue( placeholder.toLowerCase(), valueToInsert );
 
4589
 
4590
- if ( '' === parsedValue ) {
4591
- throw '';
4592
- }
4593
 
4594
- return parsedValue;
4595
- } );
4596
- } catch ( e ) {
4597
- return;
4598
- }
4599
 
4600
- if ( _.isEmpty( outputCssProperty ) ) {
4601
- return;
 
 
4602
  }
4603
 
4604
- var devicePattern = /^(?:\([^)]+\)){1,2}/,
4605
- deviceRules = selector.match( devicePattern ),
4606
- query = {};
4607
-
4608
- if ( deviceRules ) {
4609
- deviceRules = deviceRules[0];
4610
-
4611
- selector = selector.replace( devicePattern, '' );
4612
 
4613
- var pureDevicePattern = /\(([^)]+)\)/g,
4614
- pureDeviceRules = [],
4615
- matches;
4616
 
4617
- while ( matches = pureDevicePattern.exec( deviceRules ) ) {
4618
- pureDeviceRules.push( matches[1] );
4619
- }
 
 
4620
 
4621
- _.each( pureDeviceRules, function( deviceRule ) {
4622
- if ( 'desktop' === deviceRule ) {
4623
- return;
4624
- }
4625
 
4626
- var device = deviceRule.replace( /\+$/, '' ),
4627
- endPoint = device === deviceRule ? 'max' : 'min';
4628
 
4629
- query[ endPoint ] = device;
4630
- } );
4631
  }
4632
 
4633
- _.each( placeholders, function( placeholder, index ) {
4634
- // Check if it's a RegExp
4635
- var regexp = placeholder.source ? placeholder.source : placeholder,
4636
- placeholderPattern = new RegExp( regexp, 'g' );
4637
 
4638
- selector = selector.replace( placeholderPattern, replacements[ index ] );
 
 
 
 
 
4639
  } );
4640
 
4641
- if ( ! Object.keys( query ).length && control.responsive ) {
4642
- query = _.pick( elementor.helpers.cloneObject( control.responsive ), [ 'min', 'max' ] );
 
4643
 
4644
- if ( 'desktop' === query.max ) {
4645
- delete query.max;
4646
- }
4647
- }
4648
 
4649
- stylesheet.addRules( selector, outputCssProperty, query );
4650
- } );
4651
  };
4652
 
4653
- module.exports = ControlsCSSParser;
 
 
4654
 
4655
- },{"elementor-editor-utils/stylesheet":74,"elementor-utils/view-module":117}],65:[function(require,module,exports){
4656
- var Debug = function() {
4657
- var self = this,
4658
- errorStack = [],
4659
- settings = {},
4660
- elements = {};
 
 
 
4661
 
4662
- var initSettings = function() {
4663
- settings = {
4664
- debounceDelay: 500,
4665
- urlsToWatch: [
4666
- 'elementor/assets'
4667
- ]
4668
- };
4669
- };
4670
 
4671
- var initElements = function() {
4672
- elements.$window = jQuery( window );
4673
- };
4674
 
4675
- var onError = function( event ) {
4676
- var originalEvent = event.originalEvent,
4677
- error = originalEvent.error;
4678
 
4679
- if ( ! error ) {
4680
- return;
4681
- }
4682
 
4683
- var isInWatchList = false,
4684
- urlsToWatch = settings.urlsToWatch;
 
4685
 
4686
- jQuery.each( urlsToWatch, function() {
4687
- if ( -1 !== error.stack.indexOf( this ) ) {
4688
- isInWatchList = true;
4689
 
4690
- return false;
4691
- }
4692
- } );
4693
 
4694
- if ( ! isInWatchList ) {
4695
- return;
4696
- }
4697
 
4698
- self.addError( {
4699
- type: error.name,
4700
- message: error.message,
4701
- url: originalEvent.filename,
4702
- line: originalEvent.lineno,
4703
- column: originalEvent.colno
4704
- } );
4705
- };
4706
 
4707
- var bindEvents = function() {
4708
- elements.$window.on( 'error', onError );
4709
- };
4710
 
4711
- var init = function() {
4712
- initSettings();
4713
 
4714
- initElements();
4715
 
4716
- bindEvents();
4717
 
4718
- self.sendErrors = _.debounce( self.sendErrors, settings.debounceDelay );
4719
- };
 
4720
 
4721
- this.addURLToWatch = function( url ) {
4722
- settings.urlsToWatch.push( url );
4723
- };
4724
 
4725
- this.addCustomError = function( error, category, tag ) {
4726
- var errorInfo = {
4727
- type: error.name,
4728
- message: error.message,
4729
- url: error.fileName || error.sourceURL,
4730
- line: error.lineNumber || error.line,
4731
- column: error.columnNumber || error.column,
4732
- customFields: {
4733
- category: category || 'general',
4734
- tag: tag
4735
- }
4736
- };
4737
 
4738
- if ( ! errorInfo.url ) {
4739
- var stackInfo = error.stack.match( /\n {4}at (.*?(?=:(\d+):(\d+)))/ );
4740
 
4741
- if ( stackInfo ) {
4742
- errorInfo.url = stackInfo[1];
4743
- errorInfo.line = stackInfo[2];
4744
- errorInfo.column = stackInfo[3];
 
 
4745
  }
4746
- }
 
4747
 
4748
- this.addError( errorInfo );
4749
- };
4750
 
4751
- this.addError = function( errorParams ) {
4752
- var defaultParams = {
4753
- type: 'Error',
4754
- timestamp: Math.floor( new Date().getTime() / 1000 ),
4755
- message: null,
4756
- url: null,
4757
- line: null,
4758
- column: null,
4759
- customFields: {}
4760
- };
4761
 
4762
- errorStack.push( jQuery.extend( true, defaultParams, errorParams ) );
 
4763
 
4764
- self.sendErrors();
4765
- };
 
 
 
4766
 
4767
- this.sendErrors = function() {
4768
- // Avoid recursions on errors in ajax
4769
- elements.$window.off( 'error', onError );
4770
 
4771
- jQuery.ajax( {
4772
- url: ElementorConfig.ajaxurl,
4773
- method: 'POST',
4774
- data: {
4775
- action: 'elementor_debug_log',
4776
- data: errorStack
4777
- },
4778
- success: function() {
4779
- errorStack = [];
4780
 
4781
- // Restore error handler
4782
- elements.$window.on( 'error', onError );
4783
- }
4784
- } );
4785
- };
4786
 
4787
- init();
4788
- };
 
4789
 
4790
- module.exports = new Debug();
 
 
 
4791
 
4792
- },{}],66:[function(require,module,exports){
4793
- var heartbeat;
4794
 
4795
- heartbeat = {
 
 
 
4796
 
4797
- init: function() {
4798
- var modal;
4799
 
4800
- this.getModal = function() {
4801
- if ( ! modal ) {
4802
- modal = this.initModal();
 
 
 
 
 
4803
  }
 
 
4804
 
4805
- return modal;
4806
- };
 
 
 
 
 
 
4807
 
4808
- Backbone.$( document ).on( {
4809
- 'heartbeat-send': function( event, data ) {
4810
- data.elementor_post_lock = {
4811
- post_ID: elementor.config.post_id
4812
- };
4813
- },
4814
- 'heartbeat-tick': function( event, response ) {
4815
- if ( response.locked_user ) {
4816
- if ( elementor.isEditorChanged() ) {
4817
- elementor.saveEditor( { status: 'autosave' } );
4818
- }
4819
 
4820
- heartbeat.showLockMessage( response.locked_user );
4821
- } else {
4822
- heartbeat.getModal().hide();
4823
- }
4824
 
4825
- elementor.config.nonce = response.elementor_nonce;
4826
- }
4827
- } );
4828
 
4829
- if ( elementor.config.locked_user ) {
4830
- heartbeat.showLockMessage( elementor.config.locked_user );
4831
- }
 
 
4832
  },
4833
 
4834
- initModal: function() {
4835
- var modal = elementor.dialogsManager.createWidget( 'options', {
4836
- headerMessage: elementor.translate( 'take_over' )
4837
- } );
4838
 
4839
- modal.addButton( {
4840
- name: 'go_back',
4841
- text: elementor.translate( 'go_back' ),
4842
- callback: function() {
4843
- parent.history.go( -1 );
4844
- }
4845
- } );
4846
 
4847
- modal.addButton( {
4848
- name: 'take_over',
4849
- text: elementor.translate( 'take_over' ),
4850
- callback: function() {
4851
- wp.heartbeat.enqueue( 'elementor_force_post_lock', true );
4852
- wp.heartbeat.connectNow();
4853
  }
4854
  } );
4855
 
4856
- return modal;
 
 
4857
  },
4858
 
4859
- showLockMessage: function( lockedUser ) {
4860
- var modal = heartbeat.getModal();
4861
 
4862
- modal
4863
- .setMessage( elementor.translate( 'dialog_user_taken_over', [ lockedUser ] ) )
4864
- .show();
4865
  }
4866
- };
4867
-
4868
- module.exports = heartbeat;
4869
 
4870
- },{}],67:[function(require,module,exports){
4871
- var helpers;
4872
 
4873
- helpers = {
4874
- _enqueuedFonts: [],
 
 
4875
 
4876
- elementsHierarchy: {
4877
- section: {
4878
- column: {
4879
- widget: null,
4880
- section: null
4881
- }
4882
- }
4883
  },
4884
 
4885
- enqueueFont: function( font ) {
4886
- if ( -1 !== this._enqueuedFonts.indexOf( font ) ) {
4887
- return;
4888
- }
4889
 
4890
- var fontType = elementor.config.controls.font.fonts[ font ],
4891
- fontUrl,
 
 
 
4892
 
4893
- subsets = {
4894
- 'ru_RU': 'cyrillic',
4895
- 'uk': 'cyrillic',
4896
- 'bg_BG': 'cyrillic',
4897
- 'vi': 'vietnamese',
4898
- 'el': 'greek',
4899
- 'he_IL': 'hebrew'
4900
- };
4901
 
4902
- switch ( fontType ) {
4903
- case 'googlefonts' :
4904
- fontUrl = 'https://fonts.googleapis.com/css?family=' + font + ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';
4905
 
4906
- if ( subsets[ elementor.config.locale ] ) {
4907
- fontUrl += '&subset=' + subsets[ elementor.config.locale ];
4908
- }
 
 
4909
 
4910
- break;
4911
 
4912
- case 'earlyaccess' :
4913
- var fontLowerString = font.replace( /\s+/g, '' ).toLowerCase();
4914
- fontUrl = 'https://fonts.googleapis.com/earlyaccess/' + fontLowerString + '.css';
4915
- break;
4916
  }
 
 
4917
 
4918
- if ( ! _.isEmpty( fontUrl ) ) {
4919
- elementor.$previewContents.find( 'link:last' ).after( '<link href="' + fontUrl + '" rel="stylesheet" type="text/css">' );
4920
- }
4921
- this._enqueuedFonts.push( font );
4922
- },
4923
 
4924
- getElementChildType: function( elementType, container ) {
4925
- if ( ! container ) {
4926
- container = this.elementsHierarchy;
4927
- }
4928
 
4929
- if ( undefined !== container[ elementType ] ) {
 
4930
 
4931
- if ( Backbone.$.isPlainObject( container[ elementType ] ) ) {
4932
- return Object.keys( container[ elementType ] );
4933
- }
4934
 
4935
- return null;
 
 
 
4936
  }
 
4937
 
4938
- for ( var type in container ) {
 
4939
 
4940
- if ( ! container.hasOwnProperty( type ) ) {
4941
- continue;
4942
- }
4943
-
4944
- if ( ! Backbone.$.isPlainObject( container[ type ] ) ) {
4945
- continue;
4946
- }
4947
-
4948
- var result = this.getElementChildType( elementType, container[ type ] );
4949
 
4950
- if ( result ) {
4951
- return result;
4952
- }
4953
- }
4954
 
4955
- return null;
 
 
 
 
4956
  },
4957
 
4958
- getUniqueID: function() {
4959
- var id;
4960
-
4961
- // TODO: Check conflict models
4962
- //while ( true ) {
4963
- id = Math.random().toString( 36 ).substr( 2, 7 );
4964
- //if ( 1 > $( 'li.item-id-' + id ).length ) {
4965
- return id;
4966
- //}
4967
- //}
4968
  },
4969
 
4970
- stringReplaceAll: function( string, replaces ) {
4971
- var re = new RegExp( Object.keys( replaces ).join( '|' ), 'gi' );
4972
-
4973
- return string.replace( re, function( matched ) {
4974
- return replaces[ matched ];
4975
- } );
4976
  },
4977
 
4978
- isActiveControl: function( controlModel, values ) {
4979
- var condition;
4980
-
4981
- // TODO: Better way to get this?
4982
- if ( _.isFunction( controlModel.get ) ) {
4983
- condition = controlModel.get( 'condition' );
4984
- } else {
4985
- condition = controlModel.condition;
4986
- }
4987
-
4988
- // Repeater items conditions
4989
- if ( controlModel.conditions ) {
4990
- return elementor.conditions.check( controlModel.conditions, values );
4991
- }
4992
-
4993
- if ( _.isEmpty( condition ) ) {
4994
- return true;
4995
- }
4996
 
4997
- var hasFields = _.filter( condition, function( conditionValue, conditionName ) {
4998
- var conditionNameParts = conditionName.match( /([a-z_0-9]+)(?:\[([a-z_]+)])?(!?)$/i ),
4999
- conditionRealName = conditionNameParts[1],
5000
- conditionSubKey = conditionNameParts[2],
5001
- isNegativeCondition = !! conditionNameParts[3],
5002
- controlValue = values[ conditionRealName ];
5003
 
5004
- if ( conditionSubKey ) {
5005
- controlValue = controlValue[ conditionSubKey ];
5006
- }
 
5007
 
5008
- // If it's a non empty array - check if the conditionValue contains the controlValue,
5009
- // If the controlValue is a non empty array - check if the controlValue contains the conditionValue
5010
- // otherwise check if they are equal. ( and give the ability to check if the value is an empty array )
5011
- var isContains;
5012
- if ( _.isArray( conditionValue ) && ! _.isEmpty( conditionValue ) ) {
5013
- isContains = _.contains( conditionValue, controlValue );
5014
- } else if ( _.isArray( controlValue ) && ! _.isEmpty( controlValue ) ) {
5015
- isContains = _.contains( controlValue, conditionValue );
5016
- } else {
5017
- isContains = _.isEqual( conditionValue, controlValue );
5018
- }
5019
 
5020
- return isNegativeCondition ? isContains : ! isContains;
5021
- } );
5022
 
5023
- return _.isEmpty( hasFields );
 
 
 
 
 
 
 
 
5024
  },
5025
 
5026
- cloneObject: function( object ) {
5027
- return JSON.parse( JSON.stringify( object ) );
5028
  },
5029
 
5030
- disableElementEvents: function( $element ) {
5031
- $element.each( function() {
5032
- var currentPointerEvents = this.style.pointerEvents;
5033
 
5034
- if ( 'none' === currentPointerEvents ) {
5035
- return;
5036
- }
5037
 
5038
- Backbone.$( this )
5039
- .data( 'backup-pointer-events', currentPointerEvents )
5040
- .css( 'pointer-events', 'none' );
5041
- } );
5042
- },
5043
 
5044
- enableElementEvents: function( $element ) {
5045
- $element.each( function() {
5046
- var $this = Backbone.$( this ),
5047
- backupPointerEvents = $this.data( 'backup-pointer-events' );
5048
 
5049
- if ( undefined === backupPointerEvents ) {
5050
- return;
5051
- }
 
 
 
 
5052
 
5053
- $this
5054
- .removeData( 'backup-pointer-events' )
5055
- .css( 'pointer-events', backupPointerEvents );
5056
- } );
5057
- },
5058
 
5059
- getColorPickerPaletteIndex: function( paletteKey ) {
5060
- return [ '7', '8', '1', '5', '2', '3', '6', '4' ].indexOf( paletteKey );
5061
- },
 
 
5062
 
5063
- wpColorPicker: function( $element, options ) {
5064
- var self = this,
5065
- colorPickerScheme = elementor.schemes.getScheme( 'color-picker' ),
5066
- items = _.sortBy( colorPickerScheme.items, function( item ) {
5067
- return self.getColorPickerPaletteIndex( item.key );
5068
- } ),
5069
- defaultOptions = {
5070
- width: window.innerWidth >= 1440 ? 271 : 251,
5071
- palettes: _.pluck( items, 'value' )
5072
  };
5073
 
5074
- if ( options ) {
5075
- _.extend( defaultOptions, options );
 
 
 
5076
  }
5077
 
5078
- return $element.wpColorPicker( defaultOptions );
5079
- },
5080
-
5081
- isInViewport: function( element, html ) {
5082
- var rect = element.getBoundingClientRect();
5083
- html = html || document.documentElement;
5084
- return (
5085
- rect.top >= 0 &&
5086
- rect.left >= 0 &&
5087
- rect.bottom <= ( window.innerHeight || html.clientHeight ) &&
5088
- rect.right <= ( window.innerWidth || html.clientWidth )
5089
- );
5090
- },
5091
-
5092
- scrollToView: function( view ) {
5093
- // Timeout according to preview resize css animation duration
5094
- setTimeout( function() {
5095
- elementor.$previewContents.find( 'html, body' ).animate( {
5096
- scrollTop: view.$el.offset().top - elementor.$preview[0].contentWindow.innerHeight / 2
5097
- } );
5098
- }, 500 );
5099
  }
5100
  };
5101
 
5102
- module.exports = helpers;
5103
 
5104
- },{}],68:[function(require,module,exports){
5105
- var ImagesManager;
5106
 
5107
- ImagesManager = function() {
5108
  var self = this;
5109
 
5110
- var cache = {};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5111
 
5112
- var debounceDelay = 300;
 
 
5113
 
5114
- var registeredItems = [];
 
 
5115
 
5116
- var getNormalizedSize = function( image ) {
5117
- var size,
5118
- imageSize = image.size;
 
 
5119
 
5120
- if ( 'custom' === imageSize ) {
5121
- var customDimension = image.dimension;
 
5122
 
5123
- if ( customDimension.width || customDimension.height ) {
5124
- size = 'custom_' + customDimension.width + 'x' + customDimension.height;
5125
- } else {
5126
- return 'full';
5127
  }
5128
- } else {
5129
- size = imageSize;
5130
- }
5131
 
5132
- return size;
5133
- };
 
 
5134
 
5135
- self.onceTriggerChange = _.once( function( model ) {
5136
- window.setTimeout( function() {
5137
- model.get( 'settings' ).trigger( 'change', model.get( 'settings' ) );
5138
- }, 700 );
5139
- } );
5140
-
5141
- self.getImageUrl = function( image ) {
5142
- // Register for AJAX checking
5143
- self.registerItem( image );
5144
-
5145
- var imageUrl = self.getItem( image );
5146
-
5147
- // If it's not in cache, like a new dropped widget or a custom size - get from settings
5148
- if ( ! imageUrl ) {
5149
-
5150
- if ( 'custom' === image.size ) {
5151
-
5152
- if ( elementor.getPanelView() && 'editor' === elementor.getPanelView().currentPageName && image.model ) {
5153
- // Trigger change again, so it's will load from the cache
5154
- self.onceTriggerChange( image.model );
5155
- }
5156
-
5157
- return;
5158
  }
5159
 
5160
- // If it's a new dropped widget
5161
- imageUrl = image.url;
5162
- }
 
5163
 
5164
- return imageUrl;
5165
  };
 
5166
 
5167
- self.getItem = function( image ) {
5168
- var size = getNormalizedSize( image ),
5169
- id = image.id;
5170
 
5171
- if ( ! size ) {
5172
- return false;
5173
- }
 
5174
 
5175
- if ( cache[ id ] && cache[ id ][ size ] ) {
5176
- return cache[ id ][ size ];
5177
- }
5178
 
5179
- return false;
5180
- };
 
 
 
5181
 
5182
- self.registerItem = function( image ) {
5183
- if ( '' === image.id ) {
5184
- // It's a new dropped widget
5185
- return;
5186
- }
5187
 
5188
- if ( self.getItem( image ) ) {
5189
- // It's already in cache
5190
- return;
5191
- }
5192
 
5193
- registeredItems.push( image );
5194
 
5195
- self.debounceGetRemoteItems();
5196
- };
 
 
 
5197
 
5198
- self.getRemoteItems = function() {
5199
- var requestedItems = [],
5200
- registeredItemsLength = Object.keys( registeredItems ).length,
5201
- image,
5202
- index;
5203
 
5204
- // It's one item, so we can render it from remote server
5205
- if ( 0 === registeredItemsLength ) {
5206
- return;
5207
- } else if ( 1 === registeredItemsLength ) {
5208
- for ( index in registeredItems ) {
5209
- image = registeredItems[ index ];
5210
- break;
 
 
 
 
5211
  }
5212
 
5213
- if ( image && image.model ) {
5214
- image.model.renderRemoteServer();
5215
- return;
5216
- }
5217
- }
5218
 
5219
- for ( index in registeredItems ) {
5220
- image = registeredItems[ index ];
5221
 
5222
- var size = getNormalizedSize( image ),
5223
- id = image.id,
5224
- isFirstTime = ! cache[ id ] || 0 === Object.keys( cache[ id ] ).length;
 
5225
 
5226
- requestedItems.push( {
5227
- id: id,
5228
- size: size,
5229
- is_first_time: isFirstTime
5230
- } );
5231
  }
5232
 
5233
- window.elementor.ajax.send(
5234
- 'get_images_details', {
5235
- data: {
5236
- items: requestedItems
5237
- },
5238
- success: function( data ) {
5239
- var id,
5240
- size;
5241
 
5242
- for ( id in data ) {
5243
- if ( ! cache[ id ] ) {
5244
- cache[ id ] = {};
5245
- }
5246
 
5247
- for ( size in data[ id ] ) {
5248
- cache[ id ][ size ] = data[ id ][ size ];
5249
- }
5250
- }
5251
- registeredItems = [];
5252
- }
5253
- }
5254
- );
5255
- };
5256
 
5257
- self.debounceGetRemoteItems = _.debounce( self.getRemoteItems, debounceDelay );
5258
- };
5259
 
5260
- module.exports = new ImagesManager();
 
 
5261
 
5262
- },{}],69:[function(require,module,exports){
5263
- var Introduction;
5264
 
5265
- Introduction = function() {
5266
- var self = this,
5267
- modal;
5268
 
5269
- var initModal = function() {
5270
- modal = elementor.dialogsManager.createWidget( 'lightbox', {
5271
- id: 'elementor-introduction',
5272
- closeButton: true,
5273
- closeButtonClass: 'eicon-close'
5274
- } );
5275
 
5276
- modal.getElements( 'closeButton' ).on( 'click', function() {
5277
- self.setIntroductionViewed();
5278
- } );
5279
 
5280
- modal.on( 'hide', function() {
5281
- modal.getElements( 'message' ).empty(); // In order to stop the video
5282
- } );
5283
- };
5284
 
5285
- this.getSettings = function() {
5286
- return elementor.config.introduction;
5287
- };
 
5288
 
5289
- this.getModal = function() {
5290
- if ( ! modal ) {
5291
- initModal();
5292
- }
5293
 
5294
- return modal;
5295
- };
 
5296
 
5297
- this.startIntroduction = function() {
5298
- var settings = this.getSettings();
5299
 
5300
- this.getModal()
5301
- .setHeaderMessage( settings.title )
5302
- .setMessage( settings.content )
5303
- .show();
5304
- };
5305
 
5306
- this.startOnLoadIntroduction = function() {
5307
- var settings = this.getSettings();
 
5308
 
5309
- if ( ! settings.is_user_should_view ) {
 
 
5310
  return;
5311
  }
5312
 
5313
- setTimeout( _.bind( function() {
5314
- this.startIntroduction();
5315
- }, this ), settings.delay );
5316
- };
5317
 
5318
- this.setIntroductionViewed = function() {
5319
- elementor.ajax.send( 'introduction_viewed' );
5320
- };
5321
- };
5322
 
5323
- module.exports = new Introduction();
 
5324
 
5325
- },{}],70:[function(require,module,exports){
5326
- /**
5327
- * HTML5 - Drag and Drop
5328
- */
5329
- ;(function( $ ) {
5330
-
5331
- var hasFullDataTransferSupport = function( event ) {
5332
- try {
5333
- event.originalEvent.dataTransfer.setData( 'test', 'test' );
5334
-
5335
- event.originalEvent.dataTransfer.clearData( 'test' );
5336
 
5337
- return true;
5338
- } catch ( e ) {
5339
- return false;
5340
- }
5341
- };
5342
 
5343
- var Draggable = function( userSettings ) {
5344
- var self = this,
5345
- settings = {},
5346
- elementsCache = {},
5347
- defaultSettings = {
5348
- element: '',
5349
- groups: null,
5350
- onDragStart: null,
5351
- onDragEnd: null
5352
- };
5353
 
5354
- var initSettings = function() {
5355
- $.extend( true, settings, defaultSettings, userSettings );
5356
- };
 
5357
 
5358
- var initElementsCache = function() {
5359
- elementsCache.$element = $( settings.element );
5360
- };
5361
 
5362
- var buildElements = function() {
5363
- elementsCache.$element.attr( 'draggable', true );
5364
- };
5365
 
5366
- var onDragEnd = function( event ) {
5367
- if ( $.isFunction( settings.onDragEnd ) ) {
5368
- settings.onDragEnd.call( elementsCache.$element, event, self );
5369
- }
5370
- };
5371
 
5372
- var onDragStart = function( event ) {
5373
- var groups = settings.groups || [],
5374
- dataContainer = {
5375
- groups: groups
5376
- };
5377
 
5378
- if ( hasFullDataTransferSupport( event ) ) {
5379
- event.originalEvent.dataTransfer.setData( JSON.stringify( dataContainer ), true );
5380
- }
5381
 
5382
- if ( $.isFunction( settings.onDragStart ) ) {
5383
- settings.onDragStart.call( elementsCache.$element, event, self );
5384
  }
5385
- };
5386
-
5387
- var attachEvents = function() {
5388
- elementsCache.$element
5389
- .on( 'dragstart', onDragStart )
5390
- .on( 'dragend', onDragEnd );
5391
- };
5392
-
5393
- var init = function() {
5394
- initSettings();
5395
-
5396
- initElementsCache();
5397
 
5398
- buildElements();
 
 
5399
 
5400
- attachEvents();
5401
- };
5402
 
5403
- this.destroy = function() {
5404
- elementsCache.$element.off( 'dragstart', onDragStart );
 
 
 
 
5405
 
5406
- elementsCache.$element.removeAttr( 'draggable' );
 
 
 
 
 
5407
  };
5408
-
5409
- init();
5410
  };
5411
 
5412
- var Droppable = function( userSettings ) {
5413
- var self = this,
5414
- settings = {},
5415
- elementsCache = {},
5416
- currentElement,
5417
- currentSide,
5418
- defaultSettings = {
5419
- element: '',
5420
- items: '>',
5421
- horizontalSensitivity: '10%',
5422
- axis: [ 'vertical', 'horizontal' ],
5423
- placeholder: true,
5424
- currentElementClass: 'html5dnd-current-element',
5425
- placeholderClass: 'html5dnd-placeholder',
5426
- hasDraggingOnChildClass: 'html5dnd-has-dragging-on-child',
5427
- groups: null,
5428
- isDroppingAllowed: null,
5429
- onDragEnter: null,
5430
- onDragging: null,
5431
- onDropping: null,
5432
- onDragLeave: null
5433
- };
5434
-
5435
- var initSettings = function() {
5436
- $.extend( settings, defaultSettings, userSettings );
5437
- };
5438
-
5439
- var initElementsCache = function() {
5440
- elementsCache.$element = $( settings.element );
5441
 
5442
- elementsCache.$placeholder = $( '<div>', { 'class': settings.placeholderClass } );
5443
- };
 
5444
 
5445
- var hasHorizontalDetection = function() {
5446
- return -1 !== settings.axis.indexOf( 'horizontal' );
5447
- };
5448
 
5449
- var hasVerticalDetection = function() {
5450
- return -1 !== settings.axis.indexOf( 'vertical' );
5451
- };
5452
 
5453
- var checkHorizontal = function( offsetX, elementWidth ) {
5454
- var isPercentValue,
5455
- sensitivity;
5456
 
5457
- if ( ! hasHorizontalDetection() ) {
5458
  return false;
5459
  }
 
5460
 
5461
- if ( ! hasVerticalDetection() ) {
5462
- return offsetX > elementWidth / 2 ? 'right' : 'left';
5463
- }
5464
-
5465
- sensitivity = settings.horizontalSensitivity.match( /\d+/ );
5466
-
5467
- if ( ! sensitivity ) {
5468
- return false;
5469
- }
5470
 
5471
- sensitivity = sensitivity[0];
 
 
 
 
 
 
 
5472
 
5473
- isPercentValue = /%$/.test( settings.horizontalSensitivity );
 
 
5474
 
5475
- if ( isPercentValue ) {
5476
- sensitivity = elementWidth / sensitivity;
5477
- }
5478
 
5479
- if ( offsetX > elementWidth - sensitivity ) {
5480
- return 'right';
5481
- } else if ( offsetX < sensitivity ) {
5482
- return 'left';
5483
- }
5484
 
5485
- return false;
5486
- };
5487
 
5488
- var setSide = function( event ) {
5489
- var $element = $( currentElement ),
5490
- elementHeight = $element.outerHeight() - elementsCache.$placeholder.outerHeight(),
5491
- elementWidth = $element.outerWidth();
5492
 
5493
- event = event.originalEvent;
 
 
5494
 
5495
- if ( currentSide = checkHorizontal( event.offsetX, elementWidth ) ) {
5496
- return;
 
 
 
 
 
 
 
 
5497
  }
 
5498
 
5499
- if ( ! hasVerticalDetection() ) {
5500
- currentSide = null;
5501
 
5502
- return;
 
 
 
5503
  }
 
5504
 
5505
- var elementPosition = currentElement.getBoundingClientRect();
 
5506
 
5507
- currentSide = event.clientY > elementPosition.top + elementHeight / 2 ? 'bottom' : 'top';
 
 
 
 
 
 
 
 
5508
  };
5509
 
5510
- var insertPlaceholder = function() {
5511
- if ( ! settings.placeholder ) {
5512
- return;
5513
- }
5514
 
5515
- var insertMethod = 'top' === currentSide ? 'prependTo' : 'appendTo';
 
5516
 
5517
- elementsCache.$placeholder[ insertMethod ]( currentElement );
5518
- };
 
5519
 
5520
- var isDroppingAllowed = function( event ) {
5521
- var dataTransferTypes,
5522
- draggableGroups,
5523
- isGroupMatch,
5524
- isDroppingAllowed;
 
 
 
 
5525
 
5526
- if ( settings.groups && hasFullDataTransferSupport( event ) ) {
5527
- dataTransferTypes = event.originalEvent.dataTransfer.types;
 
 
 
5528
 
5529
- isGroupMatch = false;
 
5530
 
5531
- dataTransferTypes = Array.prototype.slice.apply( dataTransferTypes ); // Convert to array, since Firefox hold it as DOMStringList
5532
 
5533
- dataTransferTypes.forEach( function( type ) {
5534
- try {
5535
- draggableGroups = JSON.parse( type );
5536
 
5537
- if ( ! draggableGroups.groups.slice ) {
5538
- return;
5539
- }
5540
 
5541
- settings.groups.forEach( function( groupName ) {
 
5542
 
5543
- if ( -1 !== draggableGroups.groups.indexOf( groupName ) ) {
5544
- isGroupMatch = true;
 
 
5545
 
5546
- return false; // stops the forEach from extra loops
5547
- }
5548
- } );
5549
- } catch ( e ) {
 
 
 
 
 
 
 
 
 
5550
  }
5551
- } );
5552
 
5553
- if ( ! isGroupMatch ) {
5554
- return false;
 
5555
  }
 
 
5556
  }
 
5557
 
5558
- if ( $.isFunction( settings.isDroppingAllowed ) ) {
 
 
 
5559
 
5560
- isDroppingAllowed = settings.isDroppingAllowed.call( currentElement, currentSide, event, self );
 
 
 
5561
 
5562
- if ( ! isDroppingAllowed ) {
5563
- return false;
5564
- }
 
 
5565
  }
 
5566
 
5567
- return true;
5568
- };
5569
-
5570
- var onDragEnter = function( event ) {
5571
- event.stopPropagation();
5572
-
5573
- if ( currentElement ) {
5574
- return;
5575
  }
 
5576
 
5577
- currentElement = this;
 
5578
 
5579
- elementsCache.$element.parents().each( function() {
5580
- var droppableInstance = $( this ).data( 'html5Droppable' );
5581
 
5582
- if ( ! droppableInstance ) {
5583
- return;
5584
- }
 
 
5585
 
5586
- droppableInstance.doDragLeave();
5587
- } );
5588
 
5589
- setSide( event );
 
5590
 
5591
- if ( ! isDroppingAllowed( event ) ) {
5592
- return;
 
 
 
 
 
 
5593
  }
 
 
5594
 
5595
- insertPlaceholder();
 
 
 
5596
 
5597
- elementsCache.$element.addClass( settings.hasDraggingOnChildClass );
 
5598
 
5599
- $( currentElement ).addClass( settings.currentElementClass );
 
 
 
 
 
 
 
5600
 
5601
- if ( $.isFunction( settings.onDragEnter ) ) {
5602
- settings.onDragEnter.call( currentElement, currentSide, event, self );
5603
- }
5604
- };
5605
 
5606
- var onDragOver = function( event ) {
5607
- event.stopPropagation();
 
5608
 
5609
- if ( ! currentElement ) {
5610
- onDragEnter.call( this, event );
5611
- }
5612
 
5613
- var oldSide = currentSide;
 
 
 
 
5614
 
5615
- setSide( event );
 
 
 
 
5616
 
5617
- if ( ! isDroppingAllowed( event ) ) {
5618
- return;
5619
- }
 
5620
 
5621
- event.preventDefault();
5622
 
5623
- if ( oldSide !== currentSide ) {
5624
- insertPlaceholder();
5625
  }
5626
 
5627
- if ( $.isFunction( settings.onDragging ) ) {
5628
- settings.onDragging.call( this, currentSide, event, self );
5629
- }
5630
- };
5631
 
5632
- var onDragLeave = function( event ) {
5633
- var elementPosition = this.getBoundingClientRect();
5634
 
5635
- if ( 'dragleave' === event.type && ! (
5636
- event.clientX < elementPosition.left ||
5637
- event.clientX >= elementPosition.right ||
5638
- event.clientY < elementPosition.top ||
5639
- event.clientY >= elementPosition.bottom
5640
- ) ) {
5641
- return;
5642
  }
5643
 
5644
- $( currentElement ).removeClass( settings.currentElementClass );
5645
-
5646
- self.doDragLeave();
5647
- };
5648
-
5649
- var onDrop = function( event ) {
5650
- setSide( event );
5651
-
5652
- if ( ! isDroppingAllowed( event ) ) {
5653
- return;
5654
  }
5655
 
5656
- event.preventDefault();
5657
 
5658
- if ( $.isFunction( settings.onDropping ) ) {
5659
- settings.onDropping.call( this, currentSide, event, self );
5660
  }
5661
- };
5662
-
5663
- var attachEvents = function() {
5664
- elementsCache.$element
5665
- .on( 'dragenter', settings.items, onDragEnter )
5666
- .on( 'dragover', settings.items, onDragOver )
5667
- .on( 'drop', settings.items, onDrop )
5668
- .on( 'dragleave drop', settings.items, onDragLeave );
5669
- };
5670
-
5671
- var init = function() {
5672
- initSettings();
5673
 
5674
- initElementsCache();
 
5675
 
5676
- attachEvents();
5677
- };
5678
 
5679
- this.doDragLeave = function() {
5680
- if ( settings.placeholder ) {
5681
- elementsCache.$placeholder.remove();
5682
- }
 
 
 
 
5683
 
5684
- elementsCache.$element.removeClass( settings.hasDraggingOnChildClass );
 
5685
 
5686
- if ( $.isFunction( settings.onDragLeave ) ) {
5687
- settings.onDragLeave.call( currentElement, event, self );
5688
- }
 
5689
 
5690
- currentElement = currentSide = null;
5691
- };
5692
 
5693
- this.destroy = function() {
5694
- elementsCache.$element
5695
- .off( 'dragenter', settings.items, onDragEnter )
5696
- .off( 'dragover', settings.items, onDragOver )
5697
- .off( 'drop', settings.items, onDrop )
5698
- .off( 'dragleave drop', settings.items, onDragLeave );
5699
- };
5700
 
5701
- init();
5702
- };
 
 
5703
 
5704
- var plugins = {
5705
- html5Draggable: Draggable,
5706
- html5Droppable: Droppable
5707
- };
5708
 
5709
- $.each( plugins, function( pluginName, Plugin ) {
5710
- $.fn[ pluginName ] = function( options ) {
5711
- options = options || {};
 
 
 
5712
 
5713
- this.each( function() {
5714
- var instance = $.data( this, pluginName ),
5715
- hasInstance = instance instanceof Plugin;
5716
 
5717
- if ( hasInstance ) {
 
 
 
 
 
 
 
 
 
 
5718
 
5719
- if ( 'destroy' === options ) {
 
5720
 
5721
- instance.destroy();
 
5722
 
5723
- $.removeData( this, pluginName );
5724
- }
 
5725
 
5726
- return;
5727
- }
 
5728
 
5729
- options.element = this;
 
 
5730
 
5731
- $.data( this, pluginName, new Plugin( options ) );
5732
- } );
 
 
 
5733
 
5734
- return this;
5735
- };
5736
- } );
5737
- })( jQuery );
5738
 
5739
- },{}],71:[function(require,module,exports){
5740
- /*!
5741
- * jQuery Serialize Object v1.0.1
5742
- */
5743
- (function( $ ) {
5744
- $.fn.elementorSerializeObject = function() {
5745
- var serializedArray = this.serializeArray(),
5746
- data = {};
5747
 
5748
- var parseObject = function( dataContainer, key, value ) {
5749
- var isArrayKey = /^[^\[\]]+\[]/.test( key ),
5750
- isObjectKey = /^[^\[\]]+\[[^\[\]]+]/.test( key ),
5751
- keyName = key.replace( /\[.*/, '' );
 
5752
 
5753
- if ( isArrayKey ) {
5754
- if ( ! dataContainer[ keyName ] ) {
5755
- dataContainer[ keyName ] = [];
5756
- }
5757
- } else {
5758
- if ( ! isObjectKey ) {
5759
- if ( dataContainer.push ) {
5760
- dataContainer.push( value );
5761
- } else {
5762
- dataContainer[ keyName ] = value;
5763
- }
5764
 
5765
- return;
5766
- }
 
 
 
 
 
 
 
 
5767
 
5768
- if ( ! dataContainer[ keyName ] ) {
5769
- dataContainer[ keyName ] = {};
5770
- }
5771
- }
5772
 
5773
- var nextKeys = key.match( /\[[^\[\]]*]/g );
 
 
5774
 
5775
- nextKeys[ 0 ] = nextKeys[ 0 ].replace( /\[|]/g, '' );
5776
 
5777
- return parseObject( dataContainer[ keyName ], nextKeys.join( '' ), value );
5778
- };
5779
 
5780
- $.each( serializedArray, function() {
5781
- parseObject( data, this.name, this.value );
5782
- } );
5783
- return data;
5784
- };
5785
- })( jQuery );
5786
 
5787
- },{}],72:[function(require,module,exports){
5788
- var presetsFactory;
5789
 
5790
- presetsFactory = {
5791
 
5792
- getPresetsDictionary: function() {
5793
- return {
5794
- 11: 100 / 9,
5795
- 12: 100 / 8,
5796
- 14: 100 / 7,
5797
- 16: 100 / 6,
5798
- 33: 100 / 3,
5799
- 66: 2 / 3 * 100,
5800
- 83: 5 / 6 * 100
5801
- };
5802
- },
5803
 
5804
- getAbsolutePresetValues: function( preset ) {
5805
- var clonedPreset = elementor.helpers.cloneObject( preset ),
5806
- presetDictionary = this.getPresetsDictionary();
5807
 
5808
- _.each( clonedPreset, function( unitValue, unitIndex ) {
5809
- if ( presetDictionary[ unitValue ] ) {
5810
- clonedPreset[ unitIndex ] = presetDictionary[ unitValue ];
 
 
 
 
5811
  }
5812
- } );
 
 
5813
 
5814
- return clonedPreset;
5815
- },
5816
 
5817
- getPresets: function( columnsCount, presetIndex ) {
5818
- var presets = elementor.helpers.cloneObject( elementor.config.elements.section.presets );
 
 
 
5819
 
5820
- if ( columnsCount ) {
5821
- presets = presets[ columnsCount ];
5822
- }
5823
 
5824
- if ( presetIndex ) {
5825
- presets = presets[ presetIndex ];
5826
- }
5827
 
5828
- return presets;
5829
- },
5830
 
5831
- getPresetByStructure: function( structure ) {
5832
- var parsedStructure = this.getParsedStructure( structure );
5833
 
5834
- return this.getPresets( parsedStructure.columnsCount, parsedStructure.presetIndex );
5835
- },
 
 
5836
 
5837
- getParsedStructure: function( structure ) {
5838
- structure += ''; // Make sure this is a string
5839
 
5840
- return {
5841
- columnsCount: structure.slice( 0, -1 ),
5842
- presetIndex: structure.substr( -1 )
5843
- };
5844
- },
5845
-
5846
- getPresetSVG: function( preset, svgWidth, svgHeight, separatorWidth ) {
5847
- svgWidth = svgWidth || 100;
5848
- svgHeight = svgHeight || 50;
5849
- separatorWidth = separatorWidth || 2;
5850
 
5851
- var absolutePresetValues = this.getAbsolutePresetValues( preset ),
5852
- presetSVGPath = this._generatePresetSVGPath( absolutePresetValues, svgWidth, svgHeight, separatorWidth );
5853
 
5854
- return this._createSVGPreset( presetSVGPath, svgWidth, svgHeight );
5855
- },
 
5856
 
5857
- _createSVGPreset: function( presetPath, svgWidth, svgHeight ) {
5858
- var svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );
 
5859
 
5860
- svg.setAttributeNS( 'http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink' );
5861
- svg.setAttribute( 'viewBox', '0 0 ' + svgWidth + ' ' + svgHeight );
 
5862
 
5863
- var path = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' );
 
5864
 
5865
- path.setAttribute( 'd', presetPath );
 
 
 
 
5866
 
5867
- svg.appendChild( path );
 
 
 
5868
 
5869
- return svg;
5870
- },
5871
 
5872
- _generatePresetSVGPath: function( preset, svgWidth, svgHeight, separatorWidth ) {
5873
- var DRAW_SIZE = svgWidth - separatorWidth * ( preset.length - 1 );
5874
 
5875
- var xPointer = 0,
5876
- dOutput = '';
 
 
 
5877
 
5878
- for ( var i = 0; i < preset.length; i++ ) {
5879
- if ( i ) {
5880
- dOutput += ' ';
 
 
 
 
5881
  }
5882
 
5883
- var increment = preset[ i ] / 100 * DRAW_SIZE;
 
 
 
 
5884
 
5885
- xPointer += increment;
 
5886
 
5887
- dOutput += 'M' + ( +xPointer.toFixed( 4 ) ) + ',0';
 
 
5888
 
5889
- dOutput += 'V' + svgHeight;
 
 
 
 
 
5890
 
5891
- dOutput += 'H' + ( +( xPointer - increment ).toFixed( 4 ) );
 
 
 
 
 
 
 
5892
 
5893
- dOutput += 'V0Z';
 
 
 
5894
 
5895
- xPointer += separatorWidth;
5896
- }
 
 
 
 
 
 
 
5897
 
5898
- return dOutput;
5899
- }
5900
  };
5901
 
5902
- module.exports = presetsFactory;
5903
 
5904
- },{}],73:[function(require,module,exports){
5905
- var Schemes,
5906
- Stylesheet = require( 'elementor-editor-utils/stylesheet' ),
5907
- ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' );
5908
 
5909
- Schemes = function() {
5910
  var self = this,
5911
- stylesheet = new Stylesheet(),
5912
- schemes = {},
5913
- settings = {
5914
- selectorWrapperPrefix: '.elementor-widget-'
5915
- },
5916
- elements = {};
5917
-
5918
- var buildUI = function() {
5919
- elements.$previewHead.append( elements.$style );
5920
- };
5921
 
5922
- var initElements = function() {
5923
- elements.$style = Backbone.$( '<style>', {
5924
- id: 'elementor-style-scheme'
5925
- });
 
 
5926
 
5927
- elements.$previewHead = elementor.$previewContents.find( 'head' );
5928
- };
 
5929
 
5930
- var initSchemes = function() {
5931
- schemes = elementor.helpers.cloneObject( elementor.config.schemes.items );
 
5932
  };
5933
 
5934
- var fetchControlStyles = function( control, controlsStack, widgetType ) {
5935
- ControlsCSSParser.addControlStyleRules( stylesheet, control, controlsStack, function( control ) {
5936
- return self.getSchemeValue( control.scheme.type, control.scheme.value, control.scheme.key ).value;
5937
- }, [ '{{WRAPPER}}' ], [ settings.selectorWrapperPrefix + widgetType ] );
5938
  };
5939
 
5940
- var fetchWidgetControlsStyles = function( widget ) {
5941
- var widgetSchemeControls = self.getWidgetSchemeControls( widget );
5942
-
5943
- _.each( widgetSchemeControls, function( control ) {
5944
- fetchControlStyles( control, widgetSchemeControls, widget.widget_type );
5945
- } );
5946
- };
5947
 
5948
- var fetchAllWidgetsSchemesStyle = function() {
5949
- _.each( elementor.config.widgets, function( widget ) {
5950
- fetchWidgetControlsStyles( widget );
5951
- } );
5952
  };
5953
 
5954
- this.init = function() {
5955
- initElements();
5956
- buildUI();
5957
- initSchemes();
5958
 
5959
- return self;
 
 
 
5960
  };
5961
 
5962
- this.getWidgetSchemeControls = function( widget ) {
5963
- return _.filter( widget.controls, function( control ) {
5964
- return _.isObject( control.scheme );
5965
- } );
5966
- };
5967
 
5968
- this.getSchemes = function() {
5969
- return schemes;
5970
- };
5971
 
5972
- this.getEnabledSchemesTypes = function() {
5973
- return elementor.config.schemes.enabled_schemes;
 
5974
  };
5975
 
5976
- this.getScheme = function( schemeType ) {
5977
- return schemes[ schemeType ];
5978
  };
 
5979
 
5980
- this.getSchemeValue = function( schemeType, value, key ) {
5981
- if ( this.getEnabledSchemesTypes().indexOf( schemeType ) < 0 ) {
5982
- return false;
5983
- }
5984
 
5985
- var scheme = self.getScheme( schemeType ),
5986
- schemeValue = scheme.items[ value ];
 
 
 
5987
 
5988
- if ( key && _.isObject( schemeValue ) ) {
5989
- var clonedSchemeValue = elementor.helpers.cloneObject( schemeValue );
 
5990
 
5991
- clonedSchemeValue.value = schemeValue.value[ key ];
5992
 
5993
- return clonedSchemeValue;
 
 
5994
  }
5995
-
5996
- return schemeValue;
5997
  };
5998
 
5999
- this.printSchemesStyle = function() {
6000
- stylesheet.empty();
 
 
 
 
 
 
 
 
6001
 
6002
- fetchAllWidgetsSchemesStyle();
 
 
6003
 
6004
- elements.$style.text( stylesheet );
6005
- };
6006
-
6007
- this.resetSchemes = function( schemeName ) {
6008
- schemes[ schemeName ] = elementor.helpers.cloneObject( elementor.config.schemes.items[ schemeName ] );
6009
- };
6010
 
6011
- this.saveScheme = function( schemeName ) {
6012
- elementor.config.schemes.items[ schemeName ].items = elementor.helpers.cloneObject( schemes[ schemeName ].items );
 
6013
 
6014
- var itemsToSave = {};
 
 
 
 
6015
 
6016
- _.each( schemes[ schemeName ].items, function( item, key ) {
6017
- itemsToSave[ key ] = item.value;
6018
- } );
 
 
6019
 
6020
- NProgress.start();
 
 
6021
 
6022
- elementor.ajax.send( 'apply_scheme', {
6023
- data: {
6024
- scheme_name: schemeName,
6025
- data: JSON.stringify( itemsToSave )
6026
- },
6027
- success: function() {
6028
- NProgress.done();
6029
  }
6030
- } );
6031
- };
6032
 
6033
- this.setSchemeValue = function( schemeName, itemKey, value ) {
6034
- schemes[ schemeName ].items[ itemKey ].value = value;
6035
- };
6036
- };
 
6037
 
6038
- module.exports = new Schemes();
 
6039
 
6040
- },{"elementor-editor-utils/controls-css-parser":64,"elementor-editor-utils/stylesheet":74}],74:[function(require,module,exports){
6041
- ( function( $ ) {
6042
 
6043
- var Stylesheet = function() {
6044
- var self = this,
6045
- rules = {},
6046
- rawCSS = {},
6047
- devices = {};
6048
 
6049
- var getDeviceMaxValue = function( deviceName ) {
6050
- var deviceNames = Object.keys( devices ),
6051
- deviceNameIndex = deviceNames.indexOf( deviceName ),
6052
- nextIndex = deviceNameIndex + 1;
6053
 
6054
- if ( nextIndex >= deviceNames.length ) {
6055
- throw new RangeError( 'Max value for this device is out of range.' );
6056
- }
6057
 
6058
- return devices[ deviceNames[ nextIndex ] ] - 1;
6059
  };
6060
 
6061
- var queryToHash = function( query ) {
6062
- var hash = [];
6063
 
6064
- $.each( query, function( endPoint ) {
6065
- hash.push( endPoint + '_' + this );
6066
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6067
 
6068
- return hash.join( '-' );
 
6069
  };
6070
 
6071
- var hashToQuery = function( hash ) {
6072
- var query = {};
6073
-
6074
- hash = hash.split( '-' ).filter( String );
6075
 
6076
- hash.forEach( function( singleQuery ) {
6077
- var queryParts = singleQuery.split( '_' ),
6078
- endPoint = queryParts[0],
6079
- deviceName = queryParts[1];
6080
 
6081
- query[ endPoint ] = 'max' === endPoint ? getDeviceMaxValue( deviceName ) : devices[ deviceName ];
6082
- } );
 
6083
 
6084
- return query;
 
6085
  };
6086
 
6087
- var addQueryHash = function( queryHash ) {
6088
- rules[ queryHash ] = {};
 
6089
 
6090
- var hashes = Object.keys( rules );
 
 
6091
 
6092
- if ( hashes.length < 2 ) {
6093
- return;
6094
  }
6095
 
6096
- // Sort the devices from narrowest to widest
6097
- hashes.sort( function( a, b ) {
6098
- if ( 'all' === a ) {
6099
- return -1;
6100
- }
6101
 
6102
- if ( 'all' === b ) {
6103
- return 1;
6104
- }
6105
 
6106
- var aQuery = hashToQuery( a ),
6107
- bQuery = hashToQuery( b );
6108
 
6109
- return bQuery.max - aQuery.max;
6110
- } );
6111
 
6112
- var sortedRules = {};
 
 
6113
 
6114
- hashes.forEach( function( deviceName ) {
6115
- sortedRules[ deviceName ] = rules[ deviceName ];
6116
- } );
 
 
6117
 
6118
- rules = sortedRules;
6119
  };
6120
 
6121
- var getQueryHashStyleFormat = function( queryHash ) {
6122
- var query = hashToQuery( queryHash ),
6123
- styleFormat = [];
6124
-
6125
- $.each( query, function( endPoint ) {
6126
- styleFormat.push( '(' + endPoint + '-width:' + this + 'px)' );
6127
- } );
6128
 
6129
- return '@media' + styleFormat.join( ' and ' );
6130
- };
6131
 
6132
- this.addDevice = function( deviceName, deviceValue ) {
6133
- devices[ deviceName ] = deviceValue;
 
6134
 
6135
- var deviceNames = Object.keys( devices );
 
6136
 
6137
- if ( deviceNames.length < 2 ) {
6138
- return self;
6139
  }
6140
 
6141
- // Sort the devices from narrowest to widest
6142
- deviceNames.sort( function( a, b ) {
6143
- return devices[ a ] - devices[ b ];
6144
- } );
6145
 
6146
- var sortedDevices = {};
 
6147
 
6148
- deviceNames.forEach( function( deviceName ) {
6149
- sortedDevices[ deviceName ] = devices[ deviceName ];
6150
- } );
 
6151
 
6152
- devices = sortedDevices;
6153
 
6154
- return self;
6155
  };
6156
 
6157
- this.addRawCSS = function( key, css ) {
6158
- rawCSS[ key ] = css;
6159
- };
 
 
6160
 
6161
- this.addRules = function( selector, styleRules, query ) {
6162
- var queryHash = 'all';
6163
 
6164
- if ( ! _.isEmpty( query ) ) {
6165
- queryHash = queryToHash( query );
6166
- }
6167
 
6168
- if ( ! rules[ queryHash ] ) {
6169
- addQueryHash( queryHash );
6170
- }
6171
 
6172
- if ( ! styleRules ) {
6173
- var parsedRules = selector.match( /[^{]+\{[^}]+}/g );
 
6174
 
6175
- $.each( parsedRules, function() {
6176
- var parsedRule = this.match( /([^{]+)\{([^}]+)}/ );
 
6177
 
6178
- if ( parsedRule ) {
6179
- self.addRules( parsedRule[1].trim(), parsedRule[2].trim(), query );
6180
- }
6181
- } );
6182
 
6183
- return;
6184
- }
6185
 
6186
- if ( ! rules[ queryHash ][ selector ] ) {
6187
- rules[ queryHash ][ selector ] = {};
6188
- }
 
 
 
6189
 
6190
- if ( 'string' === typeof styleRules ) {
6191
- styleRules = styleRules.split( ';' ).filter( String );
 
 
6192
 
6193
- var orderedRules = {};
6194
 
6195
- try {
6196
- $.each( styleRules, function() {
6197
- var property = this.split( /:(.*)?/ );
6198
 
6199
- orderedRules[ property[0].trim() ] = property[1].trim().replace( ';', '' );
6200
- } );
6201
- } catch ( error ) { // At least one of the properties is incorrect
6202
- return;
6203
  }
6204
-
6205
- styleRules = orderedRules;
6206
  }
6207
 
6208
- $.extend( rules[ queryHash ][ selector ], styleRules );
6209
-
6210
- return self;
6211
  };
6212
 
6213
- this.getRules = function() {
6214
- return rules;
6215
- };
6216
 
6217
- this.empty = function() {
6218
- rules = {};
6219
- rawCSS = {};
6220
- };
6221
 
6222
- this.toString = function() {
6223
- var styleText = '';
6224
 
6225
- $.each( rules, function( queryHash ) {
6226
- var deviceText = Stylesheet.parseRules( this );
6227
 
6228
- if ( 'all' !== queryHash ) {
6229
- deviceText = getQueryHashStyleFormat( queryHash ) + '{' + deviceText + '}';
6230
  }
6231
 
6232
- styleText += deviceText;
6233
- } );
6234
-
6235
- $.each( rawCSS, function() {
6236
- styleText += this;
6237
  } );
6238
 
6239
- return styleText;
6240
- };
6241
- };
6242
-
6243
- Stylesheet.parseRules = function( rules ) {
6244
- var parsedRules = '';
6245
-
6246
- $.each( rules, function( selector ) {
6247
- var selectorContent = Stylesheet.parseProperties( this );
6248
 
6249
- if ( selectorContent ) {
6250
- parsedRules += selector + '{' + selectorContent + '}';
6251
  }
6252
- } );
6253
 
6254
- return parsedRules;
6255
- };
6256
 
6257
- Stylesheet.parseProperties = function( properties ) {
6258
- var parsedProperties = '';
6259
 
6260
- $.each( properties, function( propertyKey ) {
6261
- if ( this ) {
6262
- parsedProperties += propertyKey + ':' + this + ';';
 
6263
  }
6264
- } );
6265
 
6266
- return parsedProperties;
6267
- };
6268
 
6269
- module.exports = Stylesheet;
6270
- } )( jQuery );
 
6271
 
6272
- },{}],75:[function(require,module,exports){
6273
- var Module = require( 'elementor-utils/module' ),
6274
- Validator;
6275
 
6276
- Validator = Module.extend( {
6277
- errors: [],
6278
 
6279
- __construct: function( settings ) {
6280
- var customValidationMethod = settings.customValidationMethod;
 
6281
 
6282
- if ( customValidationMethod ) {
6283
- this.validationMethod = customValidationMethod;
6284
- }
6285
- },
6286
 
6287
- isValid: function() {
6288
- var validationErrors = this.validationMethod.apply( this, arguments );
 
6289
 
6290
- if ( validationErrors.length ) {
6291
- this.errors = validationErrors;
 
 
6292
 
6293
- return false;
6294
- }
6295
 
6296
- return true;
6297
- },
 
 
 
 
 
 
6298
 
6299
- validationMethod: function() {
6300
- return [];
6301
- }
6302
- } );
6303
 
6304
- module.exports = Validator;
 
6305
 
6306
- },{"elementor-utils/module":116}],76:[function(require,module,exports){
6307
- var AddSectionView;
6308
 
6309
- AddSectionView = Marionette.ItemView.extend( {
6310
- template: Marionette.TemplateCache.get( '#tmpl-elementor-add-section' ),
 
6311
 
6312
- attributes: {
6313
- 'data-view': 'choose-action'
6314
- },
6315
 
6316
- ui: {
6317
- addNewSection: '.elementor-add-new-section',
6318
- closeButton: '.elementor-add-section-close',
6319
- addSectionButton: '.elementor-add-section-button',
6320
- addTemplateButton: '.elementor-add-template-button',
6321
- selectPreset: '.elementor-select-preset',
6322
- presets: '.elementor-preset'
6323
- },
6324
 
6325
- events: {
6326
- 'click @ui.addSectionButton': 'onAddSectionButtonClick',
6327
- 'click @ui.addTemplateButton': 'onAddTemplateButtonClick',
6328
- 'click @ui.closeButton': 'onCloseButtonClick',
6329
- 'click @ui.presets': 'onPresetSelected'
6330
- },
 
6331
 
6332
- className: function() {
6333
- return 'elementor-add-section elementor-visible-desktop';
6334
- },
6335
 
6336
- addSection: function( properties, options ) {
6337
- return elementor.sections.currentView.addSection( properties, options );
6338
- },
6339
 
6340
- setView: function( view ) {
6341
- this.$el.attr( 'data-view', view );
6342
- },
6343
 
6344
- showSelectPresets: function() {
6345
- this.setView( 'select-preset' );
6346
- },
 
6347
 
6348
- closeSelectPresets: function() {
6349
- this.setView( 'choose-action' );
6350
- },
6351
 
6352
- getTemplatesModalOptions: function() {
6353
- return {
6354
- onReady: function() {
6355
- elementor.templates.showTemplates();
6356
  }
 
 
6357
  };
6358
- },
6359
 
6360
- onAddSectionButtonClick: function() {
6361
- this.showSelectPresets();
6362
- },
 
 
 
 
6363
 
6364
- onAddTemplateButtonClick: function() {
6365
- elementor.templates.startModal( this.getTemplatesModalOptions() );
6366
- },
6367
 
6368
- onRender: function() {
6369
- this.$el.html5Droppable( {
6370
- axis: [ 'vertical' ],
6371
- groups: [ 'elementor-element' ],
6372
- placeholder: false,
6373
- currentElementClass: 'elementor-html5dnd-current-element',
6374
- hasDraggingOnChildClass: 'elementor-dragging-on-child',
6375
- onDropping: _.bind( this.onDropping, this )
6376
- } );
6377
- },
6378
 
6379
- onPresetSelected: function( event ) {
6380
- this.closeSelectPresets();
 
6381
 
6382
- var selectedStructure = event.currentTarget.dataset.structure,
6383
- parsedStructure = elementor.presetsFactory.getParsedStructure( selectedStructure ),
6384
- elements = [],
6385
- loopIndex;
6386
 
6387
- for ( loopIndex = 0; loopIndex < parsedStructure.columnsCount; loopIndex++ ) {
6388
- elements.push( {
6389
- id: elementor.helpers.getUniqueID(),
6390
- elType: 'column',
6391
- settings: {},
6392
- elements: []
6393
- } );
6394
- }
6395
 
6396
- elementor.channels.data.trigger( 'element:before:add', {
6397
- elType: 'section'
6398
- } );
6399
 
6400
- var newSection = this.addSection( { elements: elements } );
6401
 
6402
- newSection.setStructure( selectedStructure );
 
6403
 
6404
- elementor.channels.data.trigger( 'element:after:add' );
6405
- },
6406
 
6407
- onDropping: function() {
6408
- elementor.channels.data.trigger( 'section:before:drop' );
6409
- this.addSection().addElementFromPanel();
6410
- elementor.channels.data.trigger( 'section:after:drop' );
6411
- }
6412
- } );
6413
 
6414
- module.exports = AddSectionView;
 
 
 
 
 
 
6415
 
6416
  },{}],77:[function(require,module,exports){
6417
- var BaseAddSectionView = require( 'elementor-views/add-section/base' );
 
 
 
 
 
 
6418
 
6419
- module.exports = BaseAddSectionView.extend( {
6420
- id: 'elementor-add-new-section',
 
 
6421
 
6422
- onCloseButtonClick: function() {
6423
- this.closeSelectPresets();
6424
- }
6425
- } );
 
 
 
 
 
 
 
6426
 
6427
- },{"elementor-views/add-section/base":76}],78:[function(require,module,exports){
6428
- var BaseAddSectionView = require( 'elementor-views/add-section/base' );
6429
 
6430
- module.exports = BaseAddSectionView.extend( {
6431
- options: {
6432
- atIndex: null
6433
- },
6434
 
6435
- className: function() {
6436
- return BaseAddSectionView.prototype.className.apply( this, arguments ) + ' elementor-add-section-inline';
6437
- },
6438
 
6439
- addSection: function( properties, options ) {
6440
- options = options || {};
6441
 
6442
- options.at = this.getOption( 'atIndex' );
 
6443
 
6444
- return BaseAddSectionView.prototype.addSection.call( this, properties, options );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6445
  },
6446
 
6447
- getTemplatesModalOptions: function() {
6448
- return _.extend( BaseAddSectionView.prototype.getTemplatesModalOptions.apply( this, arguments ), {
6449
- importOptions: {
6450
- at: this.getOption( 'atIndex' )
 
 
 
6451
  }
6452
  } );
 
 
6453
  },
6454
 
6455
- fadeToDeath: function() {
6456
- var self = this;
6457
 
6458
- self.$el.slideUp( function() {
6459
- self.destroy();
6460
- } );
6461
- },
6462
 
6463
- onCloseButtonClick: function() {
6464
- this.fadeToDeath();
 
 
 
6465
  },
6466
 
6467
- onPresetSelected: function() {
6468
- BaseAddSectionView.prototype.onPresetSelected.apply( this, arguments );
6469
 
6470
- this.destroy();
6471
  },
6472
 
6473
- onAddTemplateButtonClick: function() {
6474
- BaseAddSectionView.prototype.onAddTemplateButtonClick.apply( this, arguments );
6475
 
6476
- this.destroy();
 
 
 
6477
  },
6478
 
6479
- onDropping: function() {
6480
- BaseAddSectionView.prototype.onDropping.apply( this, arguments );
6481
-
6482
- this.destroy();
6483
- }
6484
- } );
6485
 
6486
- },{"elementor-views/add-section/base":76}],79:[function(require,module,exports){
6487
- module.exports = Marionette.CompositeView.extend( {
6488
 
6489
- getBehavior: function( name ) {
6490
- return this._behaviors[ Object.keys( this.behaviors() ).indexOf( name ) ];
6491
  },
6492
 
6493
- addChildModel: function( model, options ) {
6494
- return this.collection.add( model, options, true );
6495
- },
6496
 
6497
- addChildElement: function( itemData, options ) {
6498
- options = options || {};
6499
 
6500
- var myChildType = this.getChildType(),
6501
- elType = itemData.get ? itemData.get( 'elType' ) : itemData.elType;
6502
 
6503
- if ( -1 === myChildType.indexOf( elType ) ) {
6504
- delete options.at;
6505
 
6506
- return this.children.last().addChildElement( itemData, options );
6507
- }
6508
 
6509
- var newModel = this.addChildModel( itemData, options ),
6510
- newView = this.children.findByModel( newModel );
6511
 
6512
- newView.edit();
 
6513
 
6514
- return newView;
6515
- }
6516
- } );
6517
 
6518
- },{}],80:[function(require,module,exports){
6519
- var BaseSettingsModel = require( 'elementor-models/base-settings' ),
6520
- ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' ),
6521
- Validator = require( 'elementor-editor-utils/validator' ),
6522
- BaseContainer = require( 'elementor-views/base-container' ),
6523
- BaseElementView;
6524
 
6525
- BaseElementView = BaseContainer.extend( {
6526
- tagName: 'div',
6527
 
6528
- controlsCSSParser: null,
6529
 
6530
- toggleEditTools: true,
6531
 
6532
- className: function() {
6533
- return this.getElementUniqueID();
6534
- },
6535
 
6536
- attributes: function() {
6537
- var type = this.model.get( 'elType' );
6538
 
6539
- if ( 'widget' === type ) {
6540
- type = this.model.get( 'widgetType' );
 
6541
  }
6542
 
6543
- return {
6544
- 'data-id': this.getID(),
6545
- 'data-element_type': type
6546
- };
6547
- },
6548
 
6549
- ui: function() {
6550
- return {
6551
- triggerButton: '> .elementor-element-overlay .elementor-editor-element-trigger',
6552
- duplicateButton: '> .elementor-element-overlay .elementor-editor-element-duplicate',
6553
- removeButton: '> .elementor-element-overlay .elementor-editor-element-remove',
6554
- saveButton: '> .elementor-element-overlay .elementor-editor-element-save',
6555
- settingsList: '> .elementor-element-overlay .elementor-editor-element-settings',
6556
- addButton: '> .elementor-element-overlay .elementor-editor-element-add'
6557
- };
6558
- },
6559
 
6560
- behaviors: function() {
6561
- var behaviors = {};
 
 
6562
 
6563
- return elementor.hooks.applyFilters( 'elements/base/behaviors', behaviors, this );
6564
- },
 
 
 
 
 
 
6565
 
6566
- getBehavior: function( name ) {
6567
- return this._behaviors[ Object.keys( this.behaviors() ).indexOf( name ) ];
6568
- },
6569
 
6570
- events: function() {
6571
- return {
6572
- 'click @ui.removeButton': 'onClickRemove',
6573
- 'click @ui.saveButton': 'onClickSave',
6574
- 'click @ui.duplicateButton': 'onClickDuplicate',
6575
- 'click @ui.triggerButton': 'onClickEdit'
6576
- };
6577
- },
6578
 
6579
- getElementType: function() {
6580
- return this.model.get( 'elType' );
6581
- },
6582
 
6583
- getChildType: function() {
6584
- return elementor.helpers.getElementChildType( this.getElementType() );
6585
- },
6586
 
6587
- getChildView: function( model ) {
6588
- var ChildView,
6589
- elType = model.get( 'elType' );
 
 
6590
 
6591
- if ( 'section' === elType ) {
6592
- ChildView = require( 'elementor-views/section' );
6593
- } else if ( 'column' === elType ) {
6594
- ChildView = require( 'elementor-views/column' );
6595
- } else {
6596
- ChildView = elementor.modules.WidgetView;
6597
- }
6598
 
6599
- return elementor.hooks.applyFilters( 'element/view', ChildView, model, this );
6600
- },
 
 
6601
 
6602
- templateHelpers: function() {
6603
- return {
6604
- elementModel: this.model,
6605
- editModel: this.getEditModel()
6606
- };
6607
- },
6608
 
6609
- getTemplateType: function() {
6610
- return 'js';
6611
- },
 
6612
 
6613
- getEditModel: function() {
6614
- return this.model;
6615
- },
6616
 
6617
- initialize: function() {
6618
- // grab the child collection from the parent model
6619
- // so that we can render the collection as children
6620
- // of this parent element
6621
- this.collection = this.model.get( 'elements' );
6622
 
6623
- if ( this.collection ) {
6624
- this.listenTo( this.collection, 'add remove reset', this.onCollectionChanged, this );
6625
- }
6626
 
6627
- var editModel = this.getEditModel();
 
 
6628
 
6629
- this.listenTo( editModel.get( 'settings' ), 'change', this.onSettingsChanged, this );
6630
- this.listenTo( editModel.get( 'editSettings' ), 'change', this.onEditSettingsChanged, this );
 
6631
 
6632
- this.initControlsCSSParser();
6633
- },
 
 
6634
 
6635
- edit: function() {
6636
- elementor.getPanelView().openEditor( this.getEditModel(), this );
6637
- },
6638
 
6639
- addElementFromPanel: function( options ) {
6640
- var elementView = elementor.channels.panelElements.request( 'element:selected' );
6641
 
6642
- var itemData = {
6643
- id: elementor.helpers.getUniqueID(),
6644
- elType: elementView.model.get( 'elType' )
6645
- };
6646
 
6647
- if ( 'widget' === itemData.elType ) {
6648
- itemData.widgetType = elementView.model.get( 'widgetType' );
6649
- } else if ( 'section' === itemData.elType ) {
6650
- itemData.elements = [];
6651
- itemData.isInner = true;
6652
- } else {
6653
- return;
6654
  }
6655
 
6656
- var customData = elementView.model.get( 'custom' );
6657
-
6658
- if ( customData ) {
6659
- _.extend( itemData, customData );
6660
- }
6661
 
6662
- elementor.channels.data.trigger( 'element:before:add', itemData );
 
6663
 
6664
- var newView = this.addChildElement( itemData, options );
6665
 
6666
- if ( 'section' === newView.getElementType() && newView.isInner() ) {
6667
- newView.addEmptyColumn();
6668
- }
6669
 
6670
- elementor.channels.data.trigger( 'element:after:add', itemData );
 
 
6671
 
6672
- },
 
6673
 
6674
- addControlValidator: function( controlName, validationCallback ) {
6675
- validationCallback = _.bind( validationCallback, this );
6676
 
6677
- var validator = new Validator( { customValidationMethod: validationCallback } ),
6678
- validators = this.getEditModel().get( 'settings' ).validators;
 
6679
 
6680
- if ( ! validators[ controlName ] ) {
6681
- validators[ controlName ] = [];
6682
- }
6683
 
6684
- validators[ controlName ].push( validator );
6685
- },
 
 
 
 
 
 
 
 
6686
 
6687
- isCollectionFilled: function() {
6688
- return false;
6689
- },
 
6690
 
6691
- isInner: function() {
6692
- return !! this.model.get( 'isInner' );
6693
- },
6694
 
6695
- initControlsCSSParser: function() {
6696
- this.controlsCSSParser = new ControlsCSSParser( { id: this.model.cid } );
6697
- },
6698
 
6699
- enqueueFonts: function() {
6700
- var editModel = this.getEditModel(),
6701
- settings = editModel.get( 'settings' );
 
 
6702
 
6703
- _.each( settings.getFontControls(), _.bind( function( control ) {
6704
- var fontFamilyName = editModel.getSetting( control.name );
 
 
6705
 
6706
- if ( _.isEmpty( fontFamilyName ) ) {
6707
- return;
6708
  }
6709
 
6710
- elementor.helpers.enqueueFont( fontFamilyName );
6711
- }, this ) );
6712
- },
6713
 
6714
- renderStyles: function( settings ) {
6715
- if ( ! settings ) {
6716
- settings = this.getEditModel().get( 'settings' );
6717
- }
6718
 
6719
- this.controlsCSSParser.stylesheet.empty();
 
 
6720
 
6721
- this.controlsCSSParser.addStyleRules( settings.getStyleControls(), settings.attributes, this.getEditModel().get( 'settings' ).controls, [ /{{ID}}/g, /{{WRAPPER}}/g ], [ this.getID(), '#elementor .' + this.getElementUniqueID() ] );
 
6722
 
6723
- this.controlsCSSParser.addStyleToDocument();
 
6724
 
6725
- var extraCSS = elementor.hooks.applyFilters( 'editor/style/styleText', '', this );
6726
 
6727
- if ( extraCSS ) {
6728
- this.controlsCSSParser.elements.$stylesheetElement.append( extraCSS );
6729
- }
6730
- },
6731
 
6732
- renderCustomClasses: function() {
6733
- var self = this;
6734
 
6735
- self.$el.addClass( 'elementor-element' );
 
6736
 
6737
- var settings = self.getEditModel().get( 'settings' ),
6738
- classControls = settings.getClassControls();
6739
 
6740
- // Remove all previous classes
6741
- _.each( classControls, function( control ) {
6742
- var previousClassValue = settings.previous( control.name );
6743
 
6744
- if ( control.classes_dictionary ) {
6745
- if ( undefined !== control.classes_dictionary[ previousClassValue ] ) {
6746
- previousClassValue = control.classes_dictionary[ previousClassValue ];
6747
- }
6748
  }
6749
 
6750
- self.$el.removeClass( control.prefix_class + previousClassValue );
6751
- } );
6752
-
6753
- // Add new classes
6754
- _.each( classControls, function( control ) {
6755
- var value = settings.attributes[ control.name ],
6756
- classValue = value;
6757
-
6758
- if ( control.classes_dictionary ) {
6759
- if ( undefined !== control.classes_dictionary[ value ] ) {
6760
- classValue = control.classes_dictionary[ value ];
6761
  }
6762
- }
6763
 
6764
- var isVisible = elementor.helpers.isActiveControl( control, settings.attributes );
 
 
6765
 
6766
- if ( isVisible && ! _.isEmpty( classValue ) ) {
6767
- self.$el
6768
- .addClass( control.prefix_class + classValue )
6769
- .addClass( _.result( self, 'className' ) );
6770
- }
6771
- } );
6772
- },
6773
 
6774
- renderCustomElementID: function() {
6775
- var customElementID = this.getEditModel().get( 'settings' ).get( '_element_id' );
6776
 
6777
- this.$el.attr( 'id', customElementID );
6778
- },
6779
 
6780
- getModelForRender: function() {
6781
- return elementor.hooks.applyFilters( 'element/templateHelpers/editModel', this.getEditModel(), this );
6782
- },
6783
 
6784
- renderUIOnly: function() {
6785
- var editModel = this.getModelForRender();
6786
 
6787
- this.renderStyles( editModel.get( 'settings' ) );
6788
- this.renderCustomClasses();
6789
- this.renderCustomElementID();
6790
- this.enqueueFonts();
6791
- },
6792
 
6793
- renderUI: function() {
6794
- this.renderStyles();
6795
- this.renderCustomClasses();
6796
- this.renderCustomElementID();
6797
- this.enqueueFonts();
6798
- },
6799
 
6800
- runReadyTrigger: function() {
6801
- _.defer( _.bind( function() {
6802
- elementorFrontend.elementsHandler.runReadyTrigger( this.$el );
6803
- }, this ) );
6804
- },
6805
 
6806
- getID: function() {
6807
- return this.model.get( 'id' );
6808
- },
6809
 
6810
- getElementUniqueID: function() {
6811
- return 'elementor-element-' + this.getID();
6812
- },
6813
 
6814
- duplicate: function() {
6815
- this.trigger( 'request:duplicate' );
6816
- },
6817
 
6818
- renderOnChange: function( settings ) {
6819
- // Make sure is correct model
6820
- if ( settings instanceof BaseSettingsModel ) {
6821
- var hasChanged = settings.hasChanged(),
6822
- isContentChanged = ! hasChanged,
6823
- isRenderRequired = ! hasChanged;
6824
 
6825
- _.each( settings.changedAttributes(), function( settingValue, settingKey ) {
6826
- var control = settings.getControl( settingKey );
6827
 
6828
- if ( ! control ) {
6829
- isRenderRequired = true;
 
6830
 
6831
- return;
6832
- }
6833
 
6834
- if ( 'none' !== control.render_type ) {
6835
- isRenderRequired = true;
6836
- }
6837
 
6838
- if ( -1 !== [ 'none', 'ui' ].indexOf( control.render_type ) ) {
6839
- return;
6840
- }
6841
 
6842
- if ( 'template' === control.render_type || ! settings.isStyleControl( settingKey ) && ! settings.isClassControl( settingKey ) && '_element_id' !== settingKey ) {
6843
- isContentChanged = true;
6844
- }
6845
- } );
6846
 
6847
- if ( ! isRenderRequired ) {
6848
- return;
6849
  }
6850
 
6851
- if ( ! isContentChanged ) {
6852
- this.renderUIOnly();
6853
- return;
6854
  }
6855
- }
6856
 
6857
- // Re-render the template
6858
- var templateType = this.getTemplateType(),
6859
- editModel = this.getEditModel();
6860
 
6861
- if ( 'js' === templateType ) {
6862
- this.getEditModel().setHtmlCache();
6863
- this.render();
6864
- editModel.renderOnLeave = true;
6865
- } else {
6866
- editModel.renderRemoteServer();
6867
- }
6868
- },
6869
 
6870
- onRender: function() {
6871
- var self = this;
 
 
6872
 
6873
- self.renderUI();
 
6874
 
6875
- self.runReadyTrigger();
 
 
6876
 
6877
- if ( self.toggleEditTools ) {
6878
- self.ui.settingsList.hoverIntent( function() {
6879
- self.ui.triggerButton.addClass( 'elementor-active' );
6880
- }, function() {
6881
- self.ui.triggerButton.removeClass( 'elementor-active' );
6882
- }, { timeout: 500 } );
6883
- }
6884
- },
6885
 
6886
- onCollectionChanged: function() {
6887
- elementor.setFlagEditorChange( true );
6888
- },
6889
 
6890
- onEditSettingsChanged: function( changedModel ) {
6891
- this.renderOnChange( changedModel );
6892
- },
6893
 
6894
- onSettingsChanged: function( changedModel ) {
6895
- elementor.setFlagEditorChange( true );
 
 
 
6896
 
6897
- this.renderOnChange( changedModel );
6898
- },
6899
 
6900
- onClickEdit: function( event ) {
6901
- if ( ! Backbone.$( event.target ).closest( '.elementor-clickable' ).length ) {
6902
- event.preventDefault();
6903
 
6904
- event.stopPropagation();
6905
- }
6906
 
6907
- var activeMode = elementor.channels.dataEditMode.request( 'activeMode' );
 
 
6908
 
6909
- if ( 'edit' !== activeMode ) {
6910
- return;
6911
- }
 
6912
 
6913
- this.edit();
6914
- },
6915
 
6916
- onClickDuplicate: function( event ) {
6917
- event.preventDefault();
6918
- event.stopPropagation();
6919
 
6920
- this.duplicate();
6921
- },
 
6922
 
6923
- onClickRemove: function( event ) {
6924
- event.preventDefault();
6925
- event.stopPropagation();
6926
 
6927
- elementor.channels.data.trigger( 'element:before:remove', this.model );
 
 
6928
 
6929
- var parent = this._parent;
 
 
6930
 
6931
- parent.isManualRemoving = true;
 
6932
 
6933
- this.model.destroy();
 
6934
 
6935
- parent.isManualRemoving = false;
 
 
 
6936
 
6937
- elementor.channels.data.trigger( 'element:after:remove', this.model );
6938
- },
6939
 
6940
- onClickSave: function( event ) {
6941
- event.preventDefault();
6942
-
6943
- var model = this.model;
6944
 
6945
- elementor.templates.startModal( {
6946
- onReady: function() {
6947
- elementor.templates.getLayout().showSaveTemplateView( model );
6948
  }
6949
  } );
6950
- },
6951
 
6952
- onDestroy: function() {
6953
- this.controlsCSSParser.removeStyleFromDocument();
6954
- }
6955
- } );
6956
 
6957
- module.exports = BaseElementView;
 
6958
 
6959
- },{"elementor-editor-utils/controls-css-parser":64,"elementor-editor-utils/validator":75,"elementor-models/base-settings":52,"elementor-views/base-container":79,"elementor-views/column":82,"elementor-views/section":112}],81:[function(require,module,exports){
6960
- var SectionView = require( 'elementor-views/section' ),
6961
- BaseContainer = require( 'elementor-views/base-container' ),
6962
- BaseSectionsContainerView;
6963
 
6964
- BaseSectionsContainerView = BaseContainer.extend( {
6965
- childView: SectionView,
6966
 
6967
- behaviors: function() {
6968
- var behaviors = {
6969
- Sortable: {
6970
- behaviorClass: require( 'elementor-behaviors/sortable' ),
6971
- elChildType: 'section'
6972
- },
6973
- HandleDuplicate: {
6974
- behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
6975
- },
6976
- HandleAddMode: {
6977
- behaviorClass: require( 'elementor-behaviors/duplicate' )
6978
- }
6979
- };
6980
 
6981
- return elementor.hooks.applyFilters( 'elements/base-section-container/behaviors', behaviors, this );
 
 
6982
  },
6983
 
6984
- getSortableOptions: function() {
6985
- return {
6986
- handle: '> .elementor-element-overlay .elementor-editor-section-settings .elementor-editor-element-trigger',
6987
- items: '> .elementor-section'
6988
- };
6989
- },
6990
 
6991
- getChildType: function() {
6992
- return [ 'section' ];
6993
- },
6994
 
6995
- isCollectionFilled: function() {
6996
- return false;
6997
- },
6998
 
6999
- initialize: function() {
7000
- this
7001
- .listenTo( this.collection, 'add remove reset', this.onCollectionChanged )
7002
- .listenTo( elementor.channels.panelElements, 'element:drag:start', this.onPanelElementDragStart )
7003
- .listenTo( elementor.channels.panelElements, 'element:drag:end', this.onPanelElementDragEnd );
7004
  },
7005
 
7006
- addSection: function( properties, options ) {
7007
- var newSection = {
7008
- id: elementor.helpers.getUniqueID(),
7009
- elType: 'section',
7010
- settings: {},
7011
- elements: []
7012
- };
7013
 
7014
- if ( properties ) {
7015
- _.extend( newSection, properties );
7016
- }
7017
 
7018
- var newModel = this.addChildModel( newSection, options );
 
7019
 
7020
- return this.children.findByModelCid( newModel.cid );
7021
- },
7022
 
7023
- onCollectionChanged: function() {
7024
- elementor.setFlagEditorChange( true );
7025
  },
7026
 
7027
- onPanelElementDragStart: function() {
7028
- elementor.helpers.disableElementEvents( this.$el.find( 'iframe' ) );
 
 
 
 
 
7029
  },
7030
 
7031
- onPanelElementDragEnd: function() {
7032
- elementor.helpers.enableElementEvents( this.$el.find( 'iframe' ) );
7033
- }
7034
- } );
 
 
7035
 
7036
- module.exports = BaseSectionsContainerView;
 
 
7037
 
7038
- },{"elementor-behaviors/duplicate":1,"elementor-behaviors/handle-duplicate":2,"elementor-behaviors/sortable":5,"elementor-views/base-container":79,"elementor-views/section":112}],82:[function(require,module,exports){
7039
- var BaseElementView = require( 'elementor-views/base-element' ),
7040
- ElementEmptyView = require( 'elementor-views/element-empty' ),
7041
- ColumnView;
7042
 
7043
- ColumnView = BaseElementView.extend( {
7044
- template: Marionette.TemplateCache.get( '#tmpl-elementor-element-column-content' ),
 
7045
 
7046
- emptyView: ElementEmptyView,
 
 
7047
 
7048
- childViewContainer: '> .elementor-column-wrap > .elementor-widget-wrap',
 
 
7049
 
7050
- behaviors: function() {
7051
- var behaviors = {
7052
- Sortable: {
7053
- behaviorClass: require( 'elementor-behaviors/sortable' ),
7054
- elChildType: 'widget'
7055
- },
7056
- Resizable: {
7057
- behaviorClass: require( 'elementor-behaviors/resizable' )
7058
- },
7059
- HandleDuplicate: {
7060
- behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
7061
- },
7062
- HandleAddMode: {
7063
- behaviorClass: require( 'elementor-behaviors/duplicate' )
7064
  }
7065
  };
7066
-
7067
- return elementor.hooks.applyFilters( 'elements/column/behaviors', behaviors, this );
7068
  },
7069
 
7070
- className: function() {
7071
- var classes = BaseElementView.prototype.className.apply( this, arguments ),
7072
- type = this.isInner() ? 'inner' : 'top';
7073
 
7074
- return classes + ' elementor-column elementor-' + type + '-column';
 
7075
  },
7076
 
7077
- tagName: function() {
7078
- return this.model.getSetting( 'html_tag' ) || 'div';
 
 
 
 
 
 
 
7079
  },
7080
 
7081
- ui: function() {
7082
- var ui = BaseElementView.prototype.ui.apply( this, arguments );
7083
 
7084
- ui.columnInner = '> .elementor-column-wrap';
 
 
 
7085
 
7086
- ui.percentsTooltip = '> .elementor-element-overlay .elementor-column-percents-tooltip';
 
 
 
 
 
 
 
7087
 
7088
- return ui;
7089
- },
7090
 
7091
- triggers: {
7092
- 'click @ui.addButton': 'click:new'
7093
  },
7094
 
7095
- initialize: function() {
7096
- BaseElementView.prototype.initialize.apply( this, arguments );
 
 
7097
 
7098
- this.addControlValidator( '_inline_size', this.onEditorInlineSizeInputChange );
7099
- },
7100
 
7101
- isDroppingAllowed: function() {
7102
- var elementView = elementor.channels.panelElements.request( 'element:selected' ),
7103
- elType = elementView.model.get( 'elType' );
7104
 
7105
- if ( 'section' === elType ) {
7106
- return ! this.isInner();
7107
- }
7108
 
7109
- return 'widget' === elType;
7110
- },
 
 
7111
 
7112
- getPercentsForDisplay: function() {
7113
- var inlineSize = +this.model.getSetting( '_inline_size' ) || this.getPercentSize();
7114
 
7115
- return inlineSize.toFixed( 1 ) + '%';
 
 
7116
  },
7117
 
7118
- changeSizeUI: function() {
7119
- var self = this,
7120
- columnSize = self.model.getSetting( '_column_size' );
7121
 
7122
- self.$el.attr( 'data-col', columnSize );
 
7123
 
7124
- _.defer( function() { // Wait for the column size to be applied
7125
- if ( self.ui.percentsTooltip ) {
7126
- self.ui.percentsTooltip.text( self.getPercentsForDisplay() );
 
 
 
 
 
 
7127
  }
7128
  } );
7129
  },
7130
 
7131
- getPercentSize: function( size ) {
7132
- if ( ! size ) {
7133
- size = this.el.getBoundingClientRect().width;
7134
- }
7135
 
7136
- return +( size / this.$el.parent().width() * 100 ).toFixed( 3 );
 
 
7137
  },
7138
 
7139
- getSortableOptions: function() {
7140
- return {
7141
- connectWith: '.elementor-widget-wrap',
7142
- items: '> .elementor-element'
7143
- };
7144
  },
7145
 
7146
- changeChildContainerClasses: function() {
7147
- var emptyClass = 'elementor-element-empty',
7148
- populatedClass = 'elementor-element-populated';
7149
 
7150
- if ( this.collection.isEmpty() ) {
7151
- this.ui.columnInner.removeClass( populatedClass ).addClass( emptyClass );
7152
- } else {
7153
- this.ui.columnInner.removeClass( emptyClass ).addClass( populatedClass );
7154
- }
7155
  },
7156
 
7157
- // Events
7158
- onCollectionChanged: function() {
7159
- BaseElementView.prototype.onCollectionChanged.apply( this, arguments );
7160
 
7161
- this.changeChildContainerClasses();
7162
  },
7163
 
7164
- onRender: function() {
7165
- var self = this;
7166
-
7167
- BaseElementView.prototype.onRender.apply( self, arguments );
7168
-
7169
- self.changeChildContainerClasses();
7170
-
7171
- self.changeSizeUI();
7172
-
7173
- self.$el.html5Droppable( {
7174
- items: ' > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add',
7175
- axis: [ 'vertical' ],
7176
- groups: [ 'elementor-element' ],
7177
- isDroppingAllowed: _.bind( self.isDroppingAllowed, self ),
7178
- currentElementClass: 'elementor-html5dnd-current-element',
7179
- placeholderClass: 'elementor-sortable-placeholder elementor-widget-placeholder',
7180
- hasDraggingOnChildClass: 'elementor-dragging-on-child',
7181
- onDropping: function( side, event ) {
7182
- event.stopPropagation();
7183
 
7184
- var newIndex = Backbone.$( this ).index();
 
 
7185
 
7186
- if ( 'bottom' === side ) {
7187
- newIndex++;
7188
- }
7189
 
7190
- self.addElementFromPanel( { at: newIndex } );
7191
- }
7192
- } );
7193
  },
7194
 
7195
- onSettingsChanged: function( settings ) {
7196
- BaseElementView.prototype.onSettingsChanged.apply( this, arguments );
7197
-
7198
- var changedAttributes = settings.changedAttributes();
7199
-
7200
- if ( '_column_size' in changedAttributes || '_inline_size' in changedAttributes ) {
7201
- this.changeSizeUI();
7202
- }
7203
  },
7204
 
7205
- onEditorInlineSizeInputChange: function( newValue, oldValue ) {
7206
- var errors = [],
7207
- columnSize = this.model.getSetting( '_column_size' );
7208
 
7209
- // If there's only one column
7210
- if ( 100 === columnSize ) {
7211
- errors.push( 'Could not resize one column' );
7212
 
7213
- return errors;
7214
- }
7215
 
7216
- if ( ! oldValue ) {
7217
- oldValue = columnSize;
7218
  }
7219
 
7220
- try {
7221
- this._parent.resizeChild( this, +oldValue, +newValue );
7222
- } catch ( e ) {
7223
- if ( e.message === this._parent.errors.columnWidthTooLarge ) {
7224
- errors.push( e.message );
7225
- }
7226
- }
7227
 
7228
- return errors;
 
 
7229
  }
7230
  } );
7231
 
7232
- module.exports = ColumnView;
 
 
 
 
 
7233
 
7234
- },{"elementor-behaviors/duplicate":1,"elementor-behaviors/handle-duplicate":2,"elementor-behaviors/resizable":4,"elementor-behaviors/sortable":5,"elementor-views/base-element":80,"elementor-views/element-empty":110}],83:[function(require,module,exports){
7235
- var ControlsStack;
7236
 
7237
- ControlsStack = Marionette.CompositeView.extend( {
7238
- className: 'elementor-panel-controls-stack',
7239
 
7240
- activeTab: null,
7241
 
7242
- activeSection: null,
 
 
 
 
 
 
 
 
 
7243
 
7244
- templateHelpers: function() {
7245
  return {
7246
- elementData: elementor.getElementData( this.model )
 
7247
  };
7248
  },
7249
 
7250
  ui: function() {
7251
  return {
7252
- tabs: '.elementor-panel-navigation-tab',
7253
- reloadButton: '.elementor-update-preview-button'
 
 
 
 
7254
  };
7255
  },
7256
 
 
 
 
 
 
 
 
 
 
 
7257
  events: function() {
7258
  return {
7259
- 'click @ui.tabs': 'onClickTabControl',
7260
- 'click @ui.reloadButton': 'onReloadButtonClick'
 
 
7261
  };
7262
  },
7263
 
7264
- modelEvents: {
7265
- 'destroy': 'onModelDestroy'
7266
  },
7267
 
7268
- behaviors: {
7269
- HandleInnerTabs: {
7270
- behaviorClass: require( 'elementor-behaviors/inner-tabs' )
7271
- }
7272
  },
7273
 
7274
- initialize: function() {
7275
- this.listenTo( elementor.channels.deviceMode, 'change', this.onDeviceModeChange );
7276
- },
7277
 
7278
- filter: function( controlModel ) {
7279
- if ( controlModel.get( 'tab' ) !== this.activeTab ) {
7280
- return false;
 
 
 
7281
  }
7282
 
7283
- if ( 'section' === controlModel.get( 'type' ) ) {
7284
- return true;
7285
- }
7286
 
7287
- var section = controlModel.get( 'section' );
 
 
 
 
 
7288
 
7289
- return ! section || section === this.activeSection;
 
7290
  },
7291
 
7292
- isVisibleSectionControl: function( sectionControlModel ) {
7293
- return this.activeTab === sectionControlModel.get( 'tab' );
7294
  },
7295
 
7296
- activateTab: function( $tab ) {
7297
- var self = this,
7298
- activeTab = this.activeTab = $tab.data( 'tab' );
 
 
7299
 
7300
- this.ui.tabs.removeClass( 'active' );
 
 
7301
 
7302
- $tab.addClass( 'active' );
7303
 
7304
- var sectionControls = this.collection.filter( function( controlModel ) {
7305
- return 'section' === controlModel.get( 'type' ) && self.isVisibleSectionControl( controlModel );
7306
- } );
7307
 
7308
- if ( sectionControls[0] ) {
7309
- this.activateSection( sectionControls[0].get( 'name' ) );
7310
- }
7311
- },
7312
 
7313
- activateSection: function( sectionName ) {
7314
- this.activeSection = sectionName;
7315
  },
7316
 
7317
- getChildView: function( item ) {
7318
- var controlType = item.get( 'type' );
7319
-
7320
- return elementor.getControlView( controlType );
7321
  },
7322
 
7323
- openActiveSection: function() {
7324
- var activeSection = this.activeSection,
7325
- activeSectionView = this.children.filter( function( view ) {
7326
- return activeSection === view.model.get( 'name' );
7327
- } );
7328
 
7329
- if ( activeSectionView[0] ) {
7330
- activeSectionView[0].ui.heading.addClass( 'elementor-open' );
7331
- }
7332
- },
7333
 
7334
- onRenderCollection: function() {
7335
- this.openActiveSection();
7336
- },
 
 
 
 
 
7337
 
7338
- onRenderTemplate: function() {
7339
- this.activateTab( this.ui.tabs.eq( 0 ) );
7340
- },
 
 
 
 
 
 
 
 
7341
 
7342
- onModelDestroy: function() {
7343
- this.destroy();
7344
  },
7345
 
7346
- onClickTabControl: function( event ) {
7347
- event.preventDefault();
7348
 
7349
- var $tab = this.$( event.currentTarget );
 
7350
 
7351
- if ( this.activeTab === $tab.data( 'tab' ) ) {
7352
- return;
7353
  }
7354
 
7355
- this.activateTab( $tab );
7356
-
7357
- this._renderChildren();
7358
  },
7359
 
7360
- onReloadButtonClick: function() {
7361
- elementor.reloadPreview();
7362
  },
7363
 
7364
- onDeviceModeChange: function() {
7365
- this.$el.removeClass( 'elementor-responsive-switchers-open' );
7366
  },
7367
 
7368
- onChildviewControlSectionClicked: function( childView ) {
7369
- var isSectionOpen = childView.ui.heading.hasClass( 'elementor-open' );
7370
-
7371
- this.activateSection( isSectionOpen ? null : childView.model.get( 'name' ) );
7372
-
7373
- this._renderChildren();
7374
- },
7375
 
7376
- onChildviewResponsiveSwitcherClick: function( childView, device ) {
7377
- if ( 'desktop' === device ) {
7378
- this.$el.toggleClass( 'elementor-responsive-switchers-open' );
7379
- }
7380
- }
7381
- } );
7382
 
7383
- module.exports = ControlsStack;
 
 
 
 
 
 
 
 
 
7384
 
7385
- },{"elementor-behaviors/inner-tabs":3}],84:[function(require,module,exports){
7386
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7387
- ControlBaseMultipleItemView;
7388
 
7389
- ControlBaseMultipleItemView = ControlBaseItemView.extend( {
7390
 
7391
- applySavedValue: function() {
7392
- var values = this.getControlValue(),
7393
- $inputs = this.$( '[data-setting]' ),
7394
- self = this;
7395
 
7396
- _.each( values, function( value, key ) {
7397
- var $input = $inputs.filter( function() {
7398
- return key === this.dataset.setting;
7399
- } );
7400
 
7401
- self.setInputValue( $input, value );
7402
- } );
7403
  },
7404
 
7405
- getControlValue: function( key ) {
7406
- var values = this.elementSettingsModel.get( this.model.get( 'name' ) );
 
7407
 
7408
- if ( ! Backbone.$.isPlainObject( values ) ) {
7409
- return {};
7410
- }
7411
 
7412
- if ( key ) {
7413
- return values[ key ] || '';
7414
- }
7415
 
7416
- return elementor.helpers.cloneObject( values );
 
7417
  },
7418
 
7419
- setValue: function( key, value ) {
7420
- var values = this.getControlValue();
7421
-
7422
- if ( 'object' === typeof key ) {
7423
- _.each( key, function( internalValue, internalKey ) {
7424
- values[ internalKey ] = internalValue;
7425
- } );
7426
- } else {
7427
- values[ key ] = value;
7428
  }
7429
 
7430
- this.setSettingsModel( values );
7431
- },
7432
 
7433
- updateElementModel: function( value, input ) {
7434
- var key = input.dataset.setting;
7435
 
7436
- this.setValue( key, value );
7437
- }
7438
- }, {
7439
- // Static methods
7440
- getStyleValue: function( placeholder, controlValue ) {
7441
- if ( ! _.isObject( controlValue ) ) {
7442
- return ''; // invalid
7443
- }
7444
 
7445
- return controlValue[ placeholder ];
7446
- }
7447
- } );
7448
 
7449
- module.exports = ControlBaseMultipleItemView;
 
 
 
7450
 
7451
- },{"elementor-views/controls/base":86}],85:[function(require,module,exports){
7452
- var ControlBaseMultipleItemView = require( 'elementor-views/controls/base-multiple' ),
7453
- ControlBaseUnitsItemView;
7454
 
7455
- ControlBaseUnitsItemView = ControlBaseMultipleItemView.extend( {
7456
 
7457
- getCurrentRange: function() {
7458
- return this.getUnitRange( this.getControlValue( 'unit' ) );
7459
- },
7460
 
7461
- getUnitRange: function( unit ) {
7462
- var ranges = this.model.get( 'range' );
 
7463
 
7464
- if ( ! ranges || ! ranges[ unit ] ) {
7465
- return false;
7466
- }
 
 
7467
 
7468
- return ranges[ unit ];
7469
- }
7470
- } );
7471
 
7472
- module.exports = ControlBaseUnitsItemView;
 
 
 
7473
 
7474
- },{"elementor-views/controls/base-multiple":84}],86:[function(require,module,exports){
7475
- var ControlBaseItemView;
 
 
 
7476
 
7477
- ControlBaseItemView = Marionette.CompositeView.extend( {
7478
- ui: function() {
7479
- return {
7480
- input: 'input[data-setting][type!="checkbox"][type!="radio"]',
7481
- checkbox: 'input[data-setting][type="checkbox"]',
7482
- radio: 'input[data-setting][type="radio"]',
7483
- select: 'select[data-setting]',
7484
- textarea: 'textarea[data-setting]',
7485
- controlTitle: '.elementor-control-title',
7486
- responsiveSwitchers: '.elementor-responsive-switcher'
7487
- };
7488
  },
7489
 
7490
- behaviors: function() {
7491
- var behaviors = {};
7492
 
7493
- return elementor.hooks.applyFilters( 'controls/base/behaviors', behaviors, this );
7494
  },
7495
 
7496
- getBehavior: function( name ) {
7497
- return this._behaviors[ Object.keys( this.behaviors() ).indexOf( name ) ];
7498
  },
7499
 
7500
- className: function() {
7501
- // TODO: Any better classes for that?
7502
- var classes = 'elementor-control elementor-control-' + this.model.get( 'name' ) + ' elementor-control-type-' + this.model.get( 'type' ),
7503
- modelClasses = this.model.get( 'classes' ),
7504
- responsive = this.model.get( 'responsive' );
7505
 
7506
- if ( ! _.isEmpty( modelClasses ) ) {
7507
- classes += ' ' + modelClasses;
7508
- }
 
 
7509
 
7510
- if ( ! _.isEmpty( this.model.get( 'section' ) ) ) {
7511
- classes += ' elementor-control-under-section';
7512
- }
 
 
 
7513
 
7514
- if ( ! _.isEmpty( responsive ) ) {
7515
- classes += ' elementor-control-responsive-' + responsive.max;
7516
- }
 
 
7517
 
7518
- return classes;
 
7519
  },
7520
 
7521
- getTemplate: function() {
7522
- return Marionette.TemplateCache.get( '#tmpl-elementor-control-' + this.model.get( 'type' ) + '-content' );
7523
  },
7524
 
7525
- templateHelpers: function() {
7526
- var controlData = {
7527
- controlValue: this.getControlValue(),
7528
- _cid: this.model.cid
7529
- };
7530
-
7531
- return {
7532
- data: _.extend( {}, this.model.toJSON(), controlData )
7533
- };
7534
  },
7535
 
7536
- baseEvents: {
7537
- 'input @ui.input': 'onBaseInputChange',
7538
- 'change @ui.checkbox': 'onBaseInputChange',
7539
- 'change @ui.radio': 'onBaseInputChange',
7540
- 'input @ui.textarea': 'onBaseInputChange',
7541
- 'change @ui.select': 'onBaseInputChange',
7542
- 'click @ui.responsiveSwitchers': 'onSwitcherClick'
7543
  },
7544
 
7545
- childEvents: {},
 
 
 
 
 
7546
 
7547
- events: function() {
7548
- return _.extend( {}, this.baseEvents, this.childEvents );
7549
- },
7550
 
7551
- initialize: function( options ) {
7552
- this.elementSettingsModel = options.elementSettingsModel;
7553
 
7554
- var controlType = this.model.get( 'type' ),
7555
- controlSettings = Backbone.$.extend( true, {}, elementor.config.controls[ controlType ], this.model.attributes );
7556
 
7557
- this.model.set( controlSettings );
 
 
7558
 
7559
- this.listenTo( this.elementSettingsModel, 'change', this.toggleControlVisibility )
7560
- .listenTo( this.elementSettingsModel, 'change:external:' + this.model.get( 'name' ), this.onSettingsExternalChange );
7561
- },
7562
 
7563
- getControlValue: function() {
7564
- return this.elementSettingsModel.get( this.model.get( 'name' ) );
7565
- },
 
7566
 
7567
- setValue: function( value ) {
7568
- this.setSettingsModel( value );
7569
- },
7570
 
7571
- setSettingsModel: function( value ) {
7572
- this.elementSettingsModel.set( this.model.get( 'name' ), value );
 
 
 
7573
 
7574
- this.triggerMethod( 'settings:change' );
7575
- },
 
7576
 
7577
- applySavedValue: function() {
7578
- this.setInputValue( '[data-setting="' + this.model.get( 'name' ) + '"]', this.getControlValue() );
 
 
 
 
 
7579
  },
7580
 
7581
- getEditSettings: function( setting ) {
7582
- var settings = this.getOption( 'elementEditSettings' ).toJSON();
7583
 
7584
- if ( setting ) {
7585
- return settings[ setting ];
 
 
 
 
 
 
 
 
7586
  }
 
7587
 
7588
- return settings;
 
7589
  },
7590
 
7591
- setEditSetting: function( settingKey, settingValue ) {
7592
- var settings = this.getOption( 'elementEditSettings' );
 
7593
 
7594
- settings.set( settingKey, settingValue );
 
 
 
7595
  },
7596
 
7597
- getInputValue: function( input ) {
7598
- var $input = this.$( input ),
7599
- inputValue = $input.val(),
7600
- inputType = $input.attr( 'type' );
7601
 
7602
- if ( -1 !== [ 'radio', 'checkbox' ].indexOf( inputType ) ) {
7603
- return $input.prop( 'checked' ) ? inputValue : '';
7604
  }
7605
 
7606
- if ( 'number' === inputType && _.isFinite( inputValue ) ) {
7607
- return +inputValue;
7608
- }
7609
 
7610
- // Temp fix for jQuery (< 3.0) that return null instead of empty array
7611
- if ( 'SELECT' === input.tagName && $input.prop( 'multiple' ) && null === inputValue ) {
7612
- inputValue = [];
7613
  }
7614
 
7615
- return inputValue;
7616
  },
7617
 
7618
- setInputValue: function( input, value ) {
7619
- var $input = this.$( input ),
7620
- inputType = $input.attr( 'type' );
7621
 
7622
- if ( 'checkbox' === inputType ) {
7623
- $input.prop( 'checked', !! value );
7624
- } else if ( 'radio' === inputType ) {
7625
- $input.filter( '[value="' + value + '"]' ).prop( 'checked', true );
7626
- } else {
7627
- $input.val( value );
7628
- }
7629
  },
7630
 
7631
- onSettingsError: function() {
7632
- this.$el.addClass( 'elementor-error' );
7633
- },
7634
 
7635
- onSettingsChange: function() {
7636
- this.$el.removeClass( 'elementor-error' );
7637
  },
7638
 
7639
- onRender: function() {
7640
- this.applySavedValue();
7641
-
7642
- var layoutType = this.model.get( 'label_block' ) ? 'block' : 'inline',
7643
- showLabel = this.model.get( 'show_label' ),
7644
- elClasses = 'elementor-label-' + layoutType;
7645
-
7646
- elClasses += ' elementor-control-separator-' + this.model.get( 'separator' );
7647
-
7648
- if ( ! showLabel ) {
7649
- elClasses += ' elementor-control-hidden-label';
7650
- }
7651
-
7652
- this.$el.addClass( elClasses );
7653
-
7654
- this.renderResponsiveSwitchers();
7655
 
7656
- this.triggerMethod( 'ready' );
7657
 
7658
- this.toggleControlVisibility();
7659
- this.addTooltip();
 
 
 
7660
  },
7661
 
7662
- onBaseInputChange: function( event ) {
7663
- var input = event.currentTarget,
7664
- value = this.getInputValue( input ),
7665
- validators = this.elementSettingsModel.validators[ this.model.get( 'name' ) ];
7666
 
7667
- if ( validators ) {
7668
- var oldValue = this.getControlValue();
7669
 
7670
- var isValidValue = validators.every( function( validator ) {
7671
- return validator.isValid( value, oldValue );
7672
- } );
 
7673
 
7674
- if ( ! isValidValue ) {
7675
- this.setInputValue( input, oldValue );
7676
 
7677
- return;
 
 
 
 
 
 
 
 
 
 
7678
  }
7679
- }
7680
-
7681
- this.updateElementModel( value, input );
7682
 
7683
- this.triggerMethod( 'input:change', event );
7684
  },
7685
 
7686
- onSwitcherClick: function( event ) {
7687
- var device = Backbone.$( event.currentTarget ).data( 'device' );
 
 
 
 
7688
 
7689
- elementor.changeDeviceMode( device );
 
 
7690
 
7691
- this.triggerMethod( 'responsive:switcher:click', device );
 
7692
  },
7693
 
7694
- onSettingsExternalChange: function() {
7695
- this.applySavedValue();
7696
- this.triggerMethod( 'after:external:change' );
 
 
7697
  },
7698
 
7699
- renderResponsiveSwitchers: function() {
7700
- if ( _.isEmpty( this.model.get( 'responsive' ) ) ) {
7701
- return;
 
 
 
 
 
 
 
7702
  }
7703
 
7704
- var templateHtml = Marionette.Renderer.render( '#tmpl-elementor-control-responsive-switchers', this.model.attributes );
7705
 
7706
- this.ui.controlTitle.after( templateHtml );
7707
  },
7708
 
7709
- toggleControlVisibility: function() {
7710
- var isVisible = elementor.helpers.isActiveControl( this.model, this.elementSettingsModel.attributes );
7711
-
7712
- this.$el.toggleClass( 'elementor-hidden-control', ! isVisible );
7713
 
7714
- elementor.channels.data.trigger( 'scrollbar:update' );
 
7715
  },
7716
 
7717
- onReady: function() {},
 
 
 
7718
 
7719
- onAfterExternalChange: function() {
7720
- this.hideTooltip();
7721
- this.render();
7722
- },
7723
 
7724
- addTooltip: function() {
7725
- // Create tooltip on controls
7726
- this.$( '.tooltip-target' ).tipsy( {
7727
- gravity: function() {
7728
- // `n` for down, `s` for up
7729
- var gravity = Backbone.$( this ).data( 'tooltip-pos' );
7730
 
7731
- if ( undefined !== gravity ) {
7732
- return gravity;
7733
- } else {
7734
- return 'n';
7735
- }
 
 
 
 
 
 
 
7736
  },
7737
- title: function() {
7738
- return this.getAttribute( 'data-tooltip' );
 
 
 
 
 
 
7739
  }
7740
- } );
7741
- },
7742
 
7743
- hideTooltip: function() {
7744
- jQuery( '.tipsy' ).hide();
7745
  },
7746
 
7747
- updateElementModel: function( value ) {
7748
- this.setValue( value );
7749
- }
7750
- }, {
7751
- // Static methods
7752
- getStyleValue: function( placeholder, controlValue ) {
7753
- return controlValue;
7754
- }
7755
- } );
7756
 
7757
- module.exports = ControlBaseItemView;
 
7758
 
7759
- },{}],87:[function(require,module,exports){
7760
- var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
7761
- ControlBoxShadowItemView;
7762
 
7763
- ControlBoxShadowItemView = ControlMultipleBaseItemView.extend( {
7764
  ui: function() {
7765
- var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
7766
 
7767
- ui.sliders = '.elementor-slider';
7768
- ui.colors = '.elementor-shadow-color-picker';
 
7769
 
7770
  return ui;
7771
  },
7772
 
7773
- childEvents: {
7774
- 'slide @ui.sliders': 'onSlideChange'
7775
  },
7776
 
7777
- initSliders: function() {
7778
- var value = this.getControlValue();
7779
 
7780
- this.ui.sliders.each( function() {
7781
- var $slider = Backbone.$( this ),
7782
- $input = $slider.next( '.elementor-slider-input' ).find( 'input' );
7783
 
7784
- $slider.slider( {
7785
- value: value[ this.dataset.input ],
7786
- min: +$input.attr( 'min' ),
7787
- max: +$input.attr( 'max' )
7788
- } );
7789
- } );
 
 
 
7790
  },
7791
 
7792
- initColors: function() {
7793
- var self = this;
7794
 
7795
- elementor.helpers.wpColorPicker( this.ui.colors, {
7796
- change: function() {
7797
- var $this = Backbone.$( this ),
7798
- type = $this.data( 'setting' );
7799
 
7800
- self.setValue( type, $this.wpColorPicker( 'color' ) );
7801
- },
 
7802
 
7803
- clear: function() {
7804
- self.setValue( this.dataset.setting, '' );
 
 
 
7805
  }
7806
  } );
7807
  },
7808
 
7809
- onInputChange: function( event ) {
7810
- var type = event.currentTarget.dataset.setting,
7811
- $slider = this.ui.sliders.filter( '[data-input="' + type + '"]' );
 
7812
 
7813
- $slider.slider( 'value', this.getControlValue( type ) );
7814
  },
7815
 
7816
- onReady: function() {
7817
- this.initSliders();
7818
- this.initColors();
 
 
7819
  },
7820
 
7821
- onSlideChange: function( event, ui ) {
7822
- var type = event.currentTarget.dataset.input,
7823
- $input = this.ui.input.filter( '[data-setting="' + type + '"]' );
7824
 
7825
- $input.val( ui.value );
7826
- this.setValue( type, ui.value );
 
 
 
7827
  },
7828
 
7829
- onBeforeDestroy: function() {
7830
- this.ui.colors.each( function() {
7831
- var $color = Backbone.$( this );
7832
-
7833
- if ( $color.wpColorPicker( 'instance' ) ) {
7834
- $color.wpColorPicker( 'close' );
7835
- }
7836
- } );
7837
 
7838
- this.$el.remove();
7839
- }
7840
- } );
7841
 
7842
- module.exports = ControlBoxShadowItemView;
 
7843
 
7844
- },{"elementor-views/controls/base-multiple":84}],88:[function(require,module,exports){
7845
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7846
- ControlChooseItemView;
7847
 
7848
- ControlChooseItemView = ControlBaseItemView.extend( {
7849
- ui: function() {
7850
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
7851
 
7852
- ui.inputs = '[type="radio"]';
7853
 
7854
- return ui;
7855
- },
 
 
 
 
 
 
 
 
7856
 
7857
- childEvents: {
7858
- 'mousedown label': 'onMouseDownLabel',
7859
- 'click @ui.inputs': 'onClickInput',
7860
- 'change @ui.inputs': 'onBaseInputChange'
7861
- },
7862
 
7863
- onMouseDownLabel: function( event ) {
7864
- var $clickedLabel = this.$( event.currentTarget ),
7865
- $selectedInput = this.$( '#' + $clickedLabel.attr( 'for' ) );
7866
 
7867
- $selectedInput.data( 'checked', $selectedInput.prop( 'checked' ) );
 
 
7868
  },
7869
 
7870
- onClickInput: function( event ) {
7871
- if ( ! this.model.get( 'toggle' ) ) {
7872
- return;
7873
- }
7874
 
7875
- var $selectedInput = this.$( event.currentTarget );
7876
 
7877
- if ( $selectedInput.data( 'checked' ) ) {
7878
- $selectedInput.prop( 'checked', false ).trigger( 'change' );
7879
  }
7880
  },
7881
 
7882
- onRender: function() {
7883
- ControlBaseItemView.prototype.onRender.apply( this, arguments );
 
7884
 
7885
- var currentValue = this.getControlValue();
 
 
7886
 
7887
- if ( currentValue ) {
7888
- this.ui.inputs.filter( '[value="' + currentValue + '"]' ).prop( 'checked', true );
7889
- } else if ( ! this.model.get( 'toggle' ) ) {
7890
- this.ui.inputs.first().prop( 'checked', true ).trigger( 'change' );
7891
  }
7892
- }
7893
- } );
7894
 
7895
- module.exports = ControlChooseItemView;
7896
-
7897
- },{"elementor-views/controls/base":86}],89:[function(require,module,exports){
7898
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7899
- ControlCodeEditorItemView;
7900
 
7901
- ControlCodeEditorItemView = ControlBaseItemView.extend( {
7902
-
7903
- ui: function() {
7904
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
 
 
 
7905
 
7906
- ui.editor = '.elementor-code-editor';
 
 
7907
 
7908
- return ui;
7909
- },
7910
 
7911
- onReady: function() {
7912
- var self = this;
7913
 
7914
- if ( 'undefined' === typeof ace ) {
7915
- return;
7916
- }
7917
 
7918
- self.editor = ace.edit( this.ui.editor[0] );
7919
 
7920
- Backbone.$( self.editor.container ).addClass( 'elementor-input-style elementor-code-editor' );
7921
 
7922
- self.editor.setOptions( {
7923
- mode: 'ace/mode/' + self.model.attributes.language,
7924
- minLines: 10,
7925
- maxLines: Infinity,
7926
- showGutter: true,
7927
- useWorker: true
7928
- } );
7929
 
7930
- self.editor.setValue( self.getControlValue(), -1 ); // -1 = move cursor to the start
 
 
 
 
 
7931
 
7932
- self.editor.on( 'change', function() {
7933
- self.setValue( self.editor.getValue() );
7934
- } );
 
 
 
7935
 
7936
- if ( 'html' === self.model.attributes.language ) {
7937
- // Remove the `doctype` annotation
7938
- var session = self.editor.getSession();
7939
 
7940
- session.on( 'changeAnnotation', function() {
7941
- var annotations = session.getAnnotations() || [],
7942
- annotationsLength = annotations.length,
7943
- index = annotations.length;
 
7944
 
7945
- while ( index-- ) {
7946
- if ( /doctype first\. Expected/.test( annotations[ index ].text ) ) {
7947
- annotations.splice( index, 1 );
7948
- }
7949
- }
7950
 
7951
- if ( annotationsLength > annotations.length ) {
7952
- session.setAnnotations( annotations );
7953
- }
7954
- }) ;
7955
  }
7956
- }
7957
- } );
7958
 
7959
- module.exports = ControlCodeEditorItemView;
 
 
7960
 
7961
- },{"elementor-views/controls/base":86}],90:[function(require,module,exports){
7962
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7963
- ControlColorItemView;
7964
 
7965
- ControlColorItemView = ControlBaseItemView.extend( {
7966
- onReady: function() {
7967
- var self = this;
7968
 
7969
- elementor.helpers.wpColorPicker( self.ui.input, {
7970
- change: function() {
7971
- self.ui.input.val( self.ui.input.wpColorPicker( 'color' ) ).trigger( 'input' );
7972
- },
7973
- clear: function() {
7974
- self.setValue( '' );
7975
- }
7976
- } ).wpColorPicker( 'instance' )
7977
- .wrap.find( '> .wp-picker-input-wrap > .wp-color-picker' )
7978
- .removeAttr( 'maxlength' );
7979
  },
7980
 
7981
- onBeforeDestroy: function() {
7982
- if ( this.ui.input.wpColorPicker( 'instance' ) ) {
7983
- this.ui.input.wpColorPicker( 'close' );
7984
- }
7985
 
7986
- this.$el.remove();
7987
- }
7988
- } );
7989
 
7990
- module.exports = ControlColorItemView;
7991
 
7992
- },{"elementor-views/controls/base":86}],91:[function(require,module,exports){
7993
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7994
- ControlDateTimePickerItemView;
7995
 
7996
- ControlDateTimePickerItemView = ControlBaseItemView.extend( {
7997
- ui: function() {
7998
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
 
7999
 
8000
- ui.picker = '.elementor-date-time-picker';
 
 
8001
 
8002
- return ui;
 
 
 
8003
  },
8004
 
8005
- onReady: function() {
8006
- var self = this;
 
 
 
8007
 
8008
- var options = _.extend( this.model.get( 'picker_options' ), {
8009
- onHide: function() {
8010
- self.saveValue();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8011
  }
8012
  } );
8013
 
8014
- this.ui.picker.appendDtpicker( options ).handleDtpicker( 'setDate', new Date( this.getControlValue() ) );
8015
  },
8016
 
8017
- saveValue: function() {
8018
- this.setValue( this.ui.input.val() );
8019
  },
8020
 
8021
- onBeforeDestroy: function() {
8022
- this.saveValue();
8023
- this.ui.picker.dtpicker( 'destroy' );
8024
- }
8025
- } );
8026
 
8027
- module.exports = ControlDateTimePickerItemView;
 
8028
 
8029
- },{"elementor-views/controls/base":86}],92:[function(require,module,exports){
8030
- var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),
8031
- ControlDimensionsItemView;
8032
 
8033
- ControlDimensionsItemView = ControlBaseUnitsItemView.extend( {
8034
- ui: function() {
8035
- var ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );
8036
 
8037
- ui.controls = '.elementor-control-dimension > input:enabled';
8038
- ui.link = 'button.elementor-link-dimensions';
8039
 
8040
- return ui;
8041
  },
8042
 
8043
- childEvents: {
8044
- 'click @ui.link': 'onLinkDimensionsClicked'
8045
  },
8046
 
8047
- defaultDimensionValue: 0,
8048
-
8049
- initialize: function() {
8050
- ControlBaseUnitsItemView.prototype.initialize.apply( this, arguments );
8051
-
8052
- // TODO: Need to be in helpers, and not in variable
8053
- this.model.set( 'allowed_dimensions', this.filterDimensions( this.model.get( 'allowed_dimensions' ) ) );
8054
  },
8055
 
8056
- getPossibleDimensions: function() {
8057
- return [
8058
- 'top',
8059
- 'right',
8060
- 'bottom',
8061
- 'left'
8062
- ];
8063
- },
8064
 
8065
- filterDimensions: function( filter ) {
8066
- filter = filter || 'all';
8067
 
8068
- var dimensions = this.getPossibleDimensions();
 
8069
 
8070
- if ( 'all' === filter ) {
8071
- return dimensions;
 
8072
  }
 
 
8073
 
8074
- if ( ! _.isArray( filter ) ) {
8075
- if ( 'horizontal' === filter ) {
8076
- filter = [ 'right', 'left' ];
8077
- } else if ( 'vertical' === filter ) {
8078
- filter = [ 'top', 'bottom' ];
8079
- }
8080
- }
8081
 
8082
- return filter;
8083
- },
 
8084
 
8085
- onReady: function() {
8086
- var currentValue = this.getControlValue();
8087
 
8088
- if ( ! this.isLinkedDimensions() ) {
8089
- this.ui.link.addClass( 'unlinked' );
 
 
8090
 
8091
- this.ui.controls.each( _.bind( function( index, element ) {
8092
- var value = currentValue[ element.dataset.setting ];
 
 
8093
 
8094
- if ( _.isEmpty( value ) ) {
8095
- value = this.defaultDimensionValue;
8096
- }
8097
 
8098
- this.$( element ).val( value );
8099
- }, this ) );
 
 
 
8100
  }
8101
 
8102
- this.fillEmptyDimensions();
8103
- },
 
8104
 
8105
- updateDimensionsValue: function() {
8106
- var currentValue = {},
8107
- dimensions = this.getPossibleDimensions(),
8108
- $controls = this.ui.controls;
8109
 
8110
- dimensions.forEach( _.bind( function( dimension ) {
8111
- var $element = $controls.filter( '[data-setting="' + dimension + '"]' );
8112
 
8113
- currentValue[ dimension ] = $element.length ? $element.val() : this.defaultDimensionValue;
8114
- }, this ) );
 
 
 
 
 
8115
 
8116
- this.setValue( currentValue );
8117
  },
8118
 
8119
- fillEmptyDimensions: function() {
8120
- var dimensions = this.getPossibleDimensions(),
8121
- allowedDimensions = this.model.get( 'allowed_dimensions' ),
8122
- $controls = this.ui.controls;
8123
 
8124
- if ( this.isLinkedDimensions() ) {
8125
- return;
 
 
 
 
 
8126
  }
8127
 
8128
- dimensions.forEach( _.bind( function( dimension ) {
8129
- var $element = $controls.filter( '[data-setting="' + dimension + '"]' ),
8130
- isAllowedDimension = -1 !== _.indexOf( allowedDimensions, dimension );
8131
-
8132
- if ( isAllowedDimension && $element.length && _.isEmpty( $element.val() ) ) {
8133
- $element.val( this.defaultDimensionValue );
8134
- }
8135
 
8136
- }, this ) );
8137
- },
8138
 
8139
- updateDimensions: function() {
8140
- this.fillEmptyDimensions();
8141
- this.updateDimensionsValue();
8142
- },
8143
 
8144
- resetDimensions: function() {
8145
- this.ui.controls.val( '' );
8146
 
8147
- this.updateDimensionsValue();
 
8148
  },
8149
 
8150
- onInputChange: function( event ) {
8151
- var inputSetting = event.target.dataset.setting;
8152
 
8153
- if ( 'unit' === inputSetting ) {
8154
- this.resetDimensions();
8155
  }
8156
 
8157
- if ( ! _.contains( this.getPossibleDimensions(), inputSetting ) ) {
8158
- return;
8159
- }
8160
 
8161
- if ( this.isLinkedDimensions() ) {
8162
- var $thisControl = this.$( event.target );
8163
 
8164
- this.ui.controls.val( $thisControl.val() );
8165
- }
8166
 
8167
- this.updateDimensions();
 
 
 
 
 
 
 
 
 
 
8168
  },
8169
 
8170
- onLinkDimensionsClicked: function( event ) {
8171
- event.preventDefault();
8172
- event.stopPropagation();
8173
 
8174
- this.ui.link.toggleClass( 'unlinked' );
 
8175
 
8176
- this.setValue( 'isLinked', ! this.ui.link.hasClass( 'unlinked' ) );
 
 
 
 
8177
 
8178
- if ( this.isLinkedDimensions() ) {
8179
- // Set all controls value from the first control.
8180
- this.ui.controls.val( this.ui.controls.eq( 0 ).val() );
8181
  }
8182
 
8183
- this.updateDimensions();
8184
- },
 
8185
 
8186
- isLinkedDimensions: function() {
8187
- return this.getControlValue( 'isLinked' );
8188
- }
8189
- } );
8190
 
8191
- module.exports = ControlDimensionsItemView;
 
8192
 
8193
- },{"elementor-views/controls/base-units":85}],93:[function(require,module,exports){
8194
- var ControlSelect2View = require( 'elementor-views/controls/select2' );
 
 
 
 
 
 
 
8195
 
8196
- module.exports = ControlSelect2View.extend( {
8197
- getSelect2Options: function() {
8198
  return {
8199
- dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
8200
  };
8201
  },
8202
 
8203
- templateHelpers: function() {
8204
- var helpers = ControlSelect2View.prototype.templateHelpers.apply( this, arguments );
8205
-
8206
- helpers.getFontsByGroups = _.bind( function( groups ) {
8207
- var fonts = this.model.get( 'fonts' ),
8208
- filteredFonts = {};
 
 
8209
 
8210
- _.each( fonts, function( fontType, fontName ) {
8211
- if ( _.isArray( groups ) && _.contains( groups, fontType ) || fontType === groups ) {
8212
- filteredFonts[ fontName ] = fontType;
8213
- }
8214
- } );
8215
 
8216
- return filteredFonts;
8217
- }, this );
 
8218
 
8219
- return helpers;
8220
- }
8221
- } );
8222
 
8223
- },{"elementor-views/controls/select2":103}],94:[function(require,module,exports){
8224
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8225
- ControlMediaItemView;
8226
 
8227
- ControlMediaItemView = ControlBaseItemView.extend( {
8228
- ui: function() {
8229
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
8230
 
8231
- ui.addImages = '.elementor-control-gallery-add';
8232
- ui.clearGallery = '.elementor-control-gallery-clear';
8233
- ui.galleryThumbnails = '.elementor-control-gallery-thumbnails';
8234
 
8235
- return ui;
 
8236
  },
8237
 
8238
- childEvents: {
8239
- 'click @ui.addImages': 'onAddImagesClick',
8240
- 'click @ui.clearGallery': 'onClearGalleryClick',
8241
- 'click @ui.galleryThumbnails': 'onGalleryThumbnailsClick'
8242
  },
8243
 
8244
- onReady: function() {
8245
- var hasImages = this.hasImages();
8246
 
8247
- this.$el
8248
- .toggleClass( 'elementor-gallery-has-images', hasImages )
8249
- .toggleClass( 'elementor-gallery-empty', ! hasImages );
8250
 
8251
- this.initRemoveDialog();
 
8252
  },
8253
 
8254
- hasImages: function() {
8255
- return !! this.getControlValue().length;
 
 
 
 
 
 
8256
  },
8257
 
8258
- openFrame: function( action ) {
8259
- this.initFrame( action );
8260
 
8261
- this.frame.open();
8262
  },
8263
 
8264
- initFrame: function( action ) {
8265
- var frameStates = {
8266
- create: 'gallery',
8267
- add: 'gallery-library',
8268
- edit: 'gallery-edit'
8269
- };
8270
 
8271
- var options = {
8272
- frame: 'post',
8273
- multiple: true,
8274
- state: frameStates[ action ],
8275
- button: {
8276
- text: elementor.translate( 'insert_media' )
8277
- }
8278
- };
8279
 
8280
- if ( this.hasImages() ) {
8281
- options.selection = this.fetchSelection();
8282
  }
8283
 
8284
- this.frame = wp.media( options );
 
 
 
8285
 
8286
- // When a file is selected, run a callback.
8287
- this.frame.on( {
8288
- 'update': this.select,
8289
- 'menu:render:default': this.menuRender,
8290
- 'content:render:browse': this.gallerySettings
8291
- }, this );
8292
  },
8293
 
8294
- menuRender: function( view ) {
8295
- view.unset( 'insert' );
8296
- view.unset( 'featured-image' );
8297
- },
8298
 
8299
- gallerySettings: function( browser ) {
8300
- browser.sidebar.on( 'ready', function() {
8301
- browser.sidebar.unset( 'gallery' );
8302
- } );
 
 
 
8303
  },
8304
 
8305
- fetchSelection: function() {
8306
- var attachments = wp.media.query( {
8307
- orderby: 'post__in',
8308
- order: 'ASC',
8309
- type: 'image',
8310
- perPage: -1,
8311
- post__in: _.pluck( this.getControlValue(), 'id' )
8312
- } );
8313
-
8314
- return new wp.media.model.Selection( attachments.models, {
8315
- props: attachments.props.toJSON(),
8316
- multiple: true
8317
- } );
8318
  },
8319
 
8320
- /**
8321
- * Callback handler for when an attachment is selected in the media modal.
8322
- * Gets the selected image information, and sets it within the control.
8323
- */
8324
- select: function( selection ) {
8325
- var images = [];
8326
 
8327
- selection.each( function( image ) {
8328
- images.push( {
8329
- id: image.get( 'id' ),
8330
- url: image.get( 'url' )
8331
- } );
8332
- } );
8333
 
8334
- this.setValue( images );
 
 
8335
 
8336
- this.render();
8337
- },
8338
 
8339
- onBeforeDestroy: function() {
8340
- if ( this.frame ) {
8341
- this.frame.off();
8342
  }
8343
 
8344
- this.$el.remove();
8345
- },
8346
-
8347
- resetGallery: function() {
8348
- this.setValue( '' );
8349
 
8350
- this.render();
 
8351
  },
8352
 
8353
- initRemoveDialog: function() {
8354
- var removeDialog;
8355
-
8356
- this.getRemoveDialog = function() {
8357
- if ( ! removeDialog ) {
8358
- removeDialog = elementor.dialogsManager.createWidget( 'confirm', {
8359
- message: elementor.translate( 'dialog_confirm_gallery_delete' ),
8360
- headerMessage: elementor.translate( 'delete_gallery' ),
8361
- strings: {
8362
- confirm: elementor.translate( 'delete' ),
8363
- cancel: elementor.translate( 'cancel' )
8364
- },
8365
- defaultOption: 'confirm',
8366
- onConfirm: _.bind( this.resetGallery, this )
8367
- } );
8368
- }
8369
 
8370
- return removeDialog;
8371
- };
8372
- },
8373
 
8374
- onAddImagesClick: function() {
8375
- this.openFrame( this.hasImages() ? 'add' : 'create' );
8376
- },
8377
 
8378
- onClearGalleryClick: function() {
8379
- this.getRemoveDialog().show();
8380
- },
8381
 
8382
- onGalleryThumbnailsClick: function() {
8383
- this.openFrame( 'edit' );
8384
- }
8385
- } );
8386
 
8387
- module.exports = ControlMediaItemView;
8388
 
8389
- },{"elementor-views/controls/base":86}],95:[function(require,module,exports){
8390
- var ControlSelect2View = require( 'elementor-views/controls/select2' ),
8391
- ControlIconView;
8392
 
8393
- ControlIconView = ControlSelect2View.extend( {
 
8394
 
8395
- initialize: function() {
8396
- ControlSelect2View.prototype.initialize.apply( this, arguments );
8397
 
8398
- this.filterIcons();
8399
  },
8400
 
8401
- filterIcons: function() {
8402
- var icons = this.model.get( 'icons' ),
8403
- include = this.model.get( 'include' ),
8404
- exclude = this.model.get( 'exclude' );
8405
-
8406
- if ( include ) {
8407
- var filteredIcons = {};
8408
-
8409
- _.each( include, function( iconKey ) {
8410
- filteredIcons[ iconKey ] = icons[ iconKey ];
8411
- } );
8412
 
8413
- this.model.set( 'icons', filteredIcons );
 
8414
  return;
8415
  }
8416
 
8417
- if ( exclude ) {
8418
- _.each( exclude, function( iconKey ) {
8419
- delete icons[ iconKey ];
8420
- } );
8421
- }
8422
- },
8423
-
8424
- iconsList: function( icon ) {
8425
- if ( ! icon.id ) {
8426
- return icon.text;
8427
- }
8428
 
8429
- return Backbone.$(
8430
- '<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>'
8431
- );
8432
  },
8433
 
8434
- getSelect2Options: function() {
8435
- return {
8436
- allowClear: true,
8437
- templateResult: _.bind( this.iconsList, this ),
8438
- templateSelection: _.bind( this.iconsList, this )
8439
- };
8440
- }
8441
- } );
8442
-
8443
- module.exports = ControlIconView;
8444
-
8445
- },{"elementor-views/controls/select2":103}],96:[function(require,module,exports){
8446
- var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8447
- ControlImageDimensionsItemView;
8448
-
8449
- ControlImageDimensionsItemView = ControlMultipleBaseItemView.extend( {
8450
- ui: function() {
8451
- return {
8452
- inputWidth: 'input[data-setting="width"]',
8453
- inputHeight: 'input[data-setting="height"]',
8454
 
8455
- btnApply: 'button.elementor-image-dimensions-apply-button'
8456
- };
8457
- },
8458
 
8459
- // Override the base events
8460
- baseEvents: {
8461
- 'click @ui.btnApply': 'onApplyClicked'
8462
  },
8463
 
8464
- onApplyClicked: function( event ) {
8465
- event.preventDefault();
8466
 
8467
- this.setValue( {
8468
- width: this.ui.inputWidth.val(),
8469
- height: this.ui.inputHeight.val()
8470
- } );
 
 
 
8471
  }
8472
  } );
8473
 
8474
- module.exports = ControlImageDimensionsItemView;
8475
 
8476
- },{"elementor-views/controls/base-multiple":84}],97:[function(require,module,exports){
8477
  var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8478
- ControlMediaItemView;
8479
 
8480
- ControlMediaItemView = ControlMultipleBaseItemView.extend( {
8481
  ui: function() {
8482
  var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
8483
 
8484
- ui.controlMedia = '.elementor-control-media';
8485
- ui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';
8486
- ui.deleteButton = '.elementor-control-media-delete';
8487
 
8488
  return ui;
8489
  },
8490
 
8491
  childEvents: {
8492
- 'click @ui.frameOpeners': 'openFrame',
8493
- 'click @ui.deleteButton': 'deleteImage'
8494
  },
8495
 
8496
- onReady: function() {
8497
- if ( _.isEmpty( this.getControlValue( 'url' ) ) ) {
8498
- this.ui.controlMedia.addClass( 'media-empty' );
8499
- }
8500
- },
8501
 
8502
- openFrame: function() {
8503
- if ( ! this.frame ) {
8504
- this.initFrame();
8505
- }
8506
 
8507
- this.frame.open();
 
 
 
 
 
8508
  },
8509
 
8510
- deleteImage: function() {
8511
- this.setValue( {
8512
- url: '',
8513
- id: ''
8514
- } );
8515
 
8516
- this.render();
8517
- },
 
 
8518
 
8519
- /**
8520
- * Create a media modal select frame, and store it so the instance can be reused when needed.
8521
- */
8522
- initFrame: function() {
8523
- this.frame = wp.media( {
8524
- button: {
8525
- text: elementor.translate( 'insert_media' )
8526
  },
8527
- states: [
8528
- new wp.media.controller.Library( {
8529
- title: elementor.translate( 'insert_media' ),
8530
- library: wp.media.query( { type: 'image' } ),
8531
- multiple: false,
8532
- date: false
8533
- } )
8534
- ]
8535
  } );
 
8536
 
8537
- // When a file is selected, run a callback.
8538
- this.frame.on( 'insert select', _.bind( this.select, this ) );
 
 
 
8539
  },
8540
 
8541
- /**
8542
- * Callback handler for when an attachment is selected in the media modal.
8543
- * Gets the selected image information, and sets it within the control.
8544
- */
8545
- select: function() {
8546
- // Get the attachment from the modal frame.
8547
- var attachment = this.frame.state().get( 'selection' ).first().toJSON();
8548
 
8549
- if ( attachment.url ) {
8550
- this.setValue( {
8551
- url: attachment.url,
8552
- id: attachment.id
8553
- } );
8554
 
8555
- this.render();
8556
- }
8557
  },
8558
 
8559
  onBeforeDestroy: function() {
 
 
 
 
 
 
 
 
8560
  this.$el.remove();
8561
  }
8562
  } );
8563
 
8564
- module.exports = ControlMediaItemView;
8565
 
8566
- },{"elementor-views/controls/base-multiple":84}],98:[function(require,module,exports){
8567
  var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8568
- ControlNumberItemView;
8569
 
8570
- ControlNumberItemView = ControlBaseItemView.extend( {
8571
- correctionTimeOut: 0,
 
8572
 
8573
- getInputValue: function( input ) {
8574
- var self = this,
8575
- inputValue = ControlBaseItemView.prototype.getInputValue.apply( self, arguments ),
8576
- validValue = inputValue,
8577
- min = self.model.get( 'min' ),
8578
- max = self.model.get( 'max' );
8579
 
8580
- if ( ! _.isFinite( inputValue ) && self.model.get( 'nullable' ) ) {
8581
- return inputValue;
8582
- }
8583
 
8584
- if ( _.isFinite( min ) && inputValue < min ) {
8585
- validValue = min;
8586
- }
 
 
8587
 
8588
- if ( _.isFinite( max ) && inputValue > max ) {
8589
- validValue = max;
8590
- }
8591
 
8592
- return validValue;
8593
  },
8594
 
8595
- updateElementModel: function( value, input ) {
8596
- var self = this,
8597
- originalInputValue = ControlBaseItemView.prototype.getInputValue.call( self, input );
8598
-
8599
- if ( originalInputValue !== value ) {
8600
- self.correctionTimeOut = setTimeout( function() {
8601
- self.setInputValue( input, value );
8602
- }, 1200 );
8603
  }
8604
 
8605
- ControlBaseItemView.prototype.updateElementModel.apply( this, arguments );
8606
- },
8607
 
8608
- onBaseInputChange: function() {
8609
- if ( this.correctionTimeOut ) {
8610
- clearTimeout( this.correctionTimeOut );
8611
  }
 
8612
 
8613
- ControlBaseItemView.prototype.onBaseInputChange.apply( this, arguments );
 
 
 
 
 
 
 
 
 
8614
  }
8615
  } );
8616
 
8617
- module.exports = ControlNumberItemView;
8618
 
8619
- },{"elementor-views/controls/base":86}],99:[function(require,module,exports){
8620
- var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8621
- ControlOrderItemView;
 
 
8622
 
8623
- ControlOrderItemView = ControlMultipleBaseItemView.extend( {
8624
  ui: function() {
8625
- var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
8626
 
8627
- ui.reverseOrderLabel = '.elementor-control-order-label';
8628
 
8629
  return ui;
8630
  },
8631
 
8632
- changeLabelTitle: function() {
8633
- var reverseOrder = this.getControlValue( 'reverse_order' );
8634
 
8635
- this.ui.reverseOrderLabel.attr( 'title', elementor.translate( reverseOrder ? 'asc' : 'desc' ) );
8636
- },
 
8637
 
8638
- onRender: function() {
8639
- ControlMultipleBaseItemView.prototype.onRender.apply( this, arguments );
8640
 
8641
- this.changeLabelTitle();
8642
- },
8643
 
8644
- onInputChange: function() {
8645
- this.changeLabelTitle();
8646
- }
8647
- } );
 
 
 
8648
 
8649
- module.exports = ControlOrderItemView;
8650
 
8651
- },{"elementor-views/controls/base-multiple":84}],100:[function(require,module,exports){
8652
- var RepeaterRowView;
 
8653
 
8654
- RepeaterRowView = Marionette.CompositeView.extend( {
8655
- template: Marionette.TemplateCache.get( '#tmpl-elementor-repeater-row' ),
 
8656
 
8657
- className: 'repeater-fields',
 
 
 
8658
 
8659
- ui: {
8660
- duplicateButton: '.elementor-repeater-tool-duplicate',
8661
- editButton: '.elementor-repeater-tool-edit',
8662
- removeButton: '.elementor-repeater-tool-remove',
8663
- itemTitle: '.elementor-repeater-row-item-title'
8664
- },
8665
 
8666
- behaviors: {
8667
- HandleInnerTabs: {
8668
- behaviorClass: require( 'elementor-behaviors/inner-tabs' )
 
8669
  }
8670
- },
8671
-
8672
- triggers: {
8673
- 'click @ui.removeButton': 'click:remove',
8674
- 'click @ui.duplicateButton': 'click:duplicate',
8675
- 'click @ui.itemTitle': 'click:edit'
8676
- },
8677
 
8678
- templateHelpers: function() {
8679
- return {
8680
- itemIndex: this.getOption( 'itemIndex' )
8681
- };
8682
- },
8683
 
8684
- childViewContainer: '.elementor-repeater-row-controls',
 
 
8685
 
8686
- getChildView: function( item ) {
8687
- var controlType = item.get( 'type' );
 
8688
 
8689
- return elementor.getControlView( controlType );
 
 
 
 
 
 
 
 
 
8690
  },
8691
 
8692
- childViewOptions: function() {
8693
- return {
8694
- elementSettingsModel: this.model
8695
- };
8696
- },
8697
 
8698
- checkConditions: function() {
8699
- var self = this;
 
8700
 
8701
- self.collection.each( function( model ) {
8702
- var conditions = model.get( 'conditions' ),
8703
- parentConditions = model.get( 'parent_conditions' ),
8704
- isVisible = true;
8705
 
8706
- if ( conditions ) {
8707
- isVisible = elementor.conditions.check( conditions, self.model.attributes );
8708
- }
8709
 
8710
- if ( parentConditions ) {
8711
- isVisible = elementor.conditions.check( parentConditions, self.getOption( 'parentModel' ).attributes );
8712
- }
8713
 
8714
- var child = self.children.findByModelCid( model.cid );
8715
 
8716
- child.$el.toggleClass( 'elementor-panel-hide', ! isVisible );
 
 
 
 
 
 
 
 
 
8717
  } );
 
 
8718
  },
8719
 
8720
- updateIndex: function( newIndex ) {
8721
- this.itemIndex = newIndex;
8722
- this.setTitle();
8723
  },
8724
 
8725
- setTitle: function() {
8726
- var self = this,
8727
- titleField = self.getOption( 'titleField' ),
8728
- title = '';
 
8729
 
8730
- if ( titleField ) {
8731
- var values = {};
8732
 
8733
- self.children.each( function( child ) {
8734
- values[ child.model.get( 'name' ) ] = child.getControlValue();
8735
- } );
8736
 
8737
- title = Marionette.TemplateCache.prototype.compileTemplate( titleField )( values );
8738
- }
 
8739
 
8740
- if ( ! title ) {
8741
- title = elementor.translate( 'Item #{0}', [ self.getOption( 'itemIndex' ) ] );
8742
- }
8743
 
8744
- self.ui.itemTitle.html( title );
8745
  },
8746
 
8747
- initialize: function( options ) {
8748
- var self = this;
8749
-
8750
- self.elementSettingsModel = options.elementSettingsModel;
8751
-
8752
- self.itemIndex = 0;
8753
 
8754
- // Collection for Controls list
8755
- self.collection = new Backbone.Collection( options.controlFields );
8756
 
8757
- self.listenTo( self.model, 'change', self.checkConditions );
8758
- self.listenTo( self.getOption( 'parentModel' ), 'change', self.checkConditions );
8759
 
8760
- if ( options.titleField ) {
8761
- self.listenTo( self.model, 'change', self.setTitle );
8762
- }
8763
  },
8764
 
8765
- onRender: function() {
8766
- this.setTitle();
8767
- this.checkConditions();
 
 
 
 
8768
  },
8769
 
8770
- onChildviewResponsiveSwitcherClick: function( childView, device ) {
8771
- if ( 'desktop' === device ) {
8772
- elementor.getPanelView().getCurrentPageView().$el.toggleClass( 'elementor-responsive-switchers-open' );
8773
- }
8774
- }
8775
- } );
8776
 
8777
- module.exports = RepeaterRowView;
8778
 
8779
- },{"elementor-behaviors/inner-tabs":3}],101:[function(require,module,exports){
8780
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8781
- RepeaterRowView = require( 'elementor-views/controls/repeater-row' ),
8782
- ControlRepeaterItemView;
8783
 
8784
- ControlRepeaterItemView = ControlBaseItemView.extend( {
8785
- ui: {
8786
- btnAddRow: '.elementor-repeater-add',
8787
- fieldContainer: '.elementor-repeater-fields'
8788
- },
 
 
8789
 
8790
- events: {
8791
- 'click @ui.btnAddRow': 'onButtonAddRowClick',
8792
- 'sortstart @ui.fieldContainer': 'onSortStart',
8793
- 'sortupdate @ui.fieldContainer': 'onSortUpdate',
8794
- 'sortstop @ui.fieldContainer': 'onSortStop'
8795
  },
8796
 
8797
- childView: RepeaterRowView,
 
8798
 
8799
- childViewContainer: '.elementor-repeater-fields',
 
8800
 
8801
- templateHelpers: function() {
8802
- return {
8803
- data: _.extend( {}, this.model.toJSON(), { controlValue: [] } )
8804
- };
8805
- },
8806
 
8807
- childViewOptions: function() {
8808
- return {
8809
- controlFields: this.model.get( 'fields' ),
8810
- titleField: this.model.get( 'title_field' ),
8811
- parentModel: this.elementSettingsModel // For parentConditions in repeaterRow
8812
- };
8813
- },
8814
 
8815
- fillCollection: function() {
8816
- var controlName = this.model.get( 'name' );
8817
- this.collection = this.elementSettingsModel.get( controlName );
8818
 
8819
- if ( ! ( this.collection instanceof Backbone.Collection ) ) {
8820
- var self = this;
8821
- this.collection = new Backbone.Collection( this.collection, {
8822
- model: function( attrs, options ) {
8823
- options = options || {};
8824
 
8825
- options.controls = self.model.get( 'fields' );
 
 
 
8826
 
8827
- if ( ! attrs._id ) {
8828
- attrs._id = elementor.helpers.getUniqueID();
8829
- }
8830
 
8831
- var BaseSettingsModel = require( 'elementor-models/base-settings' );
 
8832
 
8833
- return new BaseSettingsModel( attrs, options );
8834
- }
8835
- } );
 
 
 
 
8836
 
8837
- // Set the value silent
8838
- this.elementSettingsModel.set( controlName, this.collection, { silent: true } );
8839
- this.listenTo( this.collection, 'change', this.onRowControlChange );
8840
- this.listenTo( this.collection, 'update', this.onRowUpdate, this );
8841
  }
8842
- },
8843
 
8844
- initialize: function( options ) {
8845
- ControlBaseItemView.prototype.initialize.apply( this, arguments );
 
8846
 
8847
- this.fillCollection();
 
 
8848
 
8849
- this.listenTo( this.collection, 'change', this.onRowControlChange );
8850
- this.listenTo( this.collection, 'update', this.onRowUpdate, this );
8851
  },
8852
 
8853
- addRow: function( data, options ) {
8854
- var id = elementor.helpers.getUniqueID();
 
 
8855
 
8856
- if ( data instanceof Backbone.Model ) {
8857
- data.set( '_id', id );
8858
- } else {
8859
- data._id = id;
8860
- }
8861
 
8862
- return this.collection.add( data, options );
8863
  },
8864
 
8865
- editRow: function( rowView ) {
8866
- if ( this.currentEditableChild ) {
8867
- var currentEditable = this.currentEditableChild.getChildViewContainer( this.currentEditableChild );
8868
- currentEditable.removeClass( 'editable' );
8869
 
8870
- // If the repeater contains TinyMCE editors, fire the `hide` trigger to hide floated toolbars
8871
- currentEditable.find( '.elementor-wp-editor' ).each( function() {
8872
- tinymce.get( this.id ).fire( 'hide' );
8873
- } );
8874
  }
8875
 
8876
- if ( this.currentEditableChild === rowView ) {
8877
- delete this.currentEditableChild;
8878
  return;
8879
  }
8880
 
8881
- rowView.getChildViewContainer( rowView ).addClass( 'editable' );
 
8882
 
8883
- this.currentEditableChild = rowView;
 
8884
 
8885
- this.updateActiveRow();
8886
  },
8887
 
8888
- toggleMinRowsClass: function() {
8889
- if ( ! this.model.get( 'prevent_empty' ) ) {
8890
- return;
8891
- }
8892
-
8893
- this.$el.toggleClass( 'elementor-repeater-has-minimum-rows', 1 >= this.collection.length );
8894
- },
8895
 
8896
- updateActiveRow: function() {
8897
- var activeItemIndex = 0;
8898
 
8899
- if ( this.currentEditableChild ) {
8900
- activeItemIndex = this.currentEditableChild.itemIndex;
 
 
 
8901
  }
8902
 
8903
- this.setEditSetting( 'activeItemIndex', activeItemIndex );
8904
  },
8905
 
8906
- updateChildIndexes: function() {
8907
- this.children.each( _.bind( function( view ) {
8908
- view.updateIndex( this.collection.indexOf( view.model ) + 1 );
8909
- }, this ) );
8910
- },
8911
 
8912
- onRender: function() {
8913
- ControlBaseItemView.prototype.onRender.apply( this, arguments );
8914
 
8915
- this.ui.fieldContainer.sortable( { axis: 'y', handle: '.elementor-repeater-row-tools' } );
 
8916
 
8917
- this.toggleMinRowsClass();
 
 
 
 
8918
  },
8919
 
8920
- onSortStart: function( event, ui ) {
8921
- ui.item.data( 'oldIndex', ui.item.index() );
8922
- },
8923
 
8924
- onSortStop: function( event, ui ) {
8925
- // Reload TinyMCE editors (if exist), it's a bug that TinyMCE content is missing after stop dragging
8926
- ui.item.find( '.elementor-wp-editor' ).each( function() {
8927
- var editor = tinymce.get( this.id ),
8928
- settings = editor.settings;
8929
 
8930
- settings.height = Backbone.$( editor.getContainer() ).height();
8931
- tinymce.execCommand( 'mceRemoveEditor', true, this.id );
8932
- tinymce.init( settings );
8933
- } );
8934
- },
8935
 
8936
- onSortUpdate: function( event, ui ) {
8937
- var oldIndex = ui.item.data( 'oldIndex' ),
8938
- model = this.collection.at( oldIndex ),
8939
- newIndex = ui.item.index();
8940
 
8941
- this.collection.remove( model );
 
 
8942
 
8943
- this.addRow( model, { at: newIndex } );
8944
- },
 
8945
 
8946
- onAddChild: function() {
8947
- this.updateChildIndexes();
8948
- this.updateActiveRow();
8949
- },
8950
 
8951
- onRemoveChild: function( childView ) {
8952
- if ( childView === this.currentEditableChild ) {
8953
- delete this.currentEditableChild;
8954
- }
8955
 
8956
- this.updateChildIndexes();
8957
- this.updateActiveRow();
8958
  },
8959
 
8960
- onRowUpdate: function( collection, event ) {
8961
- // Simulate `changed` and `_previousAttributes` values
8962
- var settings = this.elementSettingsModel,
8963
- collectionCloned = collection.clone(),
8964
- controlName = this.model.get( 'name' );
8965
 
8966
- if ( event.add ) {
8967
- collectionCloned.remove( event.changes.added[0] );
8968
- } else {
8969
- collectionCloned.add( event.changes.removed[0], { at: event.index } );
8970
- }
8971
 
8972
- settings.changed = {};
8973
- settings.changed[ controlName ] = collection;
 
8974
 
8975
- settings._previousAttributes = {};
8976
- settings._previousAttributes[ controlName ] = collectionCloned.toJSON();
8977
 
8978
- settings.trigger( 'change', settings, settings._pending );
 
 
8979
 
8980
- delete settings.changed;
8981
- delete settings._previousAttributes;
8982
 
8983
- this.toggleMinRowsClass();
8984
  },
8985
 
8986
- onRowControlChange: function( model ) {
8987
- // Simulate `changed` and `_previousAttributes` values
8988
- var changed = Object.keys( model.changed );
 
 
 
8989
 
8990
- if ( ! changed.length ) {
8991
- return;
 
 
 
 
 
 
 
 
 
8992
  }
8993
 
8994
- var collectionCloned = model.collection.toJSON(),
8995
- modelIndex = model.collection.findIndex( model ),
8996
- element = this._parent.model,
8997
- settings = element.get( 'settings' ),
8998
- controlName = this.model.get( 'name' );
8999
 
9000
- // Save it with old values
9001
- collectionCloned[ modelIndex ] = model._previousAttributes;
 
 
 
 
 
9002
 
9003
- settings.changed = {};
9004
- settings.changed[ controlName ] = model.collection;
 
 
9005
 
9006
- settings._previousAttributes = {};
9007
- settings._previousAttributes[ controlName ] = collectionCloned;
 
 
 
9008
 
9009
- settings.trigger( 'change', settings );
 
 
 
 
 
 
 
9010
 
9011
- delete settings.changed;
9012
- delete settings._previousAttributes;
 
 
9013
  },
9014
 
9015
- onButtonAddRowClick: function() {
9016
- var defaults = {};
9017
- _.each( this.model.get( 'fields' ), function( field ) {
9018
- defaults[ field.name ] = field['default'];
9019
- } );
 
9020
 
9021
- var newModel = this.addRow( defaults ),
9022
- newChildView = this.children.findByModel( newModel );
 
 
 
 
9023
 
9024
- this.editRow( newChildView );
9025
- },
9026
 
9027
- onChildviewClickRemove: function( childView ) {
9028
- childView.model.destroy();
9029
  this.render();
9030
  },
9031
 
9032
- onChildviewClickDuplicate: function( childView ) {
9033
- this.addRow( childView.model.clone(), { at: childView.itemIndex } );
9034
- },
 
9035
 
9036
- onChildviewClickEdit: function( childView ) {
9037
- this.editRow( childView );
9038
  },
9039
 
9040
- onAfterExternalChange: function() {
9041
- // Update the collection with current value
9042
- this.fillCollection();
9043
 
9044
- ControlBaseItemView.prototype.onAfterExternalChange.apply( this, arguments );
9045
- }
9046
- } );
9047
 
9048
- module.exports = ControlRepeaterItemView;
 
9049
 
9050
- },{"elementor-models/base-settings":52,"elementor-views/controls/base":86,"elementor-views/controls/repeater-row":100}],102:[function(require,module,exports){
9051
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9052
- ControlSectionItemView;
 
 
 
 
 
 
 
 
 
 
9053
 
9054
- ControlSectionItemView = ControlBaseItemView.extend( {
9055
- ui: function() {
9056
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
9057
 
9058
- ui.heading = '.elementor-panel-heading';
 
 
9059
 
9060
- return ui;
 
9061
  },
9062
 
9063
- triggers: {
9064
- 'click': 'control:section:clicked'
9065
  }
9066
  } );
9067
 
9068
- module.exports = ControlSectionItemView;
9069
 
9070
- },{"elementor-views/controls/base":86}],103:[function(require,module,exports){
9071
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9072
- ControlSelect2ItemView;
9073
 
9074
- ControlSelect2ItemView = ControlBaseItemView.extend( {
9075
- getSelect2Options: function() {
9076
- var placeholder = this.ui.select.children( 'option:first[value=""]' ).text();
9077
 
9078
- return {
9079
- allowClear: true,
9080
- placeholder: placeholder
9081
- };
9082
- },
9083
 
9084
- onReady: function() {
9085
- this.ui.select.select2( this.getSelect2Options() );
9086
  },
9087
 
9088
- onBeforeDestroy: function() {
9089
- if ( this.ui.select.data( 'select2' ) ) {
9090
- this.ui.select.select2( 'destroy' );
9091
- }
9092
-
9093
- this.$el.remove();
9094
- }
9095
- } );
9096
-
9097
- module.exports = ControlSelect2ItemView;
9098
-
9099
- },{"elementor-views/controls/base":86}],104:[function(require,module,exports){
9100
- var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),
9101
- ControlSliderItemView;
9102
 
9103
- ControlSliderItemView = ControlBaseUnitsItemView.extend( {
9104
- ui: function() {
9105
- var ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );
9106
 
9107
- ui.slider = '.elementor-slider';
 
 
9108
 
9109
- return ui;
9110
- },
 
9111
 
9112
- childEvents: {
9113
- 'slide @ui.slider': 'onSlideChange'
 
 
 
9114
  },
9115
 
9116
- initSlider: function() {
9117
- var size = this.getControlValue( 'size' ),
9118
- unitRange = this.getCurrentRange();
9119
-
9120
- this.ui.input.attr( unitRange ).val( size );
9121
 
9122
- this.ui.slider.slider( _.extend( {}, unitRange, { value: size } ) );
 
 
9123
  },
9124
 
9125
- resetSize: function() {
9126
- this.setValue( 'size', '' );
 
 
 
 
 
 
9127
 
9128
- this.initSlider();
9129
- },
9130
 
9131
- onReady: function() {
9132
- this.initSlider();
9133
- },
9134
 
9135
- onSlideChange: function( event, ui ) {
9136
- this.setValue( 'size', ui.value );
 
 
 
9137
 
9138
- this.ui.input.val( ui.value );
 
9139
  },
9140
 
9141
- onInputChange: function( event ) {
9142
- var dataChanged = event.currentTarget.dataset.setting;
9143
-
9144
- if ( 'size' === dataChanged ) {
9145
- this.ui.slider.slider( 'value', this.getControlValue( 'size' ) );
9146
- } else if ( 'unit' === dataChanged ) {
9147
- this.resetSize();
9148
- }
9149
  },
9150
 
9151
- onBeforeDestroy: function() {
9152
- if ( this.ui.slider.data( 'uiSlider' ) ) {
9153
- this.ui.slider.slider( 'destroy' );
9154
- }
9155
 
9156
- this.$el.remove();
 
 
 
9157
  }
9158
  } );
9159
 
9160
- module.exports = ControlSliderItemView;
9161
 
9162
- },{"elementor-views/controls/base-units":85}],105:[function(require,module,exports){
9163
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9164
- ControlStructureItemView;
9165
 
9166
- ControlStructureItemView = ControlBaseItemView.extend( {
9167
  ui: function() {
9168
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
9169
 
9170
- ui.resetStructure = '.elementor-control-structure-reset';
 
 
9171
 
9172
  return ui;
9173
  },
9174
 
9175
  childEvents: {
9176
- 'click @ui.resetStructure': 'onResetStructureClick'
 
9177
  },
9178
 
9179
- templateHelpers: function() {
9180
- var helpers = ControlBaseItemView.prototype.templateHelpers.apply( this, arguments );
 
 
 
9181
 
9182
- helpers.getMorePresets = _.bind( this.getMorePresets, this );
 
 
 
9183
 
9184
- return helpers;
9185
  },
9186
 
9187
- getCurrentEditedSection: function() {
9188
- var editor = elementor.getPanelView().getCurrentPageView();
 
 
 
9189
 
9190
- return editor.getOption( 'editedElementView' );
9191
  },
9192
 
9193
- getMorePresets: function() {
9194
- var parsedStructure = elementor.presetsFactory.getParsedStructure( this.getControlValue() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9195
 
9196
- return elementor.presetsFactory.getPresets( parsedStructure.columnsCount );
 
9197
  },
9198
 
9199
- onInputChange: function() {
9200
- this.getCurrentEditedSection().redefineLayout();
 
 
 
 
 
9201
 
9202
- this.render();
 
 
 
 
 
 
 
9203
  },
9204
 
9205
- onResetStructureClick: function() {
9206
- this.getCurrentEditedSection().resetColumnsCustomSize();
9207
  }
9208
  } );
9209
 
9210
- module.exports = ControlStructureItemView;
9211
 
9212
- },{"elementor-views/controls/base":86}],106:[function(require,module,exports){
9213
- var ControlBaseItemView = require( 'elementor-views/controls/base' );
 
9214
 
9215
- module.exports = ControlBaseItemView.extend( {
9216
- setInputValue: function( input, value ) {
9217
- // Make sure is string value
9218
- // TODO: Remove in v1.6
9219
- value = '' + value;
9220
 
9221
- this.$( input ).prop( 'checked', this.model.get( 'return_value' ) === value );
9222
- }
9223
- } );
 
 
 
9224
 
9225
- },{"elementor-views/controls/base":86}],107:[function(require,module,exports){
9226
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9227
- ControlTabItemView;
9228
 
9229
- ControlTabItemView = ControlBaseItemView.extend( {
9230
- triggers: {
9231
- 'click': 'control:tab:clicked'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9232
  }
9233
  } );
9234
 
9235
- module.exports = ControlTabItemView;
9236
 
9237
- },{"elementor-views/controls/base":86}],108:[function(require,module,exports){
9238
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9239
- ControlWPWidgetItemView;
9240
 
9241
- ControlWPWidgetItemView = ControlBaseItemView.extend( {
9242
  ui: function() {
9243
- var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
9244
 
9245
- ui.form = 'form';
9246
- ui.loading = '.wp-widget-form-loading';
9247
 
9248
  return ui;
9249
  },
9250
 
9251
- events: {
9252
- 'keyup @ui.form :input': 'onFormChanged',
9253
- 'change @ui.form :input': 'onFormChanged'
 
9254
  },
9255
 
9256
- onFormChanged: function() {
9257
- var idBase = 'widget-' + this.model.get( 'id_base' ),
9258
- settings = this.ui.form.elementorSerializeObject()[ idBase ].REPLACE_TO_ID;
9259
 
9260
- this.setValue( settings );
9261
  },
9262
 
9263
- onReady: function() {
9264
- elementor.ajax.send( 'editor_get_wp_widget_form', {
9265
- data: {
9266
- // Fake Widget ID
9267
- id: this.model.cid,
9268
- widget_type: this.model.get( 'widget' ),
9269
- data: JSON.stringify( this.elementSettingsModel.toJSON() )
9270
- },
9271
- success: _.bind( function( data ) {
9272
- this.ui.form.html( data );
9273
- // WP >= 4.8
9274
- if ( wp.textWidgets ) {
9275
- var event = new jQuery.Event( 'widget-added' );
9276
- wp.textWidgets.handleWidgetAdded( event, this.ui.form );
9277
- wp.mediaWidgets.handleWidgetAdded( event, this.ui.form );
9278
- }
9279
-
9280
- elementor.hooks.doAction( 'panel/widgets/' + this.model.get( 'widget' ) + '/controls/wp_widget/loaded', this );
9281
- }, this )
9282
- } );
9283
  }
9284
  } );
9285
 
9286
- module.exports = ControlWPWidgetItemView;
9287
 
9288
- },{"elementor-views/controls/base":86}],109:[function(require,module,exports){
9289
- var ControlBaseItemView = require( 'elementor-views/controls/base' ),
9290
- ControlWysiwygItemView;
9291
 
9292
- ControlWysiwygItemView = ControlBaseItemView.extend( {
9293
- childEvents: {
9294
- 'keyup textarea.elementor-wp-editor': 'onBaseInputChange'
 
 
 
 
 
 
 
9295
  },
9296
 
9297
- // List of buttons to move {buttonToMove: afterButton}
9298
- buttons: {
9299
- moveToAdvanced: {
9300
- blockquote: 'removeformat',
9301
- alignleft: 'blockquote',
9302
- aligncenter: 'alignleft',
9303
- alignright: 'aligncenter'
9304
- },
9305
- moveToBasic: {},
9306
- removeFromBasic: [ 'unlink', 'wp_more' ],
9307
- removeFromAdvanced: []
9308
  },
9309
 
9310
- initialize: function() {
9311
- ControlBaseItemView.prototype.initialize.apply( this, arguments );
 
 
 
9312
 
9313
- var self = this;
 
 
 
 
9314
 
9315
- self.editorID = 'elementorwpeditor' + self.cid;
9316
 
9317
- // Wait a cycle before initializing the editors.
9318
- _.defer( function() {
9319
- // Initialize QuickTags, and set as the default mode.
9320
- quicktags( {
9321
- buttons: 'strong,em,del,link,img,close',
9322
- id: self.editorID
9323
- } );
9324
 
9325
- if ( elementor.config.rich_editing_enabled ) {
9326
- switchEditors.go( self.editorID, 'tmce' );
9327
- }
9328
 
9329
- delete QTags.instances[ 0 ];
9330
- } );
 
 
 
9331
 
9332
- if ( ! elementor.config.rich_editing_enabled ) {
9333
- self.$el.addClass( 'elementor-rich-editing-disabled' );
9334
 
9335
- return;
9336
- }
 
 
9337
 
9338
- var editorConfig = {
9339
- id: self.editorID,
9340
- selector: '#' + self.editorID,
9341
- setup: function( editor ) {
9342
- // Save the bind callback to allow overwrite it externally
9343
- self.saveEditor = _.bind( self.saveEditor, self, editor );
9344
- editor.on( 'keyup change undo redo SetContent', self.saveEditor );
9345
  }
9346
- };
9347
-
9348
- tinyMCEPreInit.mceInit[ self.editorID ] = _.extend( _.clone( tinyMCEPreInit.mceInit.elementorwpeditor ), editorConfig );
9349
 
9350
- if ( ! elementor.config.tinymceHasCustomConfig ) {
9351
- self.rearrangeButtons();
9352
- }
9353
- },
9354
 
9355
- saveEditor: function( editor ) {
9356
- editor.save();
9357
 
9358
- this.setValue( editor.getContent() );
 
9359
  },
9360
 
9361
- attachElContent: function() {
9362
- var editorTemplate = elementor.config.wp_editor.replace( /elementorwpeditor/g, this.editorID ).replace( '%%EDITORCONTENT%%', this.getControlValue() );
9363
-
9364
- this.$el.html( editorTemplate );
9365
-
9366
- return this;
9367
  },
9368
 
9369
- moveButtons: function( buttonsToMove, from, to ) {
9370
- _.each( buttonsToMove, function( afterButton, button ) {
9371
- var buttonIndex = from.indexOf( button ),
9372
- afterButtonIndex = to.indexOf( afterButton );
9373
 
9374
- if ( -1 === buttonIndex ) {
9375
- throw new ReferenceError( 'Trying to move non-existing button `' + button + '`' );
9376
- }
9377
 
9378
- if ( -1 === afterButtonIndex ) {
9379
- throw new ReferenceError( 'Trying to move button after non-existing button `' + afterButton + '`' );
9380
- }
9381
 
9382
- from.splice( buttonIndex, 1 );
 
9383
 
9384
- to.splice( afterButtonIndex + 1, 0, button );
9385
- } );
 
 
 
9386
  },
9387
 
9388
- rearrangeButtons: function() {
9389
- var editorProps = tinyMCEPreInit.mceInit[ this.editorID ],
9390
- editorBasicToolbarButtons = editorProps.toolbar1.split( ',' ),
9391
- editorAdvancedToolbarButtons = editorProps.toolbar2.split( ',' );
28
  elements: []
29
  };
30
 
 
 
31
  this.view.addChildModel( newItem, options );
 
 
32
  }
33
  } );
34
 
47
  var currentIndex = this.view.collection.indexOf( childView.model ),
48
  newModel = childView.model.clone();
49
 
 
 
50
  this.view.addChildModel( newModel, { at: currentIndex + 1 } );
 
 
51
  }
52
  } );
53
 
322
  ui.placeholder.height( itemHeight );
323
  }
324
 
325
+ elementor.channels.data.trigger( model.get( 'elType' ) + ':drag:start' );
326
+
327
  elementor.channels.data
328
  .reply( 'dragging:model', model )
329
+ .reply( 'dragging:parent:view', this.view );
 
 
330
  },
331
 
332
  onSortOver: function( event ) {
373
  return;
374
  }
375
 
376
+ var newIndex = ui.item.parent().children().index( ui.item );
377
 
378
+ this.view.addChildElement( model.toJSON( { copyHtmlCache: true } ), { at: newIndex } );
 
379
 
380
  var senderSection = elementor.channels.data.request( 'dragging:parent:view' );
381
 
384
  model.destroy();
385
 
386
  senderSection.isManualRemoving = false;
 
 
 
 
387
  },
388
 
389
  onSortUpdate: function( event, ui ) {
395
  collection = this.view.collection,
396
  newIndex = $childElement.parent().children().index( $childElement );
397
 
 
 
398
  var child = this.view.children.findByModelCid( model.cid );
399
 
400
  child._isRendering = true;
404
  this.view.addChildElement( model, { at: newIndex } );
405
 
406
  elementor.setFlagEditorChange( true );
 
 
407
  }
408
  },
409
 
419
  module.exports = SortableBehavior;
420
 
421
  },{}],6:[function(require,module,exports){
422
+ var RevisionModel = require( './model' );
 
 
 
 
 
423
 
424
+ module.exports = Backbone.Collection.extend( {
425
+ model: RevisionModel
426
+ } );
427
 
428
+ },{"./model":9}],7:[function(require,module,exports){
429
+ module.exports = Marionette.ItemView.extend( {
430
+ template: '#tmpl-elementor-panel-revisions-no-revisions',
 
 
431
 
432
+ id: 'elementor-panel-revisions-no-revisions',
 
 
 
433
 
434
+ className: 'elementor-panel-nerd-box'
435
+ } );
436
 
437
+ },{}],8:[function(require,module,exports){
438
+ var RevisionsCollection = require( './collection' ),
439
+ RevisionsPageView = require( './panel-page' ),
440
+ RevisionsEmptyView = require( './empty-view' ),
441
+ RevisionsManager;
442
 
443
+ RevisionsManager = function() {
444
+ var self = this,
445
+ revisions;
446
 
447
+ var addPanelPage = function() {
448
+ elementor.getPanelView().addPage( 'revisionsPage', {
449
+ getView: function() {
450
+ if ( revisions.length ) {
451
+ return RevisionsPageView;
452
+ }
453
 
454
+ return RevisionsEmptyView;
455
+ },
456
+ title: elementor.translate( 'revision_history' ),
457
+ options: {
458
+ collection: revisions
 
 
 
459
  }
460
  } );
461
+ };
462
 
463
+ var onEditorSaved = function( data ) {
464
+ if ( data.last_revision ) {
465
+ self.addRevision( data.last_revision );
466
  }
467
 
468
+ var revisionsToKeep = revisions.filter( function( revision ) {
469
+ return -1 !== data.revisions_ids.indexOf( revision.get( 'id' ) );
470
+ } );
 
 
471
 
472
+ revisions.reset( revisionsToKeep );
473
+ };
 
474
 
475
+ var attachEvents = function() {
476
+ elementor.channels.editor.on( 'saved', onEditorSaved );
477
+ };
478
 
479
+ var addHotKeys = function() {
480
+ var H_KEY = 72,
481
+ UP_ARROW_KEY = 38,
482
+ DOWN_ARROW_KEY = 40;
483
 
484
+ var navigationHandler = {
485
+ isWorthHandling: function() {
486
+ var panel = elementor.getPanelView();
 
487
 
488
+ if ( 'revisionsPage' !== panel.getCurrentPageName() ) {
489
+ return false;
490
+ }
 
 
 
 
 
 
491
 
492
+ var revisionsPage = panel.getCurrentPageView();
 
 
493
 
494
+ return revisionsPage.currentPreviewId && revisionsPage.currentPreviewItem && revisionsPage.children.length > 1;
 
 
 
495
  },
496
+ handle: function( event ) {
497
+ elementor.getPanelView().getCurrentPageView().navigate( UP_ARROW_KEY === event.which );
 
 
 
 
 
 
 
 
 
498
  }
499
  };
500
 
501
+ elementor.hotKeys.addHotKeyHandler( UP_ARROW_KEY, 'revisionNavigation', navigationHandler );
 
 
 
 
 
502
 
503
+ elementor.hotKeys.addHotKeyHandler( DOWN_ARROW_KEY, 'revisionNavigation', navigationHandler );
 
 
504
 
505
+ elementor.hotKeys.addHotKeyHandler( H_KEY, 'showRevisionsPage', {
506
+ isWorthHandling: function( event ) {
507
+ return elementor.hotKeys.isControlEvent( event ) && event.shiftKey;
508
+ },
509
+ handle: function() {
510
+ elementor.getPanelView().setPage( 'revisionsPage' );
511
+ }
512
+ } );
513
  };
514
 
515
+ this.addRevision = function( revisionData ) {
516
+ revisions.add( revisionData, { at: 0 } );
 
 
517
 
518
+ var panel = elementor.getPanelView();
 
519
 
520
+ if ( panel.getCurrentPageView() instanceof RevisionsEmptyView ) {
521
+ panel.setPage( 'revisionsPage' );
522
+ }
523
  };
524
 
525
+ this.deleteRevision = function( revisionModel, options ) {
526
+ var params = {
527
+ data: {
528
+ id: revisionModel.get( 'id' )
529
+ },
530
+ success: function() {
531
+ if ( options.success ) {
532
+ options.success();
533
+ }
534
 
535
+ revisionModel.destroy();
 
 
 
 
 
 
 
536
 
537
+ if ( ! revisions.length ) {
538
+ elementor.getPanelView().setPage( 'revisionsPage' );
539
  }
540
+ }
541
  };
542
 
543
+ if ( options.error ) {
544
+ params.error = options.error;
545
+ }
546
+
547
+ elementor.ajax.send( 'delete_revision', params );
548
  };
549
 
550
+ this.init = function() {
551
+ revisions = new RevisionsCollection( elementor.config.revisions );
552
 
553
+ attachEvents();
554
 
555
+ addHotKeys();
 
 
 
 
 
556
 
557
+ elementor.on( 'preview:loaded', addPanelPage );
558
+ };
559
+ };
560
 
561
+ module.exports = new RevisionsManager();
562
 
563
+ },{"./collection":6,"./empty-view":7,"./panel-page":10}],9:[function(require,module,exports){
564
+ var RevisionModel;
565
 
566
+ RevisionModel = Backbone.Model.extend();
 
 
 
 
 
 
 
 
567
 
568
+ RevisionModel.prototype.sync = function() {
569
+ return null;
570
+ };
571
 
572
+ module.exports = RevisionModel;
 
 
 
573
 
574
+ },{}],10:[function(require,module,exports){
575
+ module.exports = Marionette.CompositeView.extend( {
576
+ id: 'elementor-panel-revisions',
577
 
578
+ template: '#tmpl-elementor-panel-revisions',
579
 
580
+ childView: require( './view' ),
581
 
582
+ childViewContainer: '#elementor-revisions-list',
 
 
583
 
584
+ ui: {
585
+ discard: '.elementor-panel-scheme-discard .elementor-button',
586
+ apply: '.elementor-panel-scheme-save .elementor-button'
587
+ },
588
 
589
+ events: {
590
+ 'click @ui.discard': 'onDiscardClick',
591
+ 'click @ui.apply': 'onApplyClick'
592
+ },
 
 
 
 
593
 
594
+ isRevisionApplied: false,
 
 
595
 
596
+ jqueryXhr: null,
 
597
 
598
+ currentPreviewId: null,
 
 
 
 
 
 
 
 
 
 
599
 
600
+ currentPreviewItem: null,
 
601
 
602
+ initialize: function() {
603
+ this.listenTo( elementor.channels.editor, 'saved', this.onEditorSaved );
604
+ },
 
 
 
 
605
 
606
+ getRevisionViewData: function( revisionView ) {
607
+ var self = this,
608
+ revisionID = revisionView.model.get( 'id' );
609
 
610
+ self.jqueryXhr = elementor.ajax.send( 'get_revision_data', {
611
+ data: {
612
+ id: revisionID
613
+ },
614
+ success: function( data ) {
615
+ self.setEditorData( data );
 
616
 
617
+ self.setRevisionsButtonsActive( true );
 
618
 
619
+ self.jqueryXhr = null;
 
 
620
 
621
+ revisionView.$el.removeClass( 'elementor-revision-item-loading' );
 
 
622
 
623
+ self.enterReviewMode();
624
+ },
625
+ error: function( data ) {
626
+ revisionView.$el.removeClass( 'elementor-revision-item-loading' );
 
627
 
628
+ if ( 'abort' === self.jqueryXhr.statusText ) {
629
+ return;
630
+ }
631
 
632
+ self.currentPreviewItem = null;
 
 
633
 
634
+ self.currentPreviewId = null;
635
+
636
+ alert( 'An error occurred' );
637
  }
638
  } );
639
+ },
640
 
641
+ setRevisionsButtonsActive: function( active ) {
642
+ this.ui.apply.add( this.ui.discard ).prop( 'disabled', ! active );
643
+ },
644
 
645
+ setEditorData: function( data ) {
646
+ var collection = elementor.getRegion( 'sections' ).currentView.collection;
647
 
648
+ collection.reset( data );
649
+ },
650
 
651
+ deleteRevision: function( revisionView ) {
652
+ var self = this;
 
653
 
654
+ revisionView.$el.addClass( 'elementor-revision-item-loading' );
655
 
656
+ elementor.revisions.deleteRevision( revisionView.model, {
657
+ success: function() {
658
+ if ( revisionView.model.get( 'id' ) === self.currentPreviewId ) {
659
+ self.onDiscardClick();
660
+ }
661
+
662
+ self.currentPreviewId = null;
663
+ },
664
+ error: function( data ) {
665
+ revisionView.$el.removeClass( 'elementor-revision-item-loading' );
666
+
667
+ alert( 'An error occurred' );
668
  }
669
  } );
670
+ },
671
 
672
+ enterReviewMode: function() {
673
+ elementor.changeEditMode( 'review' );
674
+ },
675
 
676
+ exitReviewMode: function() {
677
+ elementor.changeEditMode( 'edit' );
678
+ },
679
 
680
+ navigate: function( reverse ) {
681
+ var currentPreviewItemIndex = this.collection.indexOf( this.currentPreviewItem.model ),
682
+ requiredIndex = reverse ? currentPreviewItemIndex - 1 : currentPreviewItemIndex + 1;
683
 
684
+ if ( requiredIndex < 0 ) {
685
+ requiredIndex = this.collection.length - 1;
686
  }
 
687
 
688
+ if ( requiredIndex >= this.collection.length ) {
689
+ requiredIndex = 0;
690
+ }
691
 
692
+ this.children.findByIndex( requiredIndex ).ui.detailsArea.trigger( 'click' );
693
+ },
 
 
 
694
 
695
+ onEditorSaved: function() {
696
+ this.exitReviewMode();
 
697
 
698
+ this.setRevisionsButtonsActive( false );
699
+ },
 
700
 
701
+ onApplyClick: function() {
702
+ elementor.getPanelView().getChildView( 'footer' )._publishBuilder();
 
 
 
 
703
 
704
+ this.isRevisionApplied = true;
 
 
 
 
705
 
706
+ this.currentPreviewId = null;
707
+ },
708
 
709
+ onDiscardClick: function() {
710
+ this.setEditorData( elementor.config.data );
711
 
712
+ elementor.setFlagEditorChange( this.isRevisionApplied );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
713
 
714
+ this.isRevisionApplied = false;
715
 
716
+ this.setRevisionsButtonsActive( false );
 
 
 
 
 
 
 
 
 
 
 
 
717
 
718
+ this.currentPreviewId = null;
 
719
 
720
+ this.exitReviewMode();
 
 
 
721
 
722
+ if ( this.currentPreviewItem ) {
723
+ this.currentPreviewItem.$el.removeClass( 'elementor-revision-current-preview' );
724
+ }
725
  },
726
 
727
+ onDestroy: function() {
728
+ if ( this.currentPreviewId ) {
729
+ this.onDiscardClick();
730
+ }
731
  },
732
 
733
+ onRenderCollection: function() {
734
+ if ( ! this.currentPreviewId ) {
735
+ return;
736
+ }
737
 
738
+ var currentPreviewModel = this.collection.findWhere({ id: this.currentPreviewId });
739
 
740
+ this.currentPreviewItem = this.children.findByModelCid( currentPreviewModel.cid );
 
741
 
742
+ this.currentPreviewItem.$el.addClass( 'elementor-revision-current-preview' );
 
743
  },
744
 
745
+ onChildviewDetailsAreaClick: function( childView ) {
746
+ var self = this,
747
+ revisionID = childView.model.get( 'id' );
 
 
 
748
 
749
+ if ( revisionID === self.currentPreviewId ) {
750
+ return;
751
+ }
 
752
 
753
+ if ( this.jqueryXhr ) {
754
+ this.jqueryXhr.abort();
755
+ }
756
 
757
+ if ( self.currentPreviewItem ) {
758
+ self.currentPreviewItem.$el.removeClass( 'elementor-revision-current-preview' );
759
+ }
760
 
761
+ childView.$el.addClass( 'elementor-revision-current-preview elementor-revision-item-loading' );
762
 
763
+ if ( elementor.isEditorChanged() && null === self.currentPreviewId ) {
764
+ elementor.saveEditor( {
765
+ status: 'autosave',
766
+ onSuccess: function() {
767
+ self.getRevisionViewData( childView );
768
+ }
769
+ } );
770
+ } else {
771
+ self.getRevisionViewData( childView );
772
+ }
773
 
774
+ self.currentPreviewItem = childView;
 
 
 
775
 
776
+ self.currentPreviewId = revisionID;
777
+ },
778
 
779
+ onChildviewDeleteClick: function( childView ) {
780
+ var self = this,
781
+ type = childView.model.get( 'type' ),
782
+ id = childView.model.get( 'id' );
783
 
784
+ var removeDialog = elementor.dialogsManager.createWidget( 'confirm', {
785
+ message: elementor.translate( 'dialog_confirm_delete', [ type ] ),
786
+ headerMessage: elementor.translate( 'delete_element', [ type ] ),
787
+ strings: {
788
+ confirm: elementor.translate( 'delete' ),
789
+ cancel: elementor.translate( 'cancel' )
790
+ },
791
+ defaultOption: 'confirm',
792
+ onConfirm: function() {
793
+ self.deleteRevision( childView );
794
+ }
795
+ } );
796
 
797
+ removeDialog.show();
798
  }
799
  } );
800
 
801
+ },{"./view":11}],11:[function(require,module,exports){
802
+ module.exports = Marionette.ItemView.extend( {
803
+ template: '#tmpl-elementor-panel-revisions-revision-item',
 
 
 
 
804
 
805
+ className: 'elementor-revision-item',
806
 
807
+ ui: {
808
+ detailsArea: '.elementor-revision-item__details',
809
+ deleteButton: '.elementor-revision-item__tools-delete'
810
  },
811
 
812
+ triggers: {
813
+ 'click @ui.detailsArea': 'detailsArea:click',
814
+ 'click @ui.deleteButton': 'delete:click'
815
  }
816
  } );
817
 
 
 
818
  },{}],12:[function(require,module,exports){
819
+ var InsertTemplateHandler;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
 
821
+ InsertTemplateHandler = Marionette.Behavior.extend( {
822
  ui: {
823
+ insertButton: '.elementor-template-library-template-insert'
824
  },
825
 
826
  events: {
827
+ 'click @ui.insertButton': 'onInsertButtonClick'
828
  },
829
 
830
+ onInsertButtonClick: function() {
831
+ if ( this.view.model.get( 'hasPageSettings' ) ) {
832
+ InsertTemplateHandler.showImportDialog( this.view.model );
 
 
 
833
  return;
834
  }
835
 
836
+ elementor.templates.importTemplate( this.view.model );
837
+ }
838
+ }, {
839
+ dialog: null,
840
 
841
+ showImportDialog: function( model ) {
842
+ var dialog = InsertTemplateHandler.getDialog();
843
 
844
+ dialog.onConfirm = function() {
845
+ elementor.templates.importTemplate( model, { withPageSettings: true } );
846
+ };
847
 
848
+ dialog.onCancel = function() {
849
+ elementor.templates.importTemplate( model );
850
+ };
851
 
852
+ dialog.show();
853
  },
854
 
855
+ initDialog: function() {
856
+ InsertTemplateHandler.dialog = elementor.dialogsManager.createWidget( 'confirm', {
857
+ id: 'elementor-insert-template-settings-dialog',
858
+ headerMessage: elementor.translate( 'import_template_dialog_header' ),
859
+ message: elementor.translate( 'import_template_dialog_message' ) + '<br>' + elementor.translate( 'import_template_dialog_message_attention' ),
860
+ strings: {
861
+ confirm: elementor.translate( 'yes' ),
862
+ cancel: elementor.translate( 'no' )
863
+ }
864
+ } );
865
+ },
866
 
867
+ getDialog: function() {
868
+ if ( ! InsertTemplateHandler.dialog ) {
869
+ InsertTemplateHandler.initDialog();
870
+ }
871
 
872
+ return InsertTemplateHandler.dialog;
873
  }
874
  } );
875
 
876
+ module.exports = InsertTemplateHandler;
 
 
 
 
 
 
 
877
 
878
+ },{}],13:[function(require,module,exports){
879
+ var TemplateLibraryTemplateModel = require( 'elementor-templates/models/template' ),
880
+ TemplateLibraryCollection;
881
 
882
+ TemplateLibraryCollection = Backbone.Collection.extend( {
883
+ model: TemplateLibraryTemplateModel
 
 
 
884
  } );
885
 
886
+ module.exports = TemplateLibraryCollection;
887
 
888
+ },{"elementor-templates/models/template":15}],14:[function(require,module,exports){
889
+ var TemplateLibraryLayoutView = require( 'elementor-templates/views/layout' ),
890
+ TemplateLibraryCollection = require( 'elementor-templates/collections/templates' ),
891
+ TemplateLibraryManager;
892
 
893
+ TemplateLibraryManager = function() {
894
+ var self = this,
895
+ modal,
896
+ deleteDialog,
897
+ errorDialog,
898
+ layout,
899
+ startIntent = {},
900
+ templateTypes = {},
901
+ templatesCollection;
902
 
903
+ var initLayout = function() {
904
+ layout = new TemplateLibraryLayoutView();
905
+ };
906
 
907
+ var registerDefaultTemplateTypes = function() {
908
+ var data = {
909
+ saveDialog: {
910
+ description: elementor.translate( 'save_your_template_description' )
911
+ },
912
+ ajaxParams: {
913
+ success: function( data ) {
914
+ self.getTemplatesCollection().add( data );
915
 
916
+ self.setTemplatesSource( 'local' );
 
 
917
 
918
+ self.showTemplates();
919
+ },
920
+ error: function( data ) {
921
+ self.showErrorDialog( data );
922
+ }
923
+ }
924
+ };
925
 
926
+ _.each( [ 'page', 'section' ], function( type ) {
927
+ var safeData = Backbone.$.extend( true, {}, data, {
928
+ saveDialog: {
929
+ title: elementor.translate( 'save_your_template', [ elementor.translate( type ) ] )
930
+ }
931
+ } );
932
 
933
+ self.registerTemplateType( type, safeData );
934
+ } );
935
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
936
 
937
+ this.init = function() {
938
+ registerDefaultTemplateTypes();
939
+ };
940
 
941
+ this.getTemplateTypes = function( type ) {
942
+ if ( type ) {
943
+ return templateTypes[ type ];
944
+ }
945
 
946
+ return templateTypes;
947
+ };
948
 
949
+ this.registerTemplateType = function( type, data ) {
950
+ templateTypes[ type ] = data;
951
+ };
952
 
953
+ this.deleteTemplate = function( templateModel ) {
954
+ var dialog = self.getDeleteDialog();
955
 
956
+ dialog.onConfirm = function() {
957
+ elementor.ajax.send( 'delete_template', {
958
+ data: {
959
+ source: templateModel.get( 'source' ),
960
+ template_id: templateModel.get( 'template_id' )
961
+ },
962
+ success: function() {
963
+ templatesCollection.remove( templateModel, { silent: true } );
964
 
965
+ self.showTemplates();
966
+ }
967
+ } );
968
+ };
969
 
970
+ dialog.show();
971
+ };
 
972
 
973
+ this.importTemplate = function( templateModel, options ) {
974
+ options = options || {};
975
 
976
+ layout.showLoadingView();
977
 
978
+ self.requestTemplateContent( templateModel.get( 'source' ), templateModel.get( 'template_id' ), {
979
+ data: {
980
+ page_settings: options.withPageSettings
981
+ },
982
  success: function( data ) {
983
+ self.closeModal();
984
 
985
+ elementor.sections.currentView.addChildModel( data.content, startIntent.importOptions || {} );
986
+
987
+ if ( options.withPageSettings ) {
988
+ elementor.settings.page.model.set( data.page_settings );
989
+ }
990
  },
991
  error: function( data ) {
992
+ self.showErrorDialog( data );
993
  }
994
  } );
995
+ };
 
996
 
997
+ this.saveTemplate = function( type, data ) {
998
+ var templateType = templateTypes[ type ];
999
 
1000
+ _.extend( data, {
1001
+ source: 'local',
1002
+ type: type
1003
+ } );
1004
 
1005
+ if ( templateType.prepareSavedData ) {
1006
+ data = templateType.prepareSavedData( data );
1007
+ }
1008
 
1009
+ data.content = JSON.stringify( data.content );
 
1010
 
1011
+ var ajaxParams = { data: data };
1012
 
1013
+ if ( templateType.ajaxParams ) {
1014
+ _.extend( ajaxParams, templateType.ajaxParams );
1015
+ }
1016
 
1017
+ elementor.ajax.send( 'save_template', ajaxParams );
1018
+ };
1019
 
1020
+ this.requestTemplateContent = function( source, id, ajaxOptions ) {
1021
+ var options = {
1022
+ data: {
1023
+ source: source,
1024
+ edit_mode: true,
1025
+ template_id: id
1026
+ }
1027
+ };
1028
 
1029
+ if ( ajaxOptions ) {
1030
+ Backbone.$.extend( true, options, ajaxOptions );
1031
+ }
1032
 
1033
+ return elementor.ajax.send( 'get_template_data', options );
1034
+ };
 
 
1035
 
1036
+ this.getDeleteDialog = function() {
1037
+ if ( ! deleteDialog ) {
1038
+ deleteDialog = elementor.dialogsManager.createWidget( 'confirm', {
1039
+ id: 'elementor-template-library-delete-dialog',
1040
+ headerMessage: elementor.translate( 'delete_template' ),
1041
+ message: elementor.translate( 'delete_template_confirm' ),
1042
+ strings: {
1043
+ confirm: elementor.translate( 'delete' )
1044
+ }
1045
+ } );
1046
+ }
1047
 
1048
+ return deleteDialog;
1049
+ };
1050
 
1051
+ this.getErrorDialog = function() {
1052
+ if ( ! errorDialog ) {
1053
+ errorDialog = elementor.dialogsManager.createWidget( 'alert', {
1054
+ id: 'elementor-template-library-error-dialog',
1055
+ headerMessage: elementor.translate( 'an_error_occurred' )
1056
+ } );
1057
+ }
1058
 
1059
+ return errorDialog;
1060
+ };
1061
 
1062
+ this.getModal = function() {
1063
+ if ( ! modal ) {
1064
+ modal = elementor.dialogsManager.createWidget( 'lightbox', {
1065
+ id: 'elementor-template-library-modal',
1066
+ closeButton: false
1067
+ } );
1068
+ }
1069
 
1070
+ return modal;
1071
+ };
 
1072
 
1073
+ this.getLayout = function() {
1074
+ return layout;
1075
+ };
1076
 
1077
+ this.getTemplatesCollection = function() {
1078
+ return templatesCollection;
1079
+ };
1080
 
1081
+ this.requestRemoteTemplates = function( callback, forceUpdate ) {
1082
+ if ( templatesCollection && ! forceUpdate ) {
1083
+ if ( callback ) {
1084
+ callback();
1085
+ }
1086
 
1087
+ return;
1088
+ }
1089
 
1090
+ elementor.ajax.send( 'get_templates', {
1091
+ success: function( data ) {
1092
+ templatesCollection = new TemplateLibraryCollection( data );
1093
 
1094
+ if ( callback ) {
1095
+ callback();
1096
+ }
1097
+ }
1098
+ } );
1099
+ };
1100
 
1101
+ this.startModal = function( customStartIntent ) {
1102
+ startIntent = customStartIntent || {};
1103
 
1104
+ self.getModal().show();
 
 
1105
 
1106
+ self.setTemplatesSource( 'remote' );
1107
 
1108
+ if ( ! layout ) {
1109
+ initLayout();
1110
+ }
1111
 
1112
+ layout.showLoadingView();
 
1113
 
1114
+ self.requestRemoteTemplates( function() {
1115
+ if ( startIntent.onReady ) {
1116
+ startIntent.onReady();
1117
+ }
1118
+ } );
1119
+ };
1120
 
1121
+ this.closeModal = function() {
1122
+ self.getModal().hide();
1123
+ };
1124
 
1125
+ this.setTemplatesSource = function( source, trigger ) {
1126
+ var channel = elementor.channels.templates;
 
 
 
1127
 
1128
+ channel.reply( 'filter:source', source );
 
1129
 
1130
+ if ( trigger ) {
1131
+ channel.trigger( 'filter:change' );
1132
+ }
1133
+ };
1134
 
1135
+ this.showTemplates = function() {
1136
+ layout.showTemplatesView( templatesCollection );
1137
+ };
1138
 
1139
+ this.showTemplatesModal = function() {
1140
+ self.startModal( {
1141
+ onReady: self.showTemplates
1142
+ } );
1143
+ };
1144
 
1145
+ this.showErrorDialog = function( errorMessage ) {
1146
+ if ( 'object' === typeof errorMessage ) {
1147
+ var message = '';
1148
+
1149
+ _.each( errorMessage, function( error ) {
1150
+ message += '<div>' + error.message + '.</div>';
1151
+ } );
1152
+
1153
+ errorMessage = message;
1154
+ } else if ( errorMessage ) {
1155
+ errorMessage += '.';
1156
+ } else {
1157
+ errorMessage = '<i>&#60;The error message is empty&#62;</i>';
1158
  }
1159
 
1160
+ self.getErrorDialog()
1161
+ .setMessage( elementor.translate( 'templates_request_error' ) + '<div id="elementor-template-library-error-info">' + errorMessage + '</div>' )
1162
+ .show();
1163
+ };
1164
+ };
1165
+
1166
+ module.exports = new TemplateLibraryManager();
1167
+
1168
+ },{"elementor-templates/collections/templates":13,"elementor-templates/views/layout":16}],15:[function(require,module,exports){
1169
+ var TemplateLibraryTemplateModel;
1170
+
1171
+ TemplateLibraryTemplateModel = Backbone.Model.extend( {
1172
+ defaults: {
1173
+ template_id: 0,
1174
+ name: '',
1175
+ title: '',
1176
+ source: '',
1177
+ type: '',
1178
+ author: '',
1179
+ thumbnail: '',
1180
+ url: '',
1181
+ export_link: '',
1182
+ categories: [],
1183
+ keywords: []
1184
+ }
1185
+ } );
1186
+
1187
+ module.exports = TemplateLibraryTemplateModel;
1188
+
1189
+ },{}],16:[function(require,module,exports){
1190
+ var TemplateLibraryHeaderView = require( 'elementor-templates/views/parts/header' ),
1191
+ TemplateLibraryHeaderLogoView = require( 'elementor-templates/views/parts/header-parts/logo' ),
1192
+ TemplateLibraryHeaderSaveView = require( 'elementor-templates/views/parts/header-parts/save' ),
1193
+ TemplateLibraryHeaderMenuView = require( 'elementor-templates/views/parts/header-parts/menu' ),
1194
+ TemplateLibraryHeaderPreviewView = require( 'elementor-templates/views/parts/header-parts/preview' ),
1195
+ TemplateLibraryHeaderBackView = require( 'elementor-templates/views/parts/header-parts/back' ),
1196
+ TemplateLibraryLoadingView = require( 'elementor-templates/views/parts/loading' ),
1197
+ TemplateLibraryCollectionView = require( 'elementor-templates/views/parts/templates' ),
1198
+ TemplateLibrarySaveTemplateView = require( 'elementor-templates/views/parts/save-template' ),
1199
+ TemplateLibraryImportView = require( 'elementor-templates/views/parts/import' ),
1200
+ TemplateLibraryPreviewView = require( 'elementor-templates/views/parts/preview' ),
1201
+ TemplateLibraryLayoutView;
1202
+
1203
+ TemplateLibraryLayoutView = Marionette.LayoutView.extend( {
1204
+ el: '#elementor-template-library-modal',
1205
+
1206
+ regions: {
1207
+ modalContent: '.dialog-message',
1208
+ modalHeader: '.dialog-widget-header'
1209
  },
1210
 
1211
  initialize: function() {
1212
+ this.getRegion( 'modalHeader' ).show( new TemplateLibraryHeaderView() );
1213
  },
1214
 
1215
+ getHeaderView: function() {
1216
+ return this.getRegion( 'modalHeader' ).currentView;
1217
+ },
1218
 
1219
+ getTemplateActionButton: function( templateData ) {
1220
+ var viewId = '#tmpl-elementor-template-library-' + ( templateData.isPro ? 'get-pro-button' : 'insert-button' );
 
1221
 
1222
+ viewId = elementor.hooks.applyFilters( 'elementor/editor/template-library/template/action-button', viewId, templateData );
1223
 
1224
+ var template = Marionette.TemplateCache.get( viewId );
 
 
1225
 
1226
+ return Marionette.Renderer.render( template );
 
 
1227
  },
1228
 
1229
+ showLoadingView: function() {
1230
+ this.modalContent.show( new TemplateLibraryLoadingView() );
1231
+ },
1232
 
1233
+ showTemplatesView: function( templatesCollection ) {
1234
+ this.modalContent.show( new TemplateLibraryCollectionView( {
1235
+ collection: templatesCollection
1236
+ } ) );
1237
 
1238
+ var headerView = this.getHeaderView();
1239
+
1240
+ headerView.tools.show( new TemplateLibraryHeaderSaveView() );
1241
+ headerView.menuArea.show( new TemplateLibraryHeaderMenuView() );
1242
+ headerView.logoArea.show( new TemplateLibraryHeaderLogoView() );
1243
  },
1244
 
1245
+ showImportView: function() {
1246
+ this.modalContent.show( new TemplateLibraryImportView() );
1247
  },
1248
 
1249
+ showSaveTemplateView: function( elementModel ) {
1250
+ this.modalContent.show( new TemplateLibrarySaveTemplateView( { model: elementModel } ) );
1251
+
1252
+ var headerView = this.getHeaderView();
1253
+
1254
+ headerView.tools.reset();
1255
+ headerView.menuArea.reset();
1256
+ headerView.logoArea.show( new TemplateLibraryHeaderLogoView() );
1257
  },
1258
 
1259
+ showPreviewView: function( templateModel ) {
1260
+ this.modalContent.show( new TemplateLibraryPreviewView( {
1261
+ url: templateModel.get( 'url' )
1262
+ } ) );
1263
 
1264
+ var headerView = this.getHeaderView();
 
 
1265
 
1266
+ headerView.menuArea.reset();
1267
 
1268
+ headerView.tools.show( new TemplateLibraryHeaderPreviewView( {
1269
+ model: templateModel
1270
+ } ) );
1271
 
1272
+ headerView.logoArea.show( new TemplateLibraryHeaderBackView() );
1273
+ }
1274
+ } );
1275
 
1276
+ module.exports = TemplateLibraryLayoutView;
 
 
1277
 
1278
+ },{"elementor-templates/views/parts/header":22,"elementor-templates/views/parts/header-parts/back":17,"elementor-templates/views/parts/header-parts/logo":18,"elementor-templates/views/parts/header-parts/menu":19,"elementor-templates/views/parts/header-parts/preview":20,"elementor-templates/views/parts/header-parts/save":21,"elementor-templates/views/parts/import":23,"elementor-templates/views/parts/loading":24,"elementor-templates/views/parts/preview":25,"elementor-templates/views/parts/save-template":26,"elementor-templates/views/parts/templates":28}],17:[function(require,module,exports){
1279
+ var TemplateLibraryHeaderBackView;
1280
 
1281
+ TemplateLibraryHeaderBackView = Marionette.ItemView.extend( {
1282
+ template: '#tmpl-elementor-template-library-header-back',
 
 
 
1283
 
1284
+ id: 'elementor-template-library-header-preview-back',
1285
+
1286
+ events: {
1287
+ 'click': 'onClick'
1288
  },
1289
 
1290
+ onClick: function() {
1291
+ elementor.templates.showTemplates();
 
 
1292
  }
1293
  } );
1294
 
1295
+ module.exports = TemplateLibraryHeaderBackView;
 
 
 
 
1296
 
1297
+ },{}],18:[function(require,module,exports){
1298
+ var TemplateLibraryHeaderLogoView;
1299
 
1300
+ TemplateLibraryHeaderLogoView = Marionette.ItemView.extend( {
1301
+ template: '#tmpl-elementor-template-library-header-logo',
 
 
 
1302
 
1303
+ id: 'elementor-template-library-header-logo',
 
 
 
 
1304
 
1305
+ events: {
1306
+ 'click': 'onClick'
1307
  },
1308
 
1309
+ onClick: function() {
1310
+ elementor.templates.setTemplatesSource( 'remote' );
1311
+ elementor.templates.showTemplates();
1312
  }
1313
  } );
1314
 
1315
+ module.exports = TemplateLibraryHeaderLogoView;
1316
 
1317
+ },{}],19:[function(require,module,exports){
1318
+ var TemplateLibraryHeaderMenuView;
 
1319
 
1320
+ TemplateLibraryHeaderMenuView = Marionette.ItemView.extend( {
1321
+ options: {
1322
+ activeClass: 'elementor-active'
1323
+ },
1324
 
1325
+ template: '#tmpl-elementor-template-library-header-menu',
 
 
 
1326
 
1327
+ id: 'elementor-template-library-header-menu',
1328
 
1329
+ ui: {
1330
+ menuItems: '.elementor-template-library-menu-item'
1331
+ },
1332
 
1333
+ events: {
1334
+ 'click @ui.menuItems': 'onMenuItemClick'
1335
+ },
 
 
 
1336
 
1337
+ $activeItem: null,
 
1338
 
1339
+ activateMenuItem: function( $item ) {
1340
+ var activeClass = this.getOption( 'activeClass' );
 
 
 
 
 
 
 
 
 
 
 
1341
 
1342
+ if ( this.$activeItem === $item ) {
1343
+ return;
1344
+ }
 
 
 
 
 
1345
 
1346
+ if ( this.$activeItem ) {
1347
+ this.$activeItem.removeClass( activeClass );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1348
  }
1349
+
1350
+ $item.addClass( activeClass );
1351
+
1352
+ this.$activeItem = $item;
1353
  },
1354
 
1355
+ onRender: function() {
1356
+ var currentSource = elementor.channels.templates.request( 'filter:source' ),
1357
+ $sourceItem = this.ui.menuItems.filter( '[data-template-source="' + currentSource + '"]' );
1358
 
1359
+ this.activateMenuItem( $sourceItem );
 
1360
  },
1361
 
1362
+ onMenuItemClick: function( event ) {
1363
+ var item = event.currentTarget;
1364
 
1365
+ this.activateMenuItem( Backbone.$( item ) );
 
1366
 
1367
+ elementor.templates.setTemplatesSource( item.dataset.templateSource, true );
1368
+ }
1369
+ } );
1370
 
1371
+ module.exports = TemplateLibraryHeaderMenuView;
 
1372
 
1373
+ },{}],20:[function(require,module,exports){
1374
+ var TemplateLibraryInsertTemplateBehavior = require( 'elementor-templates/behaviors/insert-template' ),
1375
+ TemplateLibraryHeaderPreviewView;
1376
 
1377
+ TemplateLibraryHeaderPreviewView = Marionette.ItemView.extend( {
1378
+ template: '#tmpl-elementor-template-library-header-preview',
1379
 
1380
+ id: 'elementor-template-library-header-preview',
 
 
1381
 
1382
+ behaviors: {
1383
+ insertTemplate: {
1384
+ behaviorClass: TemplateLibraryInsertTemplateBehavior
1385
  }
1386
+ }
1387
+ } );
1388
 
1389
+ module.exports = TemplateLibraryHeaderPreviewView;
 
 
1390
 
1391
+ },{"elementor-templates/behaviors/insert-template":12}],21:[function(require,module,exports){
1392
+ var TemplateLibraryHeaderSaveView;
 
 
1393
 
1394
+ TemplateLibraryHeaderSaveView = Marionette.ItemView.extend( {
1395
+ template: '#tmpl-elementor-template-library-header-save',
1396
 
1397
+ id: 'elementor-template-library-header-save',
 
1398
 
1399
+ className: 'elementor-template-library-header-item',
 
 
1400
 
1401
+ events: {
1402
+ 'click': 'onClick'
1403
  },
1404
 
1405
+ onClick: function() {
1406
+ elementor.templates.getLayout().showSaveTemplateView();
1407
+ }
1408
+ } );
1409
 
1410
+ module.exports = TemplateLibraryHeaderSaveView;
1411
 
1412
+ },{}],22:[function(require,module,exports){
1413
+ var TemplateLibraryHeaderView;
1414
 
1415
+ TemplateLibraryHeaderView = Marionette.LayoutView.extend( {
 
 
 
1416
 
1417
+ id: 'elementor-template-library-header',
1418
 
1419
+ template: '#tmpl-elementor-template-library-header',
1420
 
1421
+ regions: {
1422
+ logoArea: '#elementor-template-library-header-logo-area',
1423
+ tools: '#elementor-template-library-header-tools',
1424
+ menuArea: '#elementor-template-library-header-menu-area'
1425
+ },
1426
 
1427
+ ui: {
1428
+ closeModal: '#elementor-template-library-header-close-modal'
1429
  },
1430
 
1431
+ events: {
1432
+ 'click @ui.closeModal': 'onCloseModalClick'
1433
  },
1434
 
1435
+ onCloseModalClick: function() {
1436
+ elementor.templates.closeModal();
1437
+ }
1438
+ } );
1439
 
1440
+ module.exports = TemplateLibraryHeaderView;
 
 
 
1441
 
1442
+ },{}],23:[function(require,module,exports){
1443
+ var TemplateLibraryImportView;
1444
+
1445
+ TemplateLibraryImportView = Marionette.ItemView.extend( {
1446
+ template: '#tmpl-elementor-template-library-import',
1447
+
1448
+ id: 'elementor-template-library-import',
1449
+
1450
+ ui: {
1451
+ uploadForm: '#elementor-template-library-import-form'
1452
  },
1453
 
1454
+ events: {
1455
+ 'submit @ui.uploadForm': 'onFormSubmit'
1456
+ },
1457
 
1458
+ onFormSubmit: function( event ) {
1459
+ event.preventDefault();
1460
 
1461
+ elementor.templates.getLayout().showLoadingView();
1462
 
1463
+ elementor.ajax.send( 'import_template', {
1464
+ data: new FormData( this.ui.uploadForm[ 0 ] ),
1465
+ processData: false,
1466
+ contentType: false,
1467
+ success: function( data ) {
1468
+ elementor.templates.getTemplatesCollection().add( data.item );
1469
 
1470
+ elementor.templates.showTemplates();
1471
+ },
1472
+ error: function( data ) {
1473
+ elementor.templates.showErrorDialog( data );
1474
+ }
1475
+ } );
1476
+ }
1477
+ } );
1478
 
1479
+ module.exports = TemplateLibraryImportView;
 
1480
 
1481
+ },{}],24:[function(require,module,exports){
1482
+ var TemplateLibraryLoadingView;
1483
 
1484
+ TemplateLibraryLoadingView = Marionette.ItemView.extend( {
1485
+ id: 'elementor-template-library-loading',
1486
 
1487
+ template: '#tmpl-elementor-template-library-loading'
1488
+ } );
1489
 
1490
+ module.exports = TemplateLibraryLoadingView;
1491
 
1492
+ },{}],25:[function(require,module,exports){
1493
+ var TemplateLibraryPreviewView;
1494
 
1495
+ TemplateLibraryPreviewView = Marionette.ItemView.extend( {
1496
+ template: '#tmpl-elementor-template-library-preview',
1497
 
1498
+ id: 'elementor-template-library-preview',
1499
 
1500
+ ui: {
1501
+ iframe: '> iframe'
1502
  },
1503
 
1504
+ onRender: function() {
1505
+ this.ui.iframe.attr( 'src', this.getOption( 'url' ) );
1506
+ }
1507
+ } );
1508
 
1509
+ module.exports = TemplateLibraryPreviewView;
 
 
 
1510
 
1511
+ },{}],26:[function(require,module,exports){
1512
+ var TemplateLibrarySaveTemplateView;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1513
 
1514
+ TemplateLibrarySaveTemplateView = Marionette.ItemView.extend( {
1515
+ id: 'elementor-template-library-save-template',
1516
+
1517
+ template: '#tmpl-elementor-template-library-save-template',
1518
+
1519
+ ui: {
1520
+ form: '#elementor-template-library-save-template-form',
1521
+ submitButton: '#elementor-template-library-save-template-submit'
1522
  },
1523
 
1524
+ events: {
1525
+ 'submit @ui.form': 'onFormSubmit'
1526
+ },
 
 
 
 
 
 
1527
 
1528
+ getSaveType: function() {
1529
+ return this.model ? this.model.get( 'elType' ) : 'page';
1530
+ },
1531
 
1532
+ templateHelpers: function() {
1533
+ var saveType = this.getSaveType(),
1534
+ templateType = elementor.templates.getTemplateTypes( saveType );
 
 
1535
 
1536
+ return templateType.saveDialog;
1537
+ },
 
 
 
 
 
1538
 
1539
+ onFormSubmit: function( event ) {
1540
+ event.preventDefault();
 
 
 
 
 
 
1541
 
1542
+ var formData = this.ui.form.elementorSerializeObject(),
1543
+ saveType = this.model ? this.model.get( 'elType' ) : 'page',
1544
+ JSONParams = { removeDefault: true };
1545
 
1546
+ formData.content = this.model ? [ this.model.toJSON( JSONParams ) ] : elementor.elements.toJSON( JSONParams );
 
 
 
1547
 
1548
+ this.ui.submitButton.addClass( 'elementor-button-state' );
 
 
 
 
 
 
 
 
 
1549
 
1550
+ elementor.templates.saveTemplate( saveType, formData );
1551
+ }
1552
+ } );
 
 
 
 
 
 
1553
 
1554
+ module.exports = TemplateLibrarySaveTemplateView;
1555
 
1556
+ },{}],27:[function(require,module,exports){
1557
+ var TemplateLibraryTemplatesEmptyView;
 
1558
 
1559
+ TemplateLibraryTemplatesEmptyView = Marionette.ItemView.extend( {
1560
+ id: 'elementor-template-library-templates-empty',
 
 
1561
 
1562
+ template: '#tmpl-elementor-template-library-templates-empty'
1563
+ } );
 
 
 
 
 
 
 
 
1564
 
1565
+ module.exports = TemplateLibraryTemplatesEmptyView;
 
 
 
 
 
 
 
 
 
1566
 
1567
+ },{}],28:[function(require,module,exports){
1568
+ var TemplateLibraryTemplateLocalView = require( 'elementor-templates/views/template/local' ),
1569
+ TemplateLibraryTemplateRemoteView = require( 'elementor-templates/views/template/remote' ),
1570
+ TemplateLibraryTemplatesEmptyView = require( 'elementor-templates/views/parts/templates-empty' ),
1571
+ TemplateLibraryCollectionView;
1572
 
1573
+ TemplateLibraryCollectionView = Marionette.CompositeView.extend( {
1574
+ template: '#tmpl-elementor-template-library-templates',
1575
 
1576
+ id: 'elementor-template-library-templates',
 
 
 
 
 
1577
 
1578
+ childViewContainer: '#elementor-template-library-templates-container',
 
 
1579
 
1580
+ emptyView: TemplateLibraryTemplatesEmptyView,
 
 
1581
 
1582
+ getChildView: function( childModel ) {
1583
+ if ( 'remote' === childModel.get( 'source' ) ) {
1584
+ return TemplateLibraryTemplateRemoteView;
1585
+ }
1586
 
1587
+ return TemplateLibraryTemplateLocalView;
 
 
 
 
1588
  },
1589
 
1590
+ initialize: function() {
1591
+ this.listenTo( elementor.channels.templates, 'filter:change', this._renderChildren );
1592
+ },
 
 
1593
 
1594
+ filterByName: function( model ) {
1595
+ var filterValue = elementor.channels.templates.request( 'filter:text' );
1596
 
1597
+ if ( ! filterValue ) {
1598
+ return true;
1599
+ }
1600
 
1601
+ filterValue = filterValue.toLowerCase();
1602
 
1603
+ if ( model.get( 'title' ).toLowerCase().indexOf( filterValue ) >= 0 ) {
1604
+ return true;
1605
+ }
1606
 
1607
+ return _.any( model.get( 'keywords' ), function( keyword ) {
1608
+ return keyword.toLowerCase().indexOf( filterValue ) >= 0;
1609
+ } );
1610
+ },
1611
 
1612
+ filterBySource: function( model ) {
1613
+ var filterValue = elementor.channels.templates.request( 'filter:source' );
1614
 
1615
+ if ( ! filterValue ) {
1616
+ return true;
1617
+ }
1618
 
1619
+ return filterValue === model.get( 'source' );
1620
+ },
1621
 
1622
+ filterByType: function( model ) {
1623
+ return false !== elementor.templates.getTemplateTypes( model.get( 'type' ) ).showInLibrary;
1624
+ },
1625
 
1626
+ filter: function( childModel ) {
1627
+ return this.filterByName( childModel ) && this.filterBySource( childModel ) && this.filterByType( childModel );
1628
  },
1629
 
1630
+ onRenderCollection: function() {
1631
+ var isEmpty = this.children.isEmpty();
1632
 
1633
+ this.$childViewContainer.attr( 'data-template-source', isEmpty ? 'empty' : elementor.channels.templates.request( 'filter:source' ) );
1634
+ }
1635
+ } );
1636
 
1637
+ module.exports = TemplateLibraryCollectionView;
1638
 
1639
+ },{"elementor-templates/views/parts/templates-empty":27,"elementor-templates/views/template/local":30,"elementor-templates/views/template/remote":31}],29:[function(require,module,exports){
1640
+ var TemplateLibraryInsertTemplateBehavior = require( 'elementor-templates/behaviors/insert-template' ),
1641
+ TemplateLibraryTemplateView;
 
1642
 
1643
+ TemplateLibraryTemplateView = Marionette.ItemView.extend( {
1644
+ className: function() {
1645
+ var classes = 'elementor-template-library-template elementor-template-library-template-' + this.model.get( 'source' );
1646
 
1647
+ if ( this.model.get( 'isPro' ) ) {
1648
+ classes += ' elementor-template-library-pro-template';
1649
+ }
1650
 
1651
+ return classes;
1652
+ },
1653
 
1654
+ ui: function() {
1655
+ return {
1656
+ previewButton: '.elementor-template-library-template-preview'
1657
+ };
1658
+ },
1659
 
1660
+ events: function() {
1661
+ return {
1662
+ 'click @ui.previewButton': 'onPreviewButtonClick'
1663
+ };
1664
+ },
1665
 
1666
+ behaviors: {
1667
+ insertTemplate: {
1668
+ behaviorClass: TemplateLibraryInsertTemplateBehavior
1669
+ }
1670
+ }
1671
+ } );
1672
 
1673
+ module.exports = TemplateLibraryTemplateView;
1674
 
1675
+ },{"elementor-templates/behaviors/insert-template":12}],30:[function(require,module,exports){
1676
+ var TemplateLibraryTemplateView = require( 'elementor-templates/views/template/base' ),
1677
+ TemplateLibraryTemplateLocalView;
1678
 
1679
+ TemplateLibraryTemplateLocalView = TemplateLibraryTemplateView.extend( {
1680
+ template: '#tmpl-elementor-template-library-template-local',
 
 
1681
 
1682
+ ui: function() {
1683
+ return _.extend( TemplateLibraryTemplateView.prototype.ui.apply( this, arguments ), {
1684
+ deleteButton: '.elementor-template-library-template-delete'
1685
+ } );
1686
+ },
1687
 
1688
+ events: function() {
1689
+ return _.extend( TemplateLibraryTemplateView.prototype.events.apply( this, arguments ), {
1690
+ 'click @ui.deleteButton': 'onDeleteButtonClick'
1691
+ } );
1692
+ },
1693
 
1694
+ onDeleteButtonClick: function() {
1695
+ elementor.templates.deleteTemplate( this.model );
1696
+ },
 
 
1697
 
1698
+ onPreviewButtonClick: function() {
1699
+ open( this.model.get( 'url' ), '_blank' );
1700
+ }
1701
+ } );
1702
 
1703
+ module.exports = TemplateLibraryTemplateLocalView;
1704
 
1705
+ },{"elementor-templates/views/template/base":29}],31:[function(require,module,exports){
1706
+ var TemplateLibraryTemplateView = require( 'elementor-templates/views/template/base' ),
1707
+ TemplateLibraryTemplateRemoteView;
1708
 
1709
+ TemplateLibraryTemplateRemoteView = TemplateLibraryTemplateView.extend( {
1710
+ template: '#tmpl-elementor-template-library-template-remote',
 
1711
 
1712
+ onPreviewButtonClick: function() {
1713
+ elementor.templates.getLayout().showPreviewView( this.model );
1714
+ }
1715
+ } );
1716
 
1717
+ module.exports = TemplateLibraryTemplateRemoteView;
1718
 
1719
+ },{"elementor-templates/views/template/base":29}],32:[function(require,module,exports){
1720
+ /* global ElementorConfig */
1721
+ var App;
1722
 
1723
+ Marionette.TemplateCache.prototype.compileTemplate = function( rawTemplate, options ) {
1724
+ options = {
1725
+ evaluate: /<#([\s\S]+?)#>/g,
1726
+ interpolate: /{{{([\s\S]+?)}}}/g,
1727
+ escape: /{{([^}]+?)}}(?!})/g
1728
+ };
1729
 
1730
+ return _.template( rawTemplate, options );
1731
+ };
 
 
 
 
1732
 
1733
+ App = Marionette.Application.extend( {
1734
+ helpers: require( 'elementor-editor-utils/helpers' ),
1735
+ heartbeat: require( 'elementor-editor-utils/heartbeat' ),
1736
+ imagesManager: require( 'elementor-editor-utils/images-manager' ),
1737
+ debug: require( 'elementor-editor-utils/debug' ),
1738
+ schemes: require( 'elementor-editor-utils/schemes' ),
1739
+ presetsFactory: require( 'elementor-editor-utils/presets-factory' ),
1740
+ introduction: require( 'elementor-editor-utils/introduction' ),
1741
+ templates: require( 'elementor-templates/manager' ),
1742
+ ajax: require( 'elementor-editor-utils/ajax' ),
1743
+ conditions: require( 'elementor-editor-utils/conditions' ),
1744
+ revisions: require( 'elementor-revisions/manager' ),
1745
+ hotKeys: require( 'elementor-utils/hot-keys' ),
 
 
 
 
 
 
 
 
1746
 
1747
+ channels: {
1748
+ editor: Backbone.Radio.channel( 'ELEMENTOR:editor' ),
1749
+ data: Backbone.Radio.channel( 'ELEMENTOR:data' ),
1750
+ panelElements: Backbone.Radio.channel( 'ELEMENTOR:panelElements' ),
1751
+ dataEditMode: Backbone.Radio.channel( 'ELEMENTOR:editmode' ),
1752
+ deviceMode: Backbone.Radio.channel( 'ELEMENTOR:deviceMode' ),
1753
+ templates: Backbone.Radio.channel( 'ELEMENTOR:templates' )
1754
  },
1755
 
1756
+ // Exporting modules that can be used externally
1757
+ modules: {
1758
+ element: require( 'elementor-models/element' ),
1759
+ WidgetView: require( 'elementor-views/widget' ),
1760
+ panel: {
1761
+ Menu: require( 'elementor-panel/pages/menu/menu' )
1762
+ },
1763
+ controls: {
1764
+ Base: require( 'elementor-views/controls/base' ),
1765
+ BaseMultiple: require( 'elementor-views/controls/base-multiple' ),
1766
+ Color: require( 'elementor-views/controls/color' ),
1767
+ Dimensions: require( 'elementor-views/controls/dimensions' ),
1768
+ Image_dimensions: require( 'elementor-views/controls/image-dimensions' ),
1769
+ Media: require( 'elementor-views/controls/media' ),
1770
+ Slider: require( 'elementor-views/controls/slider' ),
1771
+ Wysiwyg: require( 'elementor-views/controls/wysiwyg' ),
1772
+ Choose: require( 'elementor-views/controls/choose' ),
1773
+ Url: require( 'elementor-views/controls/base-multiple' ),
1774
+ Font: require( 'elementor-views/controls/font' ),
1775
+ Section: require( 'elementor-views/controls/section' ),
1776
+ Tab: require( 'elementor-views/controls/tab' ),
1777
+ Repeater: require( 'elementor-views/controls/repeater' ),
1778
+ Wp_widget: require( 'elementor-views/controls/wp_widget' ),
1779
+ Icon: require( 'elementor-views/controls/icon' ),
1780
+ Gallery: require( 'elementor-views/controls/gallery' ),
1781
+ Select2: require( 'elementor-views/controls/select2' ),
1782
+ Date_time: require( 'elementor-views/controls/date-time' ),
1783
+ Code: require( 'elementor-views/controls/code' ),
1784
+ Box_shadow: require( 'elementor-views/controls/box-shadow' ),
1785
+ Text_shadow: require( 'elementor-views/controls/box-shadow' ),
1786
+ Structure: require( 'elementor-views/controls/structure' ),
1787
+ Animation: require( 'elementor-views/controls/select2' ),
1788
+ Hover_animation: require( 'elementor-views/controls/select2' ),
1789
+ Order: require( 'elementor-views/controls/order' ),
1790
+ Switcher: require( 'elementor-views/controls/switcher' ),
1791
+ Number: require( 'elementor-views/controls/number' )
1792
+ },
1793
+ templateLibrary: {
1794
+ ElementsCollectionView: require( 'elementor-panel/pages/elements/views/elements' )
1795
+ }
1796
  },
1797
 
1798
+ _defaultDeviceMode: 'desktop',
 
 
1799
 
1800
+ addControlView: function( controlID, ControlView ) {
1801
+ this.modules.controls[ controlID[0].toUpperCase() + controlID.slice( 1 ) ] = ControlView;
 
 
 
 
1802
  },
1803
 
1804
+ getElementData: function( modelElement ) {
1805
+ var elType = modelElement.get( 'elType' );
 
1806
 
1807
+ if ( 'widget' === elType ) {
1808
+ var widgetType = modelElement.get( 'widgetType' );
 
 
 
 
 
 
 
 
 
 
 
1809
 
1810
+ if ( ! this.config.widgets[ widgetType ] ) {
1811
+ return false;
 
 
 
1812
  }
 
 
 
 
 
1813
 
1814
+ return this.config.widgets[ widgetType ];
 
1815
  }
1816
 
1817
+ if ( ! this.config.elements[ elType ] ) {
1818
+ return false;
 
 
 
 
 
 
 
1819
  }
 
1820
 
1821
+ return this.config.elements[ elType ];
 
 
 
 
 
1822
  },
1823
 
1824
+ getElementControls: function( modelElement ) {
1825
+ var self = this,
1826
+ elementData = self.getElementData( modelElement );
1827
 
1828
+ if ( ! elementData ) {
1829
+ return false;
 
 
1830
  }
 
 
 
 
 
 
 
 
 
 
1831
 
1832
+ var elType = modelElement.get( 'elType' ),
1833
+ isInner = modelElement.get( 'isInner' ),
1834
+ controls = {};
 
 
 
 
 
 
 
 
 
1835
 
1836
+ _.each( elementData.controls, function( controlData, controlKey ) {
1837
+ if ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top ) {
1838
+ return;
1839
  }
 
 
1840
 
1841
+ controls[ controlKey ] = _.extend( {}, self.config.controls[ controlData.type ], controlData );
1842
+ } );
1843
 
1844
+ return controls;
1845
  },
1846
 
1847
+ getControlView: function( controlID ) {
1848
+ return this.modules.controls[ controlID[0].toUpperCase() + controlID.slice( 1 ) ] || this.modules.controls.Base;
1849
  },
1850
 
1851
+ getPanelView: function() {
1852
+ return this.getRegion( 'panel' ).currentView;
1853
+ },
 
 
 
1854
 
1855
+ initComponents: function() {
1856
+ var EventManager = require( 'elementor-utils/hooks' ),
1857
+ Settings = require( 'elementor-editor/settings/settings' );
1858
 
1859
+ this.hooks = new EventManager();
 
 
 
 
1860
 
1861
+ this.settings = new Settings();
 
 
1862
 
1863
+ /**
1864
+ * @deprecated - use `this.settings.page` instead
1865
+ */
1866
+ this.pageSettings = this.settings.page;
1867
 
1868
+ this.templates.init();
 
 
 
1869
 
1870
+ this.initDialogsManager();
1871
 
1872
+ this.heartbeat.init();
 
 
1873
 
1874
+ this.ajax.init();
 
 
 
 
1875
 
1876
+ this.revisions.init();
1877
  },
1878
 
1879
+ initDialogsManager: function() {
1880
+ this.dialogsManager = new DialogsManager.Instance();
1881
+ },
 
 
 
1882
 
1883
+ initElements: function() {
1884
+ var ElementModel = elementor.modules.element,
1885
+ config = this.config.data;
1886
 
1887
+ // If it's an reload, use the not-saved data
1888
+ if ( this.elements ) {
1889
+ config = this.elements.toJSON();
1890
  }
1891
 
1892
+ this.elements = new ElementModel.Collection( config );
 
 
 
 
 
 
 
 
 
 
 
1893
  },
1894
 
1895
+ initPreview: function() {
1896
+ this.$previewWrapper = Backbone.$( '#elementor-preview' );
 
1897
 
1898
+ this.$previewResponsiveWrapper = Backbone.$( '#elementor-preview-responsive-wrapper' );
 
 
 
 
 
 
 
 
 
 
 
1899
 
1900
+ var previewIframeId = 'elementor-preview-iframe';
1901
 
1902
+ // Make sure the iFrame does not exist.
1903
+ if ( ! Backbone.$( '#' + previewIframeId ).length ) {
1904
+ var previewIFrame = document.createElement( 'iframe' );
1905
 
1906
+ previewIFrame.id = previewIframeId;
1907
+ previewIFrame.src = this.config.preview_link + '&' + ( new Date().getTime() );
1908
+
1909
+ this.$previewResponsiveWrapper.append( previewIFrame );
1910
  }
1911
 
1912
+ this.$preview = Backbone.$( '#' + previewIframeId );
1913
 
1914
+ this.$preview.on( 'load', _.bind( this.onPreviewLoaded, this ) );
1915
+ },
 
1916
 
1917
+ initFrontend: function() {
1918
+ var frontendWindow = this.$preview[0].contentWindow;
1919
 
1920
+ window.elementorFrontend = frontendWindow.elementorFrontend;
 
1921
 
1922
+ frontendWindow.elementor = this;
 
1923
 
1924
+ elementorFrontend.init();
1925
 
1926
+ elementorFrontend.elementsHandler.initHandlers();
 
 
 
 
1927
 
1928
+ this.trigger( 'frontend:init' );
 
1929
  },
1930
 
1931
+ initClearPageDialog: function() {
1932
+ var self = this,
1933
+ dialog;
1934
 
1935
+ self.getClearPageDialog = function() {
1936
+ if ( dialog ) {
1937
+ return dialog;
1938
+ }
1939
 
1940
+ dialog = this.dialogsManager.createWidget( 'confirm', {
1941
+ id: 'elementor-clear-page-dialog',
1942
+ headerMessage: elementor.translate( 'clear_page' ),
1943
+ message: elementor.translate( 'dialog_confirm_clear_page' ),
1944
+ position: {
1945
+ my: 'center center',
1946
+ at: 'center center'
1947
+ },
1948
+ strings: {
1949
+ confirm: elementor.translate( 'delete' ),
1950
+ cancel: elementor.translate( 'cancel' )
1951
+ },
1952
+ onConfirm: function() {
1953
+ self.getRegion( 'sections' ).currentView.collection.reset();
1954
+ }
1955
+ } );
1956
 
1957
+ return dialog;
1958
+ };
1959
  },
1960
 
1961
+ initHotKeys: function() {
1962
+ var keysDictionary = {
1963
+ del: 46,
1964
+ d: 68,
1965
+ l: 76,
1966
+ m: 77,
1967
+ p: 80,
1968
+ s: 83
1969
+ };
1970
 
1971
+ var $ = jQuery,
1972
+ hotKeysHandlers = {},
1973
+ hotKeysManager = this.hotKeys;
1974
 
1975
+ hotKeysHandlers[ keysDictionary.del ] = {
1976
+ deleteElement: {
1977
+ isWorthHandling: function( event ) {
1978
+ var isEditorOpen = 'editor' === elementor.getPanelView().getCurrentPageName(),
1979
+ isInputTarget = $( event.target ).is( ':input, .elementor-input' );
1980
 
1981
+ return isEditorOpen && ! isInputTarget;
1982
+ },
1983
+ handle: function() {
1984
+ elementor.getPanelView().getCurrentPageView().getOption( 'editedElementView' ).confirmRemove();
1985
+ }
1986
+ }
1987
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1988
 
1989
+ hotKeysHandlers[ keysDictionary.d ] = {
1990
+ /* Waiting for CTRL+Z / CTRL+Y
1991
+ duplicateElement: {
1992
+ isWorthHandling: function( event ) {
1993
+ return self.isControlEvent( event );
1994
+ },
1995
+ handle: function() {
1996
+ var panel = elementor.getPanelView();
 
1997
 
1998
+ if ( 'editor' !== panel.getCurrentPageName() ) {
1999
+ return;
2000
+ }
2001
 
2002
+ panel.getCurrentPageView().getOption( 'editedElementView' ).duplicate();
2003
+ }
2004
+ }*/
2005
+ };
2006
 
2007
+ hotKeysHandlers[ keysDictionary.l ] = {
2008
+ showTemplateLibrary: {
2009
+ isWorthHandling: function( event ) {
2010
+ return hotKeysManager.isControlEvent( event ) && event.shiftKey;
2011
+ },
2012
+ handle: function() {
2013
+ elementor.templates.showTemplatesModal();
2014
+ }
2015
+ }
2016
+ };
2017
 
2018
+ hotKeysHandlers[ keysDictionary.m ] = {
2019
+ changeDeviceMode: {
2020
+ devices: [ 'desktop', 'tablet', 'mobile' ],
2021
+ isWorthHandling: function( event ) {
2022
+ return hotKeysManager.isControlEvent( event ) && event.shiftKey;
2023
+ },
2024
+ handle: function() {
2025
+ var currentDeviceMode = elementor.channels.deviceMode.request( 'currentMode' ),
2026
+ modeIndex = this.devices.indexOf( currentDeviceMode );
 
 
 
2027
 
2028
+ modeIndex++;
2029
 
2030
+ if ( modeIndex >= this.devices.length ) {
2031
+ modeIndex = 0;
 
 
 
 
 
 
 
2032
  }
 
2033
 
2034
+ elementor.changeDeviceMode( this.devices[ modeIndex ] );
2035
+ }
2036
  }
2037
+ };
2038
 
2039
+ hotKeysHandlers[ keysDictionary.p ] = {
2040
+ changeEditMode: {
2041
+ isWorthHandling: function( event ) {
2042
+ return hotKeysManager.isControlEvent( event );
2043
+ },
2044
+ handle: function() {
2045
+ elementor.getPanelView().modeSwitcher.currentView.toggleMode();
2046
+ }
2047
+ }
2048
  };
 
2049
 
2050
+ hotKeysHandlers[ keysDictionary.s ] = {
2051
+ saveEditor: {
2052
+ isWorthHandling: function( event ) {
2053
+ return hotKeysManager.isControlEvent( event );
2054
+ },
2055
+ handle: function() {
2056
+ elementor.getPanelView().getFooterView()._publishBuilder();
2057
+ }
2058
+ }
2059
+ };
2060
 
2061
+ _.each( hotKeysHandlers, function( handlers, keyCode ) {
2062
+ _.each( handlers, function( handler, handlerName ) {
2063
+ hotKeysManager.addHotKeyHandler( keyCode, handlerName, handler );
2064
+ } );
2065
+ } );
2066
 
2067
+ hotKeysManager.bindListener( this.$window.add( elementorFrontend.getElements( '$window' ) ) );
2068
+ },
2069
 
2070
+ preventClicksInsideEditor: function() {
2071
+ this.$previewContents.on( 'click', function( event ) {
2072
+ var $target = Backbone.$( event.target ),
2073
+ editMode = elementor.channels.dataEditMode.request( 'activeMode' ),
2074
+ isClickInsideElementor = !! $target.closest( '#elementor' ).length,
2075
+ isTargetInsideDocument = this.contains( $target[0] );
2076
+
2077
+ if ( isClickInsideElementor && 'edit' === editMode || ! isTargetInsideDocument ) {
2078
+ return;
2079
  }
 
2080
 
2081
+ if ( $target.closest( 'a' ).length ) {
2082
+ event.preventDefault();
2083
+ }
2084
 
2085
+ if ( ! isClickInsideElementor ) {
2086
+ var panelView = elementor.getPanelView();
2087
 
2088
+ if ( 'elements' !== panelView.getCurrentPageName() ) {
2089
+ panelView.setPage( 'elements' );
2090
+ }
2091
+ }
2092
+ } );
2093
  },
2094
 
2095
+ onStart: function() {
2096
+ this.$window = Backbone.$( window );
 
2097
 
2098
+ NProgress.start();
2099
+ NProgress.inc( 0.2 );
 
2100
 
2101
+ this.config = ElementorConfig;
 
 
2102
 
2103
+ Backbone.Radio.DEBUG = false;
2104
+ Backbone.Radio.tuneIn( 'ELEMENTOR' );
 
2105
 
2106
+ this.initComponents();
 
2107
 
2108
+ this.channels.dataEditMode.reply( 'activeMode', 'edit' );
2109
 
2110
+ this.listenTo( this.channels.dataEditMode, 'switch', this.onEditModeSwitched );
 
 
 
2111
 
2112
+ this.setWorkSaver();
 
 
2113
 
2114
+ this.initClearPageDialog();
 
 
2115
 
2116
+ this.$window.trigger( 'elementor:init' );
2117
 
2118
+ this.initPreview();
2119
 
2120
+ this.logSite();
 
2121
  },
2122
 
2123
+ onPreviewLoaded: function() {
2124
+ NProgress.done();
 
 
2125
 
2126
+ this.$previewContents = this.$preview.contents();
 
 
2127
 
2128
+ var $previewElementorEl = this.$previewContents.find( '#elementor' );
 
2129
 
2130
+ if ( ! $previewElementorEl.length ) {
2131
+ this.onPreviewElNotFound();
2132
+ return;
2133
+ }
2134
 
2135
+ this.initFrontend();
 
2136
 
2137
+ this.initElements();
 
 
2138
 
2139
+ this.initHotKeys();
 
 
2140
 
2141
+ var iframeRegion = new Marionette.Region( {
2142
+ // Make sure you get the DOM object out of the jQuery object
2143
+ el: $previewElementorEl[0]
 
 
2144
  } );
 
2145
 
2146
+ this.schemes.init();
 
 
 
 
2147
 
2148
+ this.schemes.printSchemesStyle();
 
2149
 
2150
+ this.preventClicksInsideEditor();
 
 
 
 
2151
 
2152
+ var Preview = require( 'elementor-views/preview' ),
2153
+ PanelLayoutView = require( 'elementor-layouts/panel/panel' );
2154
 
2155
+ this.addRegions( {
2156
+ sections: iframeRegion,
2157
+ panel: '#elementor-panel'
2158
+ } );
2159
 
2160
+ this.getRegion( 'sections' ).show( new Preview( {
2161
+ collection: this.elements
2162
+ } ) );
2163
 
2164
+ this.getRegion( 'panel' ).show( new PanelLayoutView() );
2165
 
2166
+ this.$previewContents
2167
+ .children() // <html>
2168
+ .addClass( 'elementor-html' )
2169
+ .children( 'body' )
2170
+ .addClass( 'elementor-editor-active' );
2171
 
2172
+ this.setResizablePanel();
 
 
 
2173
 
2174
+ this.changeDeviceMode( this._defaultDeviceMode );
 
 
2175
 
2176
+ Backbone.$( '#elementor-loading, #elementor-preview-loading' ).fadeOut( 600 );
 
 
2177
 
2178
+ _.defer( function() {
2179
+ elementorFrontend.getElements( 'window' ).jQuery.holdReady( false );
2180
+ } );
 
2181
 
2182
+ this.enqueueTypographyFonts();
2183
+ //this.introduction.startOnLoadIntroduction(); // TEMP Removed
 
2184
 
2185
+ this.onEditModeSwitched();
2186
 
2187
+ this.trigger( 'preview:loaded' );
2188
+ },
 
2189
 
2190
+ onEditModeSwitched: function() {
2191
+ var activeMode = this.channels.dataEditMode.request( 'activeMode' );
2192
 
2193
+ if ( 'edit' === activeMode ) {
2194
+ this.exitPreviewMode();
2195
+ } else {
2196
+ this.enterPreviewMode( 'preview' === activeMode );
2197
+ }
2198
+ },
2199
 
2200
+ onPreviewElNotFound: function() {
2201
+ var dialog = this.dialogsManager.createWidget( 'confirm', {
2202
+ id: 'elementor-fatal-error-dialog',
2203
+ headerMessage: elementor.translate( 'preview_el_not_found_header' ),
2204
+ message: elementor.translate( 'preview_el_not_found_message' ),
2205
+ position: {
2206
+ my: 'center center',
2207
+ at: 'center center'
2208
+ },
2209
+ strings: {
2210
+ confirm: elementor.translate( 'learn_more' ),
2211
+ cancel: elementor.translate( 'go_back' )
2212
+ },
2213
+ onConfirm: function() {
2214
+ open( elementor.config.help_the_content_url, '_blank' );
2215
+ },
2216
+ onCancel: function() {
2217
+ parent.history.go( -1 );
2218
+ },
2219
+ hideOnButtonClick: false
2220
+ } );
2221
 
2222
+ dialog.show();
 
 
 
 
2223
  },
2224
 
2225
+ setFlagEditorChange: function( status ) {
2226
+ elementor.channels.editor
2227
+ .reply( 'status', status )
2228
+ .trigger( 'status:change', status );
2229
  },
2230
 
2231
+ isEditorChanged: function() {
2232
+ return ( true === elementor.channels.editor.request( 'status' ) );
2233
  },
2234
 
2235
+ setWorkSaver: function() {
2236
+ this.$window.on( 'beforeunload', function() {
2237
+ if ( elementor.isEditorChanged() ) {
2238
+ return elementor.translate( 'before_unload_alert' );
2239
+ }
2240
+ } );
2241
  },
2242
 
2243
+ setResizablePanel: function() {
2244
+ var self = this,
2245
+ side = elementor.config.is_rtl ? 'right' : 'left';
2246
 
2247
+ self.panel.$el.resizable( {
2248
+ handles: elementor.config.is_rtl ? 'w' : 'e',
2249
+ minWidth: 200,
2250
+ maxWidth: 680,
2251
+ start: function() {
2252
+ self.$previewWrapper
2253
+ .addClass( 'ui-resizable-resizing' )
2254
+ .css( 'pointer-events', 'none' );
2255
+ },
2256
+ stop: function() {
2257
+ self.$previewWrapper
2258
+ .removeClass( 'ui-resizable-resizing' )
2259
+ .css( 'pointer-events', '' );
2260
 
2261
+ elementor.channels.data.trigger( 'scrollbar:update' );
2262
+ },
2263
+ resize: function( event, ui ) {
2264
+ self.$previewWrapper
2265
+ .css( side, ui.size.width );
2266
+ }
2267
+ } );
2268
  },
2269
 
2270
+ enterPreviewMode: function( hidePanel ) {
2271
+ var $elements = this.$previewContents.find( 'body' );
2272
 
2273
+ if ( hidePanel ) {
2274
+ $elements = $elements.add( 'body' );
2275
  }
2276
 
2277
+ $elements
2278
+ .removeClass( 'elementor-editor-active' )
2279
+ .addClass( 'elementor-editor-preview' );
 
2280
 
2281
+ if ( hidePanel ) {
2282
+ // Handle panel resize
2283
+ this.$previewWrapper.css( elementor.config.is_rtl ? 'right' : 'left', '' );
2284
 
2285
+ this.panel.$el.css( 'width', '' );
 
2286
  }
2287
  },
2288
 
2289
+ exitPreviewMode: function() {
2290
+ this.$previewContents
2291
+ .find( 'body' )
2292
+ .add( 'body' )
2293
+ .removeClass( 'elementor-editor-preview' )
2294
+ .addClass( 'elementor-editor-active' );
2295
  },
2296
 
2297
+ changeEditMode: function( newMode ) {
2298
+ var dataEditMode = elementor.channels.dataEditMode,
2299
+ oldEditMode = dataEditMode.request( 'activeMode' );
2300
 
2301
+ dataEditMode.reply( 'activeMode', newMode );
2302
+
2303
+ if ( newMode !== oldEditMode ) {
2304
+ dataEditMode.trigger( 'switch', newMode );
2305
  }
2306
+ },
2307
 
2308
+ saveEditor: function( options ) {
2309
+ options = _.extend( {
2310
+ status: 'draft',
2311
+ onSuccess: null
2312
+ }, options );
 
2313
 
2314
+ var self = this,
2315
+ newData = elementor.elements.toJSON( { removeDefault: true } );
2316
 
2317
+ return this.ajax.send( 'save_builder', {
2318
+ data: {
2319
+ post_id: this.config.post_id,
2320
+ status: options.status,
2321
+ data: JSON.stringify( newData )
2322
+ },
2323
+ success: function( data ) {
2324
+ self.setFlagEditorChange( false );
2325
 
2326
+ self.config.data = newData;
 
 
2327
 
2328
+ self.channels.editor.trigger( 'saved', data );
2329
 
2330
+ if ( _.isFunction( options.onSuccess ) ) {
2331
+ options.onSuccess.call( this, data );
2332
+ }
2333
+ }
2334
+ } );
2335
+ },
2336
 
2337
+ reloadPreview: function() {
2338
+ Backbone.$( '#elementor-preview-loading' ).show();
 
 
2339
 
2340
+ this.$preview[0].contentWindow.location.reload( true );
2341
+ },
2342
 
2343
+ clearPage: function() {
2344
+ this.getClearPageDialog().show();
2345
+ },
 
 
 
 
 
2346
 
2347
+ changeDeviceMode: function( newDeviceMode ) {
2348
+ var oldDeviceMode = this.channels.deviceMode.request( 'currentMode' );
2349
 
2350
+ if ( oldDeviceMode === newDeviceMode ) {
2351
+ return;
2352
+ }
 
2353
 
2354
+ Backbone.$( 'body' )
2355
+ .removeClass( 'elementor-device-' + oldDeviceMode )
2356
+ .addClass( 'elementor-device-' + newDeviceMode );
2357
 
2358
+ this.channels.deviceMode
2359
+ .reply( 'previousMode', oldDeviceMode )
2360
+ .reply( 'currentMode', newDeviceMode )
2361
+ .trigger( 'change' );
2362
  },
2363
 
2364
+ enqueueTypographyFonts: function() {
2365
+ var self = this,
2366
+ typographyScheme = this.schemes.getScheme( 'typography' );
2367
 
2368
+ _.each( typographyScheme.items, function( item ) {
2369
+ self.helpers.enqueueFont( item.value.font_family );
2370
+ } );
2371
+ },
2372
 
2373
+ translate: function( stringKey, templateArgs, i18nStack ) {
2374
+ if ( ! i18nStack ) {
2375
+ i18nStack = this.config.i18n;
2376
+ }
2377
 
2378
+ var string = i18nStack[ stringKey ];
 
2379
 
2380
+ if ( undefined === string ) {
2381
+ string = stringKey;
2382
+ }
2383
 
2384
+ if ( templateArgs ) {
2385
+ string = string.replace( /{(\d+)}/g, function( match, number ) {
2386
+ return undefined !== templateArgs[ number ] ? templateArgs[ number ] : match;
2387
+ } );
2388
+ }
2389
 
2390
+ return string;
2391
  },
2392
 
2393
+ compareVersions: function( versionA, versionB, operator ) {
2394
+ var prepareVersion = function( version ) {
2395
+ version = version + '';
2396
+
2397
+ return version.replace( /[^\d.]+/, '.-1.' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2398
  };
2399
 
2400
+ versionA = prepareVersion( versionA );
2401
+ versionB = prepareVersion( versionB );
2402
 
2403
+ if ( versionA === versionB ) {
2404
+ return ! operator || /^={2,3}$/.test( operator );
2405
+ }
2406
 
2407
+ var versionAParts = versionA.split( '.' ).map( Number ),
2408
+ versionBParts = versionB.split( '.' ).map( Number ),
2409
+ longestVersionParts = Math.max( versionAParts.length, versionBParts.length );
 
 
 
2410
 
2411
+ for ( var i = 0; i < longestVersionParts; i++ ) {
2412
+ var valueA = versionAParts[ i ] || 0,
2413
+ valueB = versionBParts[ i ] || 0;
 
 
 
 
 
 
 
 
 
2414
 
2415
+ if ( valueA !== valueB ) {
2416
+ return this.conditions.compare( valueA, valueB, operator );
2417
+ }
2418
+ }
2419
  },
2420
 
2421
+ logSite: function() {
2422
+ var text = '',
2423
+ style = '';
2424
 
2425
+ if ( -1 !== navigator.userAgent.search( 'Firefox' ) ) {
2426
+ var asciiText = [
2427
+ ' ;;;;;;;;;;;;;;; ',
2428
+ ';;; ;; ;;;',
2429
+ ';;; ;;;;;;;;;;;;',
2430
+ ';;; ;;;;;;;;;;;;',
2431
+ ';;; ;; ;;;',
2432
+ ';;; ;;;;;;;;;;;;',
2433
+ ';;; ;;;;;;;;;;;;',
2434
+ ';;; ;; ;;;',
2435
+ ' ;;;;;;;;;;;;;;; '
2436
+ ];
2437
 
2438
+ text += '%c' + asciiText.join( '\n' ) + '\n';
 
 
2439
 
2440
+ style = 'color: #C42961';
2441
+ } else {
2442
+ text += '%c00';
2443
 
2444
+ style = 'line-height: 1.6; font-size: 20px; background-image: url("' + elementor.config.assets_url + 'images/logo-icon.png"); color: transparent; background-repeat: no-repeat; background-size: cover';
2445
+ }
 
 
2446
 
2447
+ text += '%c\nLove using Elementor? Join our growing community of Elementor developers: %chttps://github.com/pojome/elementor';
 
 
 
 
 
 
2448
 
2449
+ setTimeout( console.log.bind( console, text, style, 'color: #9B0A46', '' ) );
2450
+ }
2451
+ } );
2452
 
2453
+ module.exports = ( window.elementor = new App() ).start();
 
 
 
 
2454
 
2455
+ },{"elementor-editor-utils/ajax":68,"elementor-editor-utils/conditions":69,"elementor-editor-utils/debug":71,"elementor-editor-utils/heartbeat":72,"elementor-editor-utils/helpers":73,"elementor-editor-utils/images-manager":74,"elementor-editor-utils/introduction":75,"elementor-editor-utils/presets-factory":78,"elementor-editor-utils/schemes":79,"elementor-editor/settings/settings":67,"elementor-layouts/panel/panel":57,"elementor-models/element":60,"elementor-panel/pages/elements/views/elements":44,"elementor-panel/pages/menu/menu":47,"elementor-revisions/manager":8,"elementor-templates/manager":14,"elementor-utils/hooks":120,"elementor-utils/hot-keys":121,"elementor-views/controls/base":92,"elementor-views/controls/base-multiple":90,"elementor-views/controls/box-shadow":93,"elementor-views/controls/choose":94,"elementor-views/controls/code":95,"elementor-views/controls/color":96,"elementor-views/controls/date-time":97,"elementor-views/controls/dimensions":98,"elementor-views/controls/font":99,"elementor-views/controls/gallery":100,"elementor-views/controls/icon":101,"elementor-views/controls/image-dimensions":102,"elementor-views/controls/media":103,"elementor-views/controls/number":104,"elementor-views/controls/order":105,"elementor-views/controls/repeater":107,"elementor-views/controls/section":108,"elementor-views/controls/select2":109,"elementor-views/controls/slider":110,"elementor-views/controls/structure":111,"elementor-views/controls/switcher":112,"elementor-views/controls/tab":113,"elementor-views/controls/wp_widget":114,"elementor-views/controls/wysiwyg":115,"elementor-views/preview":117,"elementor-views/widget":119}],33:[function(require,module,exports){
2456
+ var EditModeItemView;
2457
 
2458
+ EditModeItemView = Marionette.ItemView.extend( {
2459
+ template: '#tmpl-elementor-mode-switcher-content',
 
2460
 
2461
+ id: 'elementor-mode-switcher-inner',
 
2462
 
2463
+ ui: {
2464
+ previewButton: '#elementor-mode-switcher-preview-input',
2465
+ previewLabel: '#elementor-mode-switcher-preview',
2466
+ previewLabelA11y: '#elementor-mode-switcher-preview .elementor-screen-only'
2467
  },
2468
 
2469
+ events: {
2470
+ 'change @ui.previewButton': 'onPreviewButtonChange'
 
 
2471
  },
2472
 
2473
+ initialize: function() {
2474
+ this.listenTo( elementor.channels.dataEditMode, 'switch', this.onEditModeChanged );
 
2475
  },
2476
 
2477
+ getCurrentMode: function() {
2478
+ return this.ui.previewButton.is( ':checked' ) ? 'preview' : 'edit';
2479
  },
2480
 
2481
+ setMode: function( mode ) {
2482
+ this.ui.previewButton
2483
+ .prop( 'checked', 'preview' === mode )
2484
+ .trigger( 'change' );
2485
  },
2486
 
2487
+ toggleMode: function() {
2488
+ this.setMode( this.ui.previewButton.prop( 'checked' ) ? 'edit' : 'preview' );
2489
  },
2490
 
2491
+ onRender: function() {
2492
+ this.onEditModeChanged();
 
 
2493
  },
2494
 
2495
+ onPreviewButtonChange: function() {
2496
+ elementor.changeEditMode( this.getCurrentMode() );
2497
  },
2498
 
2499
+ onEditModeChanged: function() {
2500
+ var activeMode = elementor.channels.dataEditMode.request( 'activeMode' ),
2501
+ title = elementor.translate( 'preview' === activeMode ? 'back_to_editor' : 'preview' );
 
 
 
 
 
 
2502
 
2503
+ this.ui.previewLabel.attr( 'title', title );
2504
+ this.ui.previewLabelA11y.text( title );
 
 
 
 
 
 
2505
  }
2506
  } );
2507
 
2508
+ module.exports = EditModeItemView;
2509
 
2510
+ },{}],34:[function(require,module,exports){
2511
+ var PanelFooterItemView;
 
2512
 
2513
+ PanelFooterItemView = Marionette.ItemView.extend( {
2514
+ template: '#tmpl-elementor-panel-footer-content',
2515
 
2516
+ tagName: 'nav',
2517
 
2518
+ id: 'elementor-panel-footer-tools',
2519
 
2520
+ possibleRotateModes: [ 'portrait', 'landscape' ],
2521
 
2522
+ ui: {
2523
+ menuButtons: '.elementor-panel-footer-tool',
2524
+ deviceModeIcon: '#elementor-panel-footer-responsive > i',
2525
+ deviceModeButtons: '#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item',
2526
+ buttonSave: '#elementor-panel-footer-save',
2527
+ buttonSaveButton: '#elementor-panel-footer-save .elementor-button',
2528
+ buttonPublish: '#elementor-panel-footer-publish',
2529
+ watchTutorial: '#elementor-panel-footer-watch-tutorial',
2530
+ showTemplates: '#elementor-panel-footer-templates-modal',
2531
+ saveTemplate: '#elementor-panel-footer-save-template'
2532
  },
2533
 
2534
+ events: {
2535
+ 'click @ui.deviceModeButtons': 'onClickResponsiveButtons',
2536
+ 'click @ui.buttonSave': 'onClickButtonSave',
2537
+ 'click @ui.buttonPublish': 'onClickButtonPublish',
2538
+ 'click @ui.watchTutorial': 'onClickWatchTutorial',
2539
+ 'click @ui.showTemplates': 'onClickShowTemplates',
2540
+ 'click @ui.saveTemplate': 'onClickSaveTemplate'
2541
+ },
 
 
 
 
 
2542
 
2543
+ initialize: function() {
2544
+ this._initDialog();
2545
 
2546
+ this.listenTo( elementor.channels.editor, 'status:change', this.onEditorChanged )
2547
+ .listenTo( elementor.channels.deviceMode, 'change', this.onDeviceModeChange );
2548
+ },
2549
 
2550
+ _initDialog: function() {
2551
+ var dialog;
2552
 
2553
+ this.getDialog = function() {
2554
+ if ( ! dialog ) {
2555
+ var $ = Backbone.$,
2556
+ $dialogMessage = $( '<div>', {
2557
+ 'class': 'elementor-dialog-message'
2558
+ } ),
2559
+ $messageIcon = $( '<i>', {
2560
+ 'class': 'fa fa-check-circle'
2561
+ } ),
2562
+ $messageText = $( '<div>', {
2563
+ 'class': 'elementor-dialog-message-text'
2564
+ } ).text( elementor.translate( 'saved' ) );
2565
 
2566
+ $dialogMessage.append( $messageIcon, $messageText );
2567
 
2568
+ dialog = elementor.dialogsManager.createWidget( 'simple', {
2569
+ id: 'elementor-saved-popup',
2570
+ position: {
2571
+ element: 'message',
2572
+ of: 'widget'
2573
+ },
2574
+ hide: {
2575
+ auto: true,
2576
+ autoDelay: 1500
2577
+ }
2578
+ } );
2579
 
2580
+ dialog.setMessage( $dialogMessage );
2581
+ }
2582
 
2583
+ return dialog;
2584
+ };
2585
+ },
2586
 
2587
+ _publishBuilder: function() {
2588
  var self = this;
2589
 
2590
+ var options = {
2591
+ status: 'publish',
2592
+ onSuccess: function() {
2593
+ self.getDialog().show();
 
 
 
2594
 
2595
+ self.ui.buttonSaveButton.removeClass( 'elementor-button-state' );
 
 
2596
 
2597
+ NProgress.done();
2598
+ }
2599
+ };
 
2600
 
2601
+ self.ui.buttonSaveButton.addClass( 'elementor-button-state' );
2602
 
2603
+ NProgress.start();
 
2604
 
2605
+ elementor.saveEditor( options );
2606
+ },
2607
 
2608
+ _saveBuilderDraft: function() {
2609
+ elementor.saveEditor();
2610
+ },
2611
 
2612
+ getDeviceModeButton: function( deviceMode ) {
2613
+ return this.ui.deviceModeButtons.filter( '[data-device-mode="' + deviceMode + '"]' );
2614
  },
2615
 
2616
+ onPanelClick: function( event ) {
2617
+ var $target = Backbone.$( event.target ),
2618
+ isClickInsideOfTool = $target.closest( '.elementor-panel-footer-sub-menu-wrapper' ).length;
2619
 
2620
+ if ( isClickInsideOfTool ) {
2621
+ return;
2622
  }
2623
 
2624
+ var $tool = $target.closest( '.elementor-panel-footer-tool' ),
2625
+ isClosedTool = $tool.length && ! $tool.hasClass( 'elementor-open' );
2626
+
2627
+ this.ui.menuButtons.removeClass( 'elementor-open' );
2628
+
2629
+ if ( isClosedTool ) {
2630
+ $tool.addClass( 'elementor-open' );
2631
  }
2632
+ },
2633
 
2634
+ onEditorChanged: function() {
2635
+ this.ui.buttonSave.toggleClass( 'elementor-save-active', elementor.isEditorChanged() );
 
2636
  },
2637
 
2638
+ onDeviceModeChange: function() {
2639
+ var previousDeviceMode = elementor.channels.deviceMode.request( 'previousMode' ),
2640
+ currentDeviceMode = elementor.channels.deviceMode.request( 'currentMode' );
2641
 
2642
+ this.getDeviceModeButton( previousDeviceMode ).removeClass( 'active' );
 
 
2643
 
2644
+ this.getDeviceModeButton( currentDeviceMode ).addClass( 'active' );
2645
 
2646
+ // Change the footer icon
2647
+ this.ui.deviceModeIcon.removeClass( 'eicon-device-' + previousDeviceMode ).addClass( 'eicon-device-' + currentDeviceMode );
2648
  },
2649
 
2650
+ onClickButtonSave: function() {
2651
+ //this._saveBuilderDraft();
2652
+ this._publishBuilder();
2653
+ },
2654
 
2655
+ onClickButtonPublish: function( event ) {
2656
+ // Prevent click on save button
2657
+ event.stopPropagation();
2658
 
2659
+ this._publishBuilder();
2660
+ },
 
2661
 
2662
+ onClickResponsiveButtons: function( event ) {
2663
+ var $clickedButton = this.$( event.currentTarget ),
2664
+ newDeviceMode = $clickedButton.data( 'device-mode' );
2665
 
2666
+ elementor.changeDeviceMode( newDeviceMode );
 
2667
  },
2668
 
2669
+ onClickWatchTutorial: function() {
2670
+ elementor.introduction.startIntroduction();
2671
+ },
2672
+
2673
+ onClickShowTemplates: function() {
2674
+ elementor.templates.showTemplatesModal();
2675
+ },
2676
+
2677
+ onClickSaveTemplate: function() {
2678
+ elementor.templates.startModal( {
2679
+ onReady: function() {
2680
+ elementor.templates.getLayout().showSaveTemplateView();
2681
+ }
2682
+ } );
2683
+ },
2684
+
2685
+ onRender: function() {
2686
+ var self = this;
2687
+
2688
+ _.defer( function() {
2689
+ elementor.getPanelView().$el.on( 'click', _.bind( self.onPanelClick, self ) );
2690
+ } );
2691
  }
2692
  } );
2693
 
2694
+ module.exports = PanelFooterItemView;
 
2695
 
2696
+ },{}],35:[function(require,module,exports){
2697
+ var PanelHeaderItemView;
2698
 
2699
+ PanelHeaderItemView = Marionette.ItemView.extend( {
2700
+ template: '#tmpl-elementor-panel-header',
2701
+
2702
+ id: 'elementor-panel-header',
2703
 
2704
  ui: {
2705
+ menuButton: '#elementor-panel-header-menu-button',
2706
+ title: '#elementor-panel-header-title',
2707
+ addButton: '#elementor-panel-header-add-button'
2708
  },
2709
 
2710
  events: {
2711
+ 'click @ui.addButton': 'onClickAdd',
2712
+ 'click @ui.menuButton': 'onClickMenu'
2713
  },
2714
 
2715
+ setTitle: function( title ) {
2716
+ this.ui.title.html( title );
2717
+ },
 
 
 
2718
 
2719
+ onClickAdd: function() {
2720
+ elementor.getPanelView().setPage( 'elements' );
2721
  },
2722
 
2723
+ onClickMenu: function() {
2724
+ var panel = elementor.getPanelView(),
2725
+ currentPanelPageName = panel.getCurrentPageName(),
2726
+ nextPage = 'menu' === currentPanelPageName ? 'elements' : 'menu';
2727
+
2728
+ panel.setPage( nextPage );
2729
  }
2730
  } );
2731
 
2732
+ module.exports = PanelHeaderItemView;
2733
 
2734
+ },{}],36:[function(require,module,exports){
2735
+ var ControlsStack = require( 'elementor-views/controls-stack' ),
2736
+ EditorView;
2737
 
2738
+ EditorView = ControlsStack.extend( {
2739
+ template: Marionette.TemplateCache.get( '#tmpl-editor-content' ),
2740
 
2741
+ id: 'elementor-panel-page-editor',
2742
 
2743
+ childViewContainer: '#elementor-controls',
 
 
 
 
 
 
 
 
 
 
2744
 
2745
+ childViewOptions: function() {
2746
+ return {
2747
+ elementSettingsModel: this.model.get( 'settings' ),
2748
+ elementEditSettings: this.model.get( 'editSettings' )
2749
+ };
2750
+ },
2751
 
2752
+ openActiveSection: function() {
2753
+ ControlsStack.prototype.openActiveSection.apply( this, arguments );
 
2754
 
2755
+ elementor.channels.editor.trigger( 'section:activated', this.activeSection, this );
2756
+ },
 
 
 
2757
 
2758
+ isVisibleSectionControl: function( sectionControlModel ) {
2759
+ return ControlsStack.prototype.isVisibleSectionControl.apply( this, arguments ) && elementor.helpers.isActiveControl( sectionControlModel, this.model.get( 'settings' ).attributes );
2760
+ },
2761
 
2762
+ onBeforeRender: function() {
2763
+ var controls = elementor.getElementControls( this.model );
2764
 
2765
+ if ( ! controls ) {
2766
+ throw new Error( 'Editor controls not found' );
 
2767
  }
 
 
 
2768
 
2769
+ // Create new instance of that collection
2770
+ this.collection = new Backbone.Collection( _.values( controls ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2771
  },
2772
 
2773
+ onDestroy: function() {
2774
+ var editedElementView = this.getOption( 'editedElementView' );
2775
+
2776
+ if ( editedElementView ) {
2777
+ editedElementView.$el.removeClass( 'elementor-element-editable' );
2778
  }
2779
 
2780
+ this.model.trigger( 'editor:close' );
 
2781
 
2782
+ this.triggerMethod( 'editor:destroy' );
2783
+ },
 
2784
 
2785
+ onRender: function() {
2786
+ var editedElementView = this.getOption( 'editedElementView' );
2787
 
2788
+ if ( editedElementView ) {
2789
+ editedElementView.$el.addClass( 'elementor-element-editable' );
 
2790
  }
2791
+ },
2792
 
2793
+ onDeviceModeChange: function() {
2794
+ ControlsStack.prototype.onDeviceModeChange.apply( this, arguments );
 
2795
 
2796
+ var self = this;
2797
 
2798
+ // Timeout according to preview resize css animation duration
2799
+ setTimeout( function() {
2800
+ elementor.$previewContents.find( 'html, body' ).animate( {
2801
+ scrollTop: self.getOption( 'editedElementView' ).$el.offset().top - elementor.$preview[0].contentWindow.innerHeight / 2
2802
+ } );
2803
+ }, 500 );
2804
+ },
2805
 
2806
+ onChildviewSettingsChange: function( childView ) {
2807
+ var editedElementView = this.getOption( 'editedElementView' ),
2808
+ editedElementType = editedElementView.model.get( 'elType' );
2809
 
2810
+ if ( 'widget' === editedElementType ) {
2811
+ editedElementType = editedElementView.model.get( 'widgetType' );
2812
+ }
2813
 
2814
+ elementor.channels.editor
2815
+ .trigger( 'change', childView, editedElementView )
2816
+ .trigger( 'change:' + editedElementType, childView, editedElementView )
2817
+ .trigger( 'change:' + editedElementType + ':' + childView.model.get( 'name' ), childView, editedElementView );
2818
  }
2819
  } );
2820
 
2821
+ module.exports = EditorView;
2822
 
2823
+ },{"elementor-views/controls-stack":89}],37:[function(require,module,exports){
2824
+ var PanelElementsCategory = require( '../models/element' ),
2825
+ PanelElementsCategoriesCollection;
 
 
 
2826
 
2827
+ PanelElementsCategoriesCollection = Backbone.Collection.extend( {
2828
+ model: PanelElementsCategory
2829
+ } );
 
2830
 
2831
+ module.exports = PanelElementsCategoriesCollection;
 
 
2832
 
2833
+ },{"../models/element":40}],38:[function(require,module,exports){
2834
+ var PanelElementsElementModel = require( '../models/element' ),
2835
+ PanelElementsElementsCollection;
2836
 
2837
+ PanelElementsElementsCollection = Backbone.Collection.extend( {
2838
+ model: PanelElementsElementModel/*,
2839
+ comparator: 'title'*/
2840
+ } );
2841
 
2842
+ module.exports = PanelElementsElementsCollection;
 
 
2843
 
2844
+ },{"../models/element":40}],39:[function(require,module,exports){
2845
+ var PanelElementsCategoriesCollection = require( './collections/categories' ),
2846
+ PanelElementsElementsCollection = require( './collections/elements' ),
2847
+ PanelElementsCategoriesView = require( './views/categories' ),
2848
+ PanelElementsElementsView = elementor.modules.templateLibrary.ElementsCollectionView,
2849
+ PanelElementsSearchView = require( './views/search' ),
2850
+ PanelElementsGlobalView = require( './views/global' ),
2851
+ PanelElementsLayoutView;
2852
 
2853
+ PanelElementsLayoutView = Marionette.LayoutView.extend( {
2854
+ template: '#tmpl-elementor-panel-elements',
 
 
 
 
 
2855
 
2856
+ regions: {
2857
+ elements: '#elementor-panel-elements-wrapper',
2858
+ search: '#elementor-panel-elements-search-area'
 
 
 
2859
  },
2860
 
2861
+ ui: {
2862
+ tabs: '.elementor-panel-navigation-tab'
 
 
2863
  },
2864
 
2865
+ events: {
2866
+ 'click @ui.tabs': 'onTabClick'
 
 
2867
  },
2868
 
2869
+ regionViews: {},
 
 
 
 
 
 
 
 
 
2870
 
2871
+ elementsCollection: null,
 
2872
 
2873
+ categoriesCollection: null,
2874
 
2875
+ initialize: function() {
2876
+ this.listenTo( elementor.channels.panelElements, 'element:selected', this.destroy );
2877
 
2878
+ this.initElementsCollection();
 
2879
 
2880
+ this.initCategoriesCollection();
 
2881
 
2882
+ this.initRegionViews();
2883
  },
2884
 
2885
+ initRegionViews: function() {
2886
+ var regionViews = {
2887
+ elements: {
2888
+ region: this.elements,
2889
+ view: PanelElementsElementsView,
2890
+ options: { collection: this.elementsCollection }
2891
+ },
2892
+ categories: {
2893
+ region: this.elements,
2894
+ view: PanelElementsCategoriesView,
2895
+ options: { collection: this.categoriesCollection }
2896
+ },
2897
+ search: {
2898
+ region: this.search,
2899
+ view: PanelElementsSearchView
2900
+ },
2901
+ global: {
2902
+ region: this.elements,
2903
+ view: PanelElementsGlobalView
2904
+ }
2905
+ };
2906
 
2907
+ this.regionViews = elementor.hooks.applyFilters( 'panel/elements/regionViews', regionViews );
 
2908
  },
2909
 
2910
+ initElementsCollection: function() {
2911
+ var elementsCollection = new PanelElementsElementsCollection(),
2912
+ sectionConfig = elementor.config.elements.section;
2913
 
2914
+ elementsCollection.add( {
2915
+ title: elementor.translate( 'inner_section' ),
2916
+ elType: 'section',
2917
+ categories: [ 'basic' ],
2918
+ icon: sectionConfig.icon
2919
+ } );
2920
 
2921
+ // TODO: Change the array from server syntax, and no need each loop for initialize
2922
+ _.each( elementor.config.widgets, function( element ) {
2923
+ elementsCollection.add( {
2924
+ title: element.title,
2925
+ elType: element.elType,
2926
+ categories: element.categories,
2927
+ keywords: element.keywords,
2928
+ icon: element.icon,
2929
+ widgetType: element.widget_type,
2930
+ custom: element.custom
2931
+ } );
2932
+ } );
2933
 
2934
+ this.elementsCollection = elementsCollection;
 
2935
  },
2936
 
2937
+ initCategoriesCollection: function() {
2938
+ var categories = {};
 
 
2939
 
2940
+ this.elementsCollection.each( function( element ) {
2941
+ _.each( element.get( 'categories' ), function( category ) {
2942
+ if ( ! categories[ category ] ) {
2943
+ categories[ category ] = [];
2944
+ }
2945
 
2946
+ categories[ category ].push( element );
2947
+ } );
2948
+ } );
2949
 
2950
+ var categoriesCollection = new PanelElementsCategoriesCollection();
 
 
2951
 
2952
+ _.each( elementor.config.elements_categories, function( categoryConfig, categoryName ) {
2953
+ if ( ! categories[ categoryName ] ) {
2954
+ return;
2955
+ }
2956
 
2957
+ categoriesCollection.add( {
2958
+ name: categoryName,
2959
+ title: categoryConfig.title,
2960
+ icon: categoryConfig.icon,
2961
+ items: categories[ categoryName ]
2962
+ } );
2963
+ } );
2964
 
2965
+ this.categoriesCollection = categoriesCollection;
 
 
2966
  },
2967
 
2968
+ activateTab: function( tabName ) {
2969
+ this.ui.tabs
2970
+ .removeClass( 'active' )
2971
+ .filter( '[data-view="' + tabName + '"]' )
2972
+ .addClass( 'active' );
2973
+
2974
+ this.showView( tabName );
2975
  },
2976
 
2977
+ showView: function( viewName ) {
2978
+ var viewDetails = this.regionViews[ viewName ],
2979
+ options = viewDetails.options || {};
2980
 
2981
+ viewDetails.region.show( new viewDetails.view( options ) );
 
2982
  },
2983
 
2984
+ clearSearchInput: function() {
2985
+ this.getChildView( 'search' ).clearInput();
2986
+ },
 
 
 
2987
 
2988
+ changeFilter: function( filterValue ) {
2989
+ elementor.channels.panelElements
2990
+ .reply( 'filter:value', filterValue )
2991
+ .trigger( 'filter:change' );
2992
+ },
2993
 
2994
+ clearFilters: function() {
2995
+ this.changeFilter( null );
2996
+ this.clearSearchInput();
2997
+ },
2998
 
2999
+ onChildviewChildrenRender: function() {
3000
+ this.updateElementsScrollbar();
3001
+ },
3002
 
3003
+ onChildviewSearchChangeInput: function( child ) {
3004
+ this.changeFilter( child.ui.input.val(), 'search' );
3005
  },
3006
 
3007
+ onDestroy: function() {
3008
+ elementor.channels.panelElements.reply( 'filter:value', null );
3009
+ },
3010
 
3011
+ onShow: function() {
3012
+ this.showView( 'categories' );
3013
 
3014
+ this.showView( 'search' );
3015
  },
3016
 
3017
+ onTabClick: function( event ) {
3018
+ this.activateTab( event.currentTarget.dataset.view );
3019
  },
3020
 
3021
+ updateElementsScrollbar: function() {
3022
+ elementor.channels.data.trigger( 'scrollbar:update' );
 
 
 
 
3023
  }
3024
  } );
3025
 
3026
+ module.exports = PanelElementsLayoutView;
3027
 
3028
+ },{"./collections/categories":37,"./collections/elements":38,"./views/categories":41,"./views/global":45,"./views/search":46}],40:[function(require,module,exports){
3029
+ var PanelElementsElementModel;
3030
 
3031
+ PanelElementsElementModel = Backbone.Model.extend( {
3032
+ defaults: {
3033
+ title: '',
3034
+ categories: [],
3035
+ keywords: [],
3036
+ icon: '',
3037
+ elType: 'widget',
3038
+ widgetType: ''
3039
+ }
3040
+ } );
3041
 
3042
+ module.exports = PanelElementsElementModel;
3043
 
3044
+ },{}],41:[function(require,module,exports){
3045
+ var PanelElementsCategoryView = require( './category' ),
3046
+ PanelElementsCategoriesView;
3047
 
3048
+ PanelElementsCategoriesView = Marionette.CompositeView.extend( {
3049
+ template: '#tmpl-elementor-panel-categories',
3050
 
3051
+ childView: PanelElementsCategoryView,
 
 
 
 
 
3052
 
3053
+ childViewContainer: '#elementor-panel-categories',
3054
 
3055
+ id: 'elementor-panel-elements-categories',
 
3056
 
3057
+ initialize: function() {
3058
+ this.listenTo( elementor.channels.panelElements, 'filter:change', this.onPanelElementsFilterChange );
 
3059
  },
3060
 
3061
+ onPanelElementsFilterChange: function() {
3062
+ elementor.getPanelView().getCurrentPageView().showView( 'elements' );
3063
  }
3064
  } );
3065
 
3066
+ module.exports = PanelElementsCategoriesView;
3067
 
3068
+ },{"./category":42}],42:[function(require,module,exports){
3069
+ var PanelElementsElementsCollection = require( '../collections/elements' ),
3070
+ PanelElementsCategoryView;
3071
 
3072
+ PanelElementsCategoryView = Marionette.CompositeView.extend( {
3073
+ template: '#tmpl-elementor-panel-elements-category',
 
 
3074
 
3075
+ className: 'elementor-panel-category',
 
 
3076
 
3077
+ childView: require( 'elementor-panel/pages/elements/views/element' ),
 
 
3078
 
3079
+ childViewContainer: '.panel-elements-category-items',
 
 
 
 
3080
 
3081
+ initialize: function() {
3082
+ this.collection = new PanelElementsElementsCollection( this.model.get( 'items' ) );
 
 
 
 
3083
  }
3084
  } );
3085
 
3086
+ module.exports = PanelElementsCategoryView;
 
 
 
 
 
 
 
 
 
 
 
 
3087
 
3088
+ },{"../collections/elements":38,"elementor-panel/pages/elements/views/element":43}],43:[function(require,module,exports){
3089
+ var PanelElementsElementView;
3090
 
3091
+ PanelElementsElementView = Marionette.ItemView.extend( {
3092
+ template: '#tmpl-elementor-element-library-element',
 
 
 
 
 
3093
 
3094
+ className: 'elementor-element-wrapper',
 
 
 
 
3095
 
3096
  onRender: function() {
3097
  var self = this;
3098
 
3099
+ this.$el.html5Draggable( {
 
 
 
 
 
 
 
 
 
 
 
3100
 
3101
+ onDragStart: function() {
3102
+ elementor.channels.panelElements
3103
+ .reply( 'element:selected', self )
3104
+ .trigger( 'element:drag:start' );
3105
+ },
3106
 
3107
+ onDragEnd: function() {
3108
+ elementor.channels.panelElements.trigger( 'element:drag:end' );
3109
+ },
 
 
3110
 
3111
+ groups: [ 'elementor-element' ]
3112
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3113
  }
3114
  } );
3115
 
3116
+ module.exports = PanelElementsElementView;
3117
 
3118
+ },{}],44:[function(require,module,exports){
3119
+ var PanelElementsElementsView;
 
3120
 
3121
+ PanelElementsElementsView = Marionette.CollectionView.extend( {
3122
+ childView: require( 'elementor-panel/pages/elements/views/element' ),
3123
 
3124
+ id: 'elementor-panel-elements',
3125
 
3126
+ initialize: function() {
3127
+ this.listenTo( elementor.channels.panelElements, 'filter:change', this.onFilterChanged );
 
 
 
3128
  },
3129
 
3130
+ filter: function( childModel ) {
3131
+ var filterValue = elementor.channels.panelElements.request( 'filter:value' );
3132
 
3133
+ if ( ! filterValue ) {
3134
+ return true;
3135
+ }
3136
+
3137
+ if ( -1 !== childModel.get( 'title' ).toLowerCase().indexOf( filterValue.toLowerCase() ) ) {
3138
+ return true;
3139
  }
3140
+
3141
+ return _.any( childModel.get( 'keywords' ), function( keyword ) {
3142
+ return ( -1 !== keyword.toLowerCase().indexOf( filterValue.toLowerCase() ) );
3143
+ } );
3144
  },
3145
 
3146
+ onFilterChanged: function() {
3147
+ var filterValue = elementor.channels.panelElements.request( 'filter:value' );
3148
 
3149
+ if ( ! filterValue ) {
3150
+ this.onFilterEmpty();
3151
+ }
3152
 
3153
+ this._renderChildren();
3154
 
3155
+ this.triggerMethod( 'children:render' );
 
3156
  },
3157
 
3158
+ onFilterEmpty: function() {
3159
+ elementor.getPanelView().getCurrentPageView().showView( 'categories' );
3160
+ }
3161
+ } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3162
 
3163
+ module.exports = PanelElementsElementsView;
 
3164
 
3165
+ },{"elementor-panel/pages/elements/views/element":43}],45:[function(require,module,exports){
3166
+ module.exports = Marionette.ItemView.extend( {
3167
+ template: '#tmpl-elementor-panel-global',
3168
 
3169
+ id: 'elementor-panel-global',
 
 
 
3170
 
3171
+ initialize: function() {
3172
+ elementor.getPanelView().getCurrentPageView().search.reset();
3173
  },
3174
 
3175
+ onDestroy: function() {
3176
+ elementor.getPanelView().getCurrentPageView().showView( 'search' );
3177
+ }
3178
+ } );
3179
 
3180
+ },{}],46:[function(require,module,exports){
3181
+ var PanelElementsSearchView;
 
 
3182
 
3183
+ PanelElementsSearchView = Marionette.ItemView.extend( {
3184
+ template: '#tmpl-elementor-panel-element-search',
3185
 
3186
+ id: 'elementor-panel-elements-search-wrapper',
 
 
 
3187
 
3188
+ ui: {
3189
+ input: 'input'
3190
  },
3191
 
3192
+ events: {
3193
+ 'keyup @ui.input': 'onInputChanged'
3194
  },
3195
 
3196
+ onInputChanged: function( event ) {
3197
+ var ESC_KEY = 27;
 
3198
 
3199
+ if ( ESC_KEY === event.keyCode ) {
3200
+ this.clearInput();
3201
+ }
3202
 
3203
+ this.triggerMethod( 'search:change:input' );
 
3204
  },
3205
 
3206
+ clearInput: function() {
3207
+ this.ui.input.val( '' );
3208
+ }
3209
+ } );
 
 
3210
 
3211
+ module.exports = PanelElementsSearchView;
 
 
3212
 
3213
+ },{}],47:[function(require,module,exports){
3214
+ var PanelMenuItemView = require( 'elementor-panel/pages/menu/views/item' ),
3215
+ PanelMenuPageView;
3216
 
3217
+ PanelMenuPageView = Marionette.CollectionView.extend( {
3218
+ id: 'elementor-panel-page-menu',
 
3219
 
3220
+ childView: PanelMenuItemView,
3221
 
3222
+ initialize: function() {
3223
+ this.collection = PanelMenuPageView.getItems();
3224
+ },
3225
 
3226
+ onChildviewClick: function( childView ) {
3227
+ var menuItemType = childView.model.get( 'type' );
3228
 
3229
+ switch ( menuItemType ) {
3230
+ case 'page':
3231
+ var pageName = childView.model.get( 'pageName' ),
3232
+ pageTitle = childView.model.get( 'title' );
3233
 
3234
+ elementor.getPanelView().setPage( pageName, pageTitle );
3235
+ break;
 
 
3236
 
3237
+ case 'link':
3238
+ var link = childView.model.get( 'link' ),
3239
+ isNewTab = childView.model.get( 'newTab' );
3240
 
3241
+ if ( isNewTab ) {
3242
+ open( link, '_blank' );
3243
+ } else {
3244
+ location.href = childView.model.get( 'link' );
3245
+ }
3246
 
3247
+ break;
3248
+
3249
+ default:
3250
+ var callback = childView.model.get( 'callback' );
3251
+
3252
+ if ( _.isFunction( callback ) ) {
3253
+ callback.call( childView );
3254
+ }
3255
+ }
3256
+ }
3257
+ }, {
3258
+ items: null,
3259
+
3260
+ initItems: function() {
3261
+ this.items = new Backbone.Collection( [
3262
+ {
3263
+ name: 'global-colors',
3264
+ icon: 'fa fa-paint-brush',
3265
+ title: elementor.translate( 'global_colors' ),
3266
+ type: 'page',
3267
+ pageName: 'colorScheme'
3268
+ },
3269
+ {
3270
+ name: 'global-fonts',
3271
+ icon: 'fa fa-font',
3272
+ title: elementor.translate( 'global_fonts' ),
3273
+ type: 'page',
3274
+ pageName: 'typographyScheme'
3275
+ },
3276
+ {
3277
+ name: 'color-picker',
3278
+ icon: 'fa fa-eyedropper',
3279
+ title: elementor.translate( 'color_picker' ),
3280
+ type: 'page',
3281
+ pageName: 'colorPickerScheme'
3282
+ },
3283
+ {
3284
+ name: 'revision-history',
3285
+ icon: 'fa fa-history',
3286
+ title: elementor.translate( 'revision_history' ),
3287
+ type: 'page',
3288
+ pageName: 'revisionsPage'
3289
+ },
3290
+ {
3291
+ name: 'clear-page',
3292
+ icon: 'fa fa-eraser',
3293
+ title: elementor.translate( 'clear_page' ),
3294
+ callback: function() {
3295
+ elementor.clearPage();
3296
+ }
3297
+ },
3298
+ {
3299
+ name: 'elementor-settings',
3300
+ icon: 'eicon-elementor',
3301
+ title: elementor.translate( 'elementor_settings' ),
3302
+ type: 'link',
3303
+ link: elementor.config.settings_page_link,
3304
+ newTab: true
3305
+ },
3306
+ {
3307
+ name: 'about-elementor',
3308
+ icon: 'fa fa-info-circle',
3309
+ title: elementor.translate( 'about_elementor' ),
3310
+ type: 'link',
3311
+ link: elementor.config.elementor_site,
3312
+ newTab: true
3313
  }
3314
+ ] );
3315
+ },
3316
+
3317
+ getItems: function() {
3318
+ if ( ! this.items ) {
3319
+ this.initItems();
3320
  }
3321
 
3322
+ return this.items;
3323
+ },
3324
 
3325
+ addItem: function( itemData, before ) {
3326
+ var items = this.getItems(),
3327
+ options = {};
 
3328
 
3329
+ if ( before ) {
3330
+ var beforeItem = items.findWhere( { name: before } );
3331
 
3332
+ if ( beforeItem ) {
3333
+ options.at = items.indexOf( beforeItem );
3334
+ }
3335
+ }
3336
 
3337
+ items.add( itemData, options );
3338
+ }
3339
+ } );
3340
 
3341
+ module.exports = PanelMenuPageView;
 
 
3342
 
3343
+ },{"elementor-panel/pages/menu/views/item":48}],48:[function(require,module,exports){
3344
+ var PanelMenuItemView;
3345
 
3346
+ PanelMenuItemView = Marionette.ItemView.extend( {
3347
+ template: '#tmpl-elementor-panel-menu-item',
3348
 
3349
+ className: 'elementor-panel-menu-item',
 
3350
 
3351
+ triggers: {
3352
+ click: 'click'
3353
+ }
3354
+ } );
3355
 
3356
+ module.exports = PanelMenuItemView;
 
 
 
3357
 
3358
+ },{}],49:[function(require,module,exports){
3359
+ var childViewTypes = {
3360
+ color: require( 'elementor-panel/pages/schemes/items/color' ),
3361
+ typography: require( 'elementor-panel/pages/schemes/items/typography' )
3362
+ },
3363
+ PanelSchemeBaseView;
3364
 
3365
+ PanelSchemeBaseView = Marionette.CompositeView.extend( {
3366
+ id: function() {
3367
+ return 'elementor-panel-scheme-' + this.getType();
3368
  },
3369
 
3370
+ className: function() {
3371
+ return 'elementor-panel-scheme elementor-panel-scheme-' + this.getUIType();
3372
  },
3373
 
3374
+ childViewContainer: '.elementor-panel-scheme-items',
3375
+
3376
+ getTemplate: function() {
3377
+ return Marionette.TemplateCache.get( '#tmpl-elementor-panel-schemes-' + this.getType() );
3378
  },
3379
 
3380
+ getChildView: function() {
3381
+ return childViewTypes[ this.getUIType() ];
3382
+ },
3383
 
3384
+ getUIType: function() {
3385
+ return this.getType();
3386
+ },
3387
 
3388
+ ui: function() {
3389
+ return {
3390
+ saveButton: '.elementor-panel-scheme-save .elementor-button',
3391
+ discardButton: '.elementor-panel-scheme-discard .elementor-button',
3392
+ resetButton: '.elementor-panel-scheme-reset .elementor-button'
3393
+ };
3394
+ },
3395
 
3396
+ events: function() {
3397
+ return {
3398
+ 'click @ui.saveButton': 'saveScheme',
3399
+ 'click @ui.discardButton': 'discardScheme',
3400
+ 'click @ui.resetButton': 'setDefaultScheme'
3401
+ };
3402
+ },
3403
 
3404
+ initialize: function() {
3405
+ this.model = new Backbone.Model();
3406
 
3407
+ this.resetScheme();
3408
+ },
3409
 
3410
+ getType: function() {},
 
3411
 
3412
+ getScheme: function() {
3413
+ return elementor.schemes.getScheme( this.getType() );
3414
+ },
3415
+
3416
+ changeChildrenUIValues: function( schemeItems ) {
3417
  var self = this;
3418
 
3419
+ _.each( schemeItems, function( value, key ) {
3420
+ var model = self.collection.findWhere( { key: key } ),
3421
+ childView = self.children.findByModelCid( model.cid );
 
3422
 
3423
+ childView.changeUIValue( value );
3424
+ } );
3425
+ },
3426
 
3427
+ discardScheme: function() {
3428
+ elementor.schemes.resetSchemes( this.getType() );
3429
 
3430
+ this.onSchemeChange();
 
 
3431
 
3432
+ this.ui.saveButton.prop( 'disabled', true );
 
3433
 
3434
+ this._renderChildren();
3435
+ },
 
3436
 
3437
+ setSchemeValue: function( key, value ) {
3438
+ elementor.schemes.setSchemeValue( this.getType(), key, value );
 
3439
 
3440
+ this.onSchemeChange();
3441
+ },
3442
 
3443
+ saveScheme: function() {
3444
+ elementor.schemes.saveScheme( this.getType() );
 
 
 
3445
 
3446
+ this.ui.saveButton.prop( 'disabled', true );
 
 
 
 
 
 
3447
 
3448
+ this.resetScheme();
 
 
3449
 
3450
+ this._renderChildren();
3451
+ },
 
 
3452
 
3453
+ setDefaultScheme: function() {
3454
+ var defaultScheme = elementor.config.default_schemes[ this.getType() ].items;
3455
 
3456
+ this.changeChildrenUIValues( defaultScheme );
3457
+ },
3458
 
3459
+ resetItems: function() {
3460
+ this.model.set( 'items', this.getScheme().items );
3461
  },
3462
 
3463
+ resetCollection: function() {
3464
+ var items = this.model.get( 'items' );
 
 
 
 
 
 
3465
 
3466
+ this.collection = new Backbone.Collection();
3467
 
3468
+ _.each( items, _.bind( function( item, key ) {
3469
+ item.type = this.getType();
3470
+ item.key = key;
3471
 
3472
+ this.collection.add( item );
3473
+ }, this ) );
 
 
 
 
3474
  },
3475
 
3476
+ resetScheme: function() {
3477
+ this.resetItems();
3478
+ this.resetCollection();
 
3479
  },
3480
 
3481
+ onSchemeChange: function() {
3482
+ elementor.schemes.printSchemesStyle();
3483
+ },
 
3484
 
3485
+ onChildviewValueChange: function( childView, newValue ) {
3486
+ this.ui.saveButton.removeProp( 'disabled' );
 
3487
 
3488
+ this.setSchemeValue( childView.model.get( 'key' ), newValue );
3489
+ }
3490
+ } );
3491
 
3492
+ module.exports = PanelSchemeBaseView;
 
 
3493
 
3494
+ },{"elementor-panel/pages/schemes/items/color":54,"elementor-panel/pages/schemes/items/typography":55}],50:[function(require,module,exports){
3495
+ var PanelSchemeColorsView = require( 'elementor-panel/pages/schemes/colors' ),
3496
+ PanelSchemeColorPickerView;
3497
 
3498
+ PanelSchemeColorPickerView = PanelSchemeColorsView.extend( {
3499
+ getType: function() {
3500
+ return 'color-picker';
3501
+ },
3502
 
3503
+ getUIType: function() {
3504
+ return 'color';
3505
  },
3506
 
3507
+ onSchemeChange: function() {},
 
3508
 
3509
+ getViewComparator: function() {
3510
+ return this.orderView;
 
3511
  },
3512
 
3513
+ orderView: function( model ) {
3514
+ return elementor.helpers.getColorPickerPaletteIndex( model.get( 'key' ) );
3515
+ }
3516
+ } );
3517
 
3518
+ module.exports = PanelSchemeColorPickerView;
 
3519
 
3520
+ },{"elementor-panel/pages/schemes/colors":51}],51:[function(require,module,exports){
3521
+ var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
3522
+ PanelSchemeColorsView;
 
 
3523
 
3524
+ PanelSchemeColorsView = PanelSchemeBaseView.extend( {
3525
+ ui: function() {
3526
+ var ui = PanelSchemeBaseView.prototype.ui.apply( this, arguments );
3527
 
3528
+ ui.systemSchemes = '.elementor-panel-scheme-color-system-scheme';
 
 
 
 
3529
 
3530
+ return ui;
3531
  },
3532
 
3533
+ events: function() {
3534
+ var events = PanelSchemeBaseView.prototype.events.apply( this, arguments );
 
3535
 
3536
+ events[ 'click @ui.systemSchemes' ] = 'onSystemSchemeClick';
 
3537
 
3538
+ return events;
 
3539
  },
3540
 
3541
+ getType: function() {
3542
+ return 'color';
3543
+ },
 
 
 
 
 
3544
 
3545
+ onSystemSchemeClick: function( event ) {
3546
+ var $schemeClicked = Backbone.$( event.currentTarget ),
3547
+ schemeName = $schemeClicked.data( 'schemeName' ),
3548
+ scheme = elementor.config.system_schemes[ this.getType() ][ schemeName ].items;
 
3549
 
3550
+ this.changeChildrenUIValues( scheme );
3551
+ }
3552
+ } );
3553
 
3554
+ module.exports = PanelSchemeColorsView;
 
3555
 
3556
+ },{"elementor-panel/pages/schemes/base":49}],52:[function(require,module,exports){
3557
+ var PanelSchemeDisabledView;
 
 
3558
 
3559
+ PanelSchemeDisabledView = Marionette.ItemView.extend( {
3560
+ template: '#tmpl-elementor-panel-schemes-disabled',
 
 
 
3561
 
3562
+ id: 'elementor-panel-schemes-disabled',
 
3563
 
3564
+ className: 'elementor-panel-nerd-box',
 
 
 
 
3565
 
3566
+ disabledTitle: '',
 
 
 
 
 
 
 
 
 
 
3567
 
3568
+ templateHelpers: function() {
3569
+ return {
3570
+ disabledTitle: this.disabledTitle
3571
+ };
3572
  }
3573
  } );
3574
 
3575
+ module.exports = PanelSchemeDisabledView;
3576
 
3577
  },{}],53:[function(require,module,exports){
3578
+ var PanelSchemeItemView;
 
3579
 
3580
+ PanelSchemeItemView = Marionette.ItemView.extend( {
3581
+ getTemplate: function() {
3582
+ return Marionette.TemplateCache.get( '#tmpl-elementor-panel-scheme-' + this.getUIType() + '-item' );
3583
+ },
3584
+
3585
+ className: function() {
3586
+ return 'elementor-panel-scheme-item';
3587
  }
3588
  } );
3589
 
3590
+ module.exports = PanelSchemeItemView;
3591
 
3592
+ },{}],54:[function(require,module,exports){
3593
+ var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
3594
+ PanelSchemeColorView;
 
 
3595
 
3596
+ PanelSchemeColorView = PanelSchemeItemView.extend( {
3597
+ getUIType: function() {
3598
+ return 'color';
3599
+ },
3600
 
3601
+ ui: {
3602
+ input: '.elementor-panel-scheme-color-value'
 
 
 
 
 
3603
  },
3604
 
3605
+ changeUIValue: function( newValue ) {
3606
+ this.ui.input.wpColorPicker( 'color', newValue );
3607
+ },
 
3608
 
3609
+ onBeforeDestroy: function() {
3610
+ if ( this.ui.input.wpColorPicker( 'instance' ) ) {
3611
+ this.ui.input.wpColorPicker( 'close' );
3612
+ }
3613
+ },
3614
 
3615
+ onRender: function() {
3616
+ elementor.helpers.wpColorPicker( this.ui.input, {
3617
+ change: _.bind( function( event, ui ) {
3618
+ this.triggerMethod( 'value:change', ui.color.toString() );
3619
+ }, this )
3620
+ } );
3621
+ }
3622
+ } );
3623
 
3624
+ module.exports = PanelSchemeColorView;
 
3625
 
3626
+ },{"elementor-panel/pages/schemes/items/base":53}],55:[function(require,module,exports){
3627
+ var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
3628
+ PanelSchemeTypographyView;
3629
 
3630
+ PanelSchemeTypographyView = PanelSchemeItemView.extend( {
3631
+ getUIType: function() {
3632
+ return 'typography';
3633
+ },
3634
 
3635
+ className: function() {
3636
+ var classes = PanelSchemeItemView.prototype.className.apply( this, arguments );
3637
 
3638
+ return classes + ' elementor-panel-box';
 
 
 
3639
  },
3640
 
3641
+ ui: {
3642
+ heading: '.elementor-panel-heading',
3643
+ allFields: '.elementor-panel-scheme-typography-item-field',
3644
+ inputFields: 'input.elementor-panel-scheme-typography-item-field',
3645
+ selectFields: 'select.elementor-panel-scheme-typography-item-field',
3646
+ selectFamilyFields: 'select.elementor-panel-scheme-typography-item-field[name="font_family"]'
3647
+ },
 
 
 
 
 
 
3648
 
3649
+ events: {
3650
+ 'input @ui.inputFields': 'onFieldChange',
3651
+ 'change @ui.selectFields': 'onFieldChange',
3652
+ 'click @ui.heading': 'toggleVisibility'
3653
+ },
3654
 
3655
+ onRender: function() {
3656
+ var self = this;
3657
 
3658
+ this.ui.inputFields.add( this.ui.selectFields ).each( function() {
3659
+ var $this = Backbone.$( this ),
3660
+ name = $this.attr( 'name' ),
3661
+ value = self.model.get( 'value' )[ name ];
3662
 
3663
+ $this.val( value );
3664
+ } );
3665
 
3666
+ this.ui.selectFamilyFields.select2( {
3667
+ dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
3668
+ } );
3669
  },
3670
 
3671
+ toggleVisibility: function() {
3672
+ this.ui.heading.toggleClass( 'elementor-open' );
3673
+ },
3674
 
3675
+ changeUIValue: function( newValue ) {
3676
+ this.ui.allFields.each( function() {
3677
+ var $this = Backbone.$( this ),
3678
+ thisName = $this.attr( 'name' ),
3679
+ newFieldValue = newValue[ thisName ];
3680
 
3681
+ $this.val( newFieldValue ).trigger( 'change' );
3682
+ } );
3683
  },
3684
 
3685
+ onFieldChange: function( event ) {
3686
+ var $select = this.$( event.currentTarget ),
3687
+ currentValue = elementor.schemes.getSchemeValue( 'typography', this.model.get( 'key' ) ).value,
3688
+ fieldKey = $select.attr( 'name' );
3689
 
3690
+ currentValue[ fieldKey ] = $select.val();
 
 
 
 
3691
 
3692
+ if ( 'font_family' === fieldKey && ! _.isEmpty( currentValue[ fieldKey ] ) ) {
3693
+ elementor.helpers.enqueueFont( currentValue[ fieldKey ] );
3694
  }
 
3695
 
3696
+ this.triggerMethod( 'value:change', currentValue );
3697
+ }
3698
+ } );
3699
 
3700
+ module.exports = PanelSchemeTypographyView;
 
 
 
3701
 
3702
+ },{"elementor-panel/pages/schemes/items/base":53}],56:[function(require,module,exports){
3703
+ var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
3704
+ PanelSchemeTypographyView;
3705
 
3706
+ PanelSchemeTypographyView = PanelSchemeBaseView.extend( {
3707
+ getType: function() {
3708
+ return 'typography';
3709
+ }
3710
+ } );
3711
 
3712
+ module.exports = PanelSchemeTypographyView;
 
 
3713
 
3714
+ },{"elementor-panel/pages/schemes/base":49}],57:[function(require,module,exports){
3715
+ var EditModeItemView = require( 'elementor-layouts/edit-mode' ),
3716
+ PanelLayoutView;
3717
 
3718
+ PanelLayoutView = Marionette.LayoutView.extend( {
3719
+ template: '#tmpl-elementor-panel',
 
3720
 
3721
+ id: 'elementor-panel-inner',
3722
+
3723
+ regions: {
3724
+ content: '#elementor-panel-content-wrapper',
3725
+ header: '#elementor-panel-header-wrapper',
3726
+ footer: '#elementor-panel-footer',
3727
+ modeSwitcher: '#elementor-mode-switcher'
3728
  },
3729
 
3730
+ pages: {},
 
3731
 
3732
+ childEvents: {
3733
+ 'click:add': function() {
3734
+ this.setPage( 'elements' );
3735
+ },
3736
+ 'editor:destroy': function() {
3737
+ this.setPage( 'elements' );
3738
+ }
3739
  },
3740
 
3741
+ currentPageName: null,
 
3742
 
3743
+ currentPageView: null,
 
3744
 
3745
+ _isScrollbarInitialized: false,
 
3746
 
3747
+ initialize: function() {
3748
+ this.initPages();
3749
+ },
3750
+
3751
+ buildPages: function() {
3752
+ var pages = {
3753
+ elements: {
3754
+ view: require( 'elementor-panel/pages/elements/elements' ),
3755
+ title: '<img src="' + elementor.config.assets_url + 'images/logo-panel.svg">'
3756
  },
3757
+ editor: {
3758
+ view: require( 'elementor-panel/pages/editor' )
3759
+ },
3760
+ menu: {
3761
+ view: elementor.modules.panel.Menu,
3762
+ title: '<img src="' + elementor.config.assets_url + 'images/logo-panel.svg">'
3763
+ },
3764
+ colorScheme: {
3765
+ view: require( 'elementor-panel/pages/schemes/colors' )
3766
+ },
3767
+ typographyScheme: {
3768
+ view: require( 'elementor-panel/pages/schemes/typography' )
3769
+ },
3770
+ colorPickerScheme: {
3771
+ view: require( 'elementor-panel/pages/schemes/color-picker' )
3772
+ }
3773
+ };
3774
+
3775
+ var schemesTypes = Object.keys( elementor.schemes.getSchemes() ),
3776
+ disabledSchemes = _.difference( schemesTypes, elementor.schemes.getEnabledSchemesTypes() );
3777
+
3778
+ _.each( disabledSchemes, function( schemeType ) {
3779
+ var scheme = elementor.schemes.getScheme( schemeType );
3780
+
3781
+ pages[ schemeType + 'Scheme' ].view = require( 'elementor-panel/pages/schemes/disabled' ).extend( {
3782
+ disabledTitle: scheme.disabled_title
3783
+ } );
3784
  } );
3785
+
3786
+ return pages;
3787
  },
3788
 
3789
+ initPages: function() {
3790
+ var pages;
 
 
3791
 
3792
+ this.getPages = function( page ) {
3793
+ if ( ! pages ) {
3794
+ pages = this.buildPages();
3795
+ }
3796
 
3797
+ return page ? pages[ page ] : pages;
3798
+ };
3799
 
3800
+ this.addPage = function( pageName, pageData ) {
3801
+ if ( ! pages ) {
3802
+ pages = this.buildPages();
3803
+ }
3804
 
3805
+ pages[ pageName ] = pageData;
3806
+ };
3807
  },
3808
 
3809
+ getHeaderView: function() {
3810
+ return this.getChildView( 'header' );
3811
  },
3812
 
3813
+ getFooterView: function() {
3814
+ return this.getChildView( 'footer' );
 
3815
  },
3816
 
3817
+ getCurrentPageName: function() {
3818
+ return this.currentPageName;
3819
+ },
3820
 
3821
+ getCurrentPageView: function() {
3822
+ return this.currentPageView;
3823
+ },
3824
 
3825
+ setPage: function( page, title, viewOptions ) {
3826
+ var pageData = this.getPages( page );
3827
 
3828
+ if ( ! pageData ) {
3829
+ throw new ReferenceError( 'Elementor panel doesn\'t have page named \'' + page + '\'' );
3830
+ }
3831
 
3832
+ if ( pageData.options ) {
3833
+ viewOptions = _.extend( pageData.options, viewOptions );
3834
  }
3835
 
3836
+ var View = pageData.view;
 
3837
 
3838
+ if ( pageData.getView ) {
3839
+ View = pageData.getView();
3840
+ }
3841
 
3842
+ this.currentPageView = new View( viewOptions );
 
3843
 
3844
+ this.showChildView( 'content', this.currentPageView );
 
 
 
 
3845
 
3846
+ this.getHeaderView().setTitle( title || pageData.title );
 
 
 
 
3847
 
3848
+ this.currentPageName = page;
 
3849
 
3850
+ this
3851
+ .trigger( 'set:page', this.currentPageView )
3852
+ .trigger( 'set:page:' + page, this.currentPageView );
3853
+ },
3854
 
3855
+ openEditor: function( model, view ) {
3856
+ var currentPageName = this.getCurrentPageName();
3857
+
3858
+ if ( 'editor' === currentPageName ) {
3859
+ var currentPageView = this.getCurrentPageView(),
3860
+ currentEditableModel = currentPageView.model;
3861
+
3862
+ if ( currentEditableModel === model ) {
3863
+ return;
3864
+ }
3865
  }
3866
 
3867
+ var elementData = elementor.getElementData( model );
 
3868
 
3869
+ this.setPage( 'editor', elementor.translate( 'edit_element', [ elementData.title ] ), {
3870
+ model: model,
3871
+ editedElementView: view
3872
+ } );
3873
 
3874
+ var action = 'panel/open_editor/' + model.get( 'elType' );
 
 
3875
 
3876
+ // Example: panel/open_editor/widget
3877
+ elementor.hooks.doAction( action, this, model, view );
3878
+
3879
+ // Example: panel/open_editor/widget/heading
3880
+ elementor.hooks.doAction( action + '/' + model.get( 'widgetType' ), this, model, view );
3881
  },
3882
 
3883
+ onBeforeShow: function() {
3884
+ var PanelFooterItemView = require( 'elementor-layouts/panel/footer' ),
3885
+ PanelHeaderItemView = require( 'elementor-layouts/panel/header' );
3886
 
3887
+ // Edit Mode
3888
+ this.showChildView( 'modeSwitcher', new EditModeItemView() );
 
3889
 
3890
+ // Header
3891
+ this.showChildView( 'header', new PanelHeaderItemView() );
 
3892
 
3893
+ // Footer
3894
+ this.showChildView( 'footer', new PanelFooterItemView() );
 
3895
 
3896
+ // Added Editor events
3897
+ this.updateScrollbar = _.throttle( this.updateScrollbar, 100 );
 
3898
 
3899
+ this.getRegion( 'content' )
3900
+ .on( 'before:show', _.bind( this.onEditorBeforeShow, this ) )
3901
+ .on( 'empty', _.bind( this.onEditorEmpty, this ) )
3902
+ .on( 'show', _.bind( this.updateScrollbar, this ) );
3903
 
3904
+ // Set default page to elements
3905
+ this.setPage( 'elements' );
 
 
 
 
 
 
 
3906
 
3907
+ this.listenTo( elementor.channels.data, 'scrollbar:update', this.updateScrollbar );
3908
+ },
 
 
3909
 
3910
+ onEditorBeforeShow: function() {
3911
+ _.defer( _.bind( this.updateScrollbar, this ) );
3912
+ },
3913
 
3914
+ onEditorEmpty: function() {
3915
+ this.updateScrollbar();
3916
+ },
3917
 
3918
+ updateScrollbar: function() {
3919
+ var $panel = this.content.$el;
3920
 
3921
+ if ( ! this._isScrollbarInitialized ) {
3922
+ $panel.perfectScrollbar();
3923
+ this._isScrollbarInitialized = true;
3924
 
3925
+ return;
3926
+ }
3927
 
3928
+ $panel.perfectScrollbar( 'update' );
3929
+ }
3930
  } );
3931
 
3932
+ module.exports = PanelLayoutView;
3933
 
3934
+ },{"elementor-layouts/edit-mode":33,"elementor-layouts/panel/footer":34,"elementor-layouts/panel/header":35,"elementor-panel/pages/editor":36,"elementor-panel/pages/elements/elements":39,"elementor-panel/pages/schemes/color-picker":50,"elementor-panel/pages/schemes/colors":51,"elementor-panel/pages/schemes/disabled":52,"elementor-panel/pages/schemes/typography":56}],58:[function(require,module,exports){
3935
+ var BaseSettingsModel;
 
 
3936
 
3937
+ BaseSettingsModel = Backbone.Model.extend( {
3938
+ options: {},
3939
 
3940
+ initialize: function( data, options ) {
3941
+ var self = this;
3942
 
3943
+ if ( options ) {
3944
+ // Keep the options for cloning
3945
+ self.options = options;
3946
+ }
3947
 
3948
+ self.controls = ( options && options.controls ) ? options.controls : elementor.getElementControls( self );
3949
 
3950
+ self.validators = {};
 
 
3951
 
3952
+ if ( ! self.controls ) {
3953
+ return;
3954
+ }
3955
 
3956
+ var attrs = data || {},
3957
+ defaults = {};
3958
 
3959
+ _.each( self.controls, function( field ) {
3960
+ var control = elementor.config.controls[ field.type ],
3961
+ isUIControl = -1 !== control.features.indexOf( 'ui' );
3962
 
3963
+ if ( isUIControl ) {
3964
+ return;
 
 
 
 
3965
  }
 
 
3966
 
3967
+ // Check if the value is a plain object ( and not an array )
3968
+ var isMultipleControl = jQuery.isPlainObject( control.default_value );
3969
 
3970
+ if ( isMultipleControl ) {
3971
+ defaults[ field.name ] = _.extend( {}, control.default_value, field['default'] || {} );
3972
+ } else {
3973
+ defaults[ field.name ] = field['default'] || control.default_value;
3974
+ }
3975
 
3976
+ if ( undefined !== attrs[ field.name ] ) {
3977
+ if ( isMultipleControl && ! _.isObject( attrs[ field.name ] ) ) {
3978
+ elementor.debug.addCustomError(
3979
+ new TypeError( 'An invalid argument supplied as multiple control value' ),
3980
+ 'InvalidElementData',
3981
+ 'Element `' + ( self.get( 'widgetType' ) || self.get( 'elType' ) ) + '` got <' + attrs[ field.name ] + '> as `' + field.name + '` value. Expected array or object.'
3982
+ );
3983
 
3984
+ delete attrs[ field.name ];
3985
+ }
3986
+ }
3987
+
3988
+ if ( undefined === attrs[ field.name ] ) {
3989
+ attrs[ field.name ] = defaults[ field.name ];
3990
+ }
3991
  } );
 
3992
 
3993
+ self.defaults = defaults;
 
 
3994
 
3995
+ self.handleRepeaterData( attrs );
3996
+
3997
+ self.set( attrs );
3998
  },
3999
 
4000
+ handleRepeaterData: function( attrs ) {
4001
+ _.each( this.controls, function( field ) {
4002
+ if ( field.is_repeater ) {
4003
+ // TODO: Apply defaults on each field in repeater fields
4004
+ if ( ! ( attrs[ field.name ] instanceof Backbone.Collection ) ) {
4005
+ attrs[ field.name ] = new Backbone.Collection( attrs[ field.name ], {
4006
+ model: function( attrs, options ) {
4007
+ options = options || {};
4008
 
4009
+ options.controls = field.fields;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4010
 
4011
+ if ( ! attrs._id ) {
4012
+ attrs._id = elementor.helpers.getUniqueID();
4013
+ }
4014
 
4015
+ return new BaseSettingsModel( attrs, options );
4016
+ }
4017
+ } );
4018
  }
 
 
 
4019
  }
4020
  } );
4021
  },
4022
 
4023
+ getFontControls: function() {
4024
+ return _.filter( this.getActiveControls(), function( control ) {
4025
+ return 'font' === control.type;
4026
+ } );
 
 
 
 
 
 
4027
  },
4028
 
4029
+ getStyleControls: function( controls ) {
4030
+ var self = this;
4031
 
4032
+ controls = controls || self.getActiveControls();
4033
 
4034
+ return _.filter( controls, function( control ) {
4035
+ if ( control.fields ) {
4036
+ control.styleFields = self.getStyleControls( control.fields );
4037
 
4038
+ return true;
4039
+ }
4040
 
4041
+ return self.isStyleControl( control.name, controls );
4042
+ } );
4043
  },
4044
 
4045
+ isStyleControl: function( attribute, controls ) {
4046
+ controls = controls || this.controls;
4047
 
4048
+ var currentControl = _.find( controls, function( control ) {
4049
+ return attribute === control.name;
4050
+ } );
4051
 
4052
+ return currentControl && ! _.isEmpty( currentControl.selectors );
4053
+ },
4054
 
4055
+ getClassControls: function( controls ) {
4056
+ controls = controls || this.controls;
4057
+
4058
+ return _.filter( controls, function( control ) {
4059
+ return ! _.isUndefined( control.prefix_class );
4060
  } );
4061
+ },
4062
 
4063
+ isClassControl: function( attribute ) {
4064
+ var currentControl = _.find( this.controls, function( control ) {
4065
+ return attribute === control.name;
4066
+ } );
4067
 
4068
+ return currentControl && ! _.isUndefined( currentControl.prefix_class );
4069
  },
4070
 
4071
+ getControl: function( id ) {
4072
+ return _.find( this.controls, function( control ) {
4073
+ return id === control.name;
4074
+ } );
4075
+ },
4076
 
4077
+ getActiveControls: function() {
4078
+ var self = this,
4079
+ controls = {};
4080
 
4081
+ _.each( self.controls, function( control, controlKey ) {
4082
+ if ( elementor.helpers.isActiveControl( control, self.attributes ) ) {
4083
+ controls[ controlKey ] = control;
4084
+ }
4085
+ } );
4086
 
4087
+ return controls;
 
 
4088
  },
4089
 
4090
+ clone: function() {
4091
+ return new BaseSettingsModel( elementor.helpers.cloneObject( this.attributes ), elementor.helpers.cloneObject( this.options ) );
4092
  },
4093
 
4094
+ setExternalChange: function( key, value ) {
4095
+ this.set( key, value );
 
4096
 
4097
+ this.trigger( 'change:external', key, value )
4098
+ .trigger( 'change:external:' + key, value );
 
 
4099
  },
4100
 
4101
+ toJSON: function( options ) {
4102
+ var data = Backbone.Model.prototype.toJSON.call( this );
 
 
4103
 
4104
+ options = options || {};
 
4105
 
4106
+ delete data.widgetType;
4107
+ delete data.elType;
4108
+ delete data.isInner;
 
 
4109
 
4110
+ _.each( data, function( attribute, key ) {
4111
+ if ( attribute && attribute.toJSON ) {
4112
+ data[ key ] = attribute.toJSON();
4113
+ }
4114
+ } );
4115
 
4116
+ if ( options.removeDefault ) {
4117
+ var controls = this.controls;
 
 
4118
 
4119
+ _.each( data, function( value, key ) {
4120
+ var control = controls[ key ];
4121
 
4122
+ if ( control ) {
4123
+ if ( ( 'text' === control.type || 'textarea' === control.type ) && data[ key ] ) {
4124
+ return;
4125
+ }
4126
 
4127
+ if ( data[ key ] && 'object' === typeof data[ key ] ) {
4128
+ // First check length difference
4129
+ if ( Object.keys( data[ key ] ).length !== Object.keys( control[ 'default' ] ).length ) {
4130
+ return;
4131
+ }
4132
 
4133
+ // If it's equal length, loop over value
4134
+ var isEqual = true;
 
4135
 
4136
+ _.each( data[ key ], function( propertyValue, propertyKey ) {
4137
+ if ( data[ key ][ propertyKey ] !== control[ 'default' ][ propertyKey ] ) {
4138
+ return isEqual = false;
4139
+ }
4140
+ } );
4141
+
4142
+ if ( isEqual ) {
4143
+ delete data[ key ];
4144
+ }
4145
+ } else {
4146
+ if ( data[ key ] === control[ 'default' ] ) {
4147
+ delete data[ key ];
4148
+ }
4149
+ }
4150
+ }
4151
  } );
4152
  }
 
 
 
 
4153
 
4154
  return data;
4155
  }
4156
  } );
4157
 
4158
+ module.exports = BaseSettingsModel;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4159
 
4160
+ },{}],59:[function(require,module,exports){
4161
+ var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4162
+ ColumnSettingsModel;
4163
 
4164
+ ColumnSettingsModel = BaseSettingsModel.extend( {
4165
+ defaults: {
4166
+ _column_size: 100
4167
  }
4168
  } );
4169
 
4170
+ module.exports = ColumnSettingsModel;
 
4171
 
4172
+ },{"elementor-models/base-settings":58}],60:[function(require,module,exports){
4173
+ var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4174
+ WidgetSettingsModel = require( 'elementor-models/widget-settings' ),
4175
+ ColumnSettingsModel = require( 'elementor-models/column-settings' ),
4176
+ SectionSettingsModel = require( 'elementor-models/section-settings' ),
4177
 
4178
+ ElementModel,
4179
+ ElementCollection;
 
 
 
 
 
 
 
 
4180
 
4181
+ ElementModel = Backbone.Model.extend( {
4182
+ defaults: {
4183
+ id: '',
4184
+ elType: '',
4185
+ isInner: false,
4186
+ settings: {},
4187
+ defaultEditSettings: {}
4188
  },
4189
 
4190
+ remoteRender: false,
4191
+ _htmlCache: null,
4192
+ _jqueryXhr: null,
4193
+ renderOnLeave: false,
 
 
4194
 
4195
+ initialize: function( options ) {
4196
+ var elType = this.get( 'elType' ),
4197
+ elements = this.get( 'elements' );
4198
 
4199
+ if ( undefined !== elements ) {
4200
+ this.set( 'elements', new ElementCollection( elements ) );
 
 
 
 
4201
  }
4202
 
4203
+ if ( 'widget' === elType ) {
4204
+ this.remoteRender = true;
4205
+ this.setHtmlCache( options.htmlCache || '' );
4206
+ }
 
 
 
 
4207
 
4208
+ // No need this variable anymore
4209
+ delete options.htmlCache;
 
 
4210
 
4211
+ // Make call to remote server as throttle function
4212
+ this.renderRemoteServer = _.throttle( this.renderRemoteServer, 1000 );
 
 
 
 
4213
 
4214
+ this.initSettings();
 
 
4215
 
4216
+ this.initEditSettings();
4217
 
4218
+ this.on( {
4219
+ destroy: this.onDestroy,
4220
+ 'editor:close': this.onCloseEditor
4221
+ } );
4222
+ },
4223
 
4224
+ initSettings: function() {
4225
+ var elType = this.get( 'elType' ),
4226
+ settings = this.get( 'settings' ),
4227
+ settingModels = {
4228
+ widget: WidgetSettingsModel,
4229
+ column: ColumnSettingsModel,
4230
+ section: SectionSettingsModel
4231
+ },
4232
+ SettingsModel = settingModels[ elType ] || BaseSettingsModel;
4233
 
4234
+ if ( Backbone.$.isEmptyObject( settings ) ) {
4235
+ settings = elementor.helpers.cloneObject( settings );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4236
  }
 
4237
 
4238
+ if ( 'widget' === elType ) {
4239
+ settings.widgetType = this.get( 'widgetType' );
4240
+ }
4241
 
4242
+ settings.elType = elType;
4243
+ settings.isInner = this.get( 'isInner' );
 
4244
 
4245
+ settings = new SettingsModel( settings );
 
 
 
 
4246
 
4247
+ this.set( 'settings', settings );
 
 
4248
 
4249
+ elementorFrontend.config.elements.data[ this.cid ] = settings;
4250
+ },
4251
 
4252
+ initEditSettings: function() {
4253
+ var editSettings = new Backbone.Model( this.get( 'defaultEditSettings' ) );
 
 
4254
 
4255
+ this.set( 'editSettings', editSettings );
 
4256
 
4257
+ elementorFrontend.config.elements.editSettings[ this.cid ] = editSettings;
4258
+ },
 
 
4259
 
4260
+ onDestroy: function() {
4261
+ // Clean the memory for all use instances
4262
+ var settings = this.get( 'settings' ),
4263
+ elements = this.get( 'elements' );
4264
 
4265
+ if ( undefined !== elements ) {
4266
+ _.each( _.clone( elements.models ), function( model ) {
4267
+ model.destroy();
4268
+ } );
4269
+ }
4270
 
4271
+ if ( settings instanceof BaseSettingsModel ) {
4272
+ settings.destroy();
4273
+ }
4274
+ },
4275
 
4276
+ onCloseEditor: function() {
4277
+ this.initEditSettings();
4278
 
4279
+ if ( this.renderOnLeave ) {
4280
+ this.renderRemoteServer();
4281
+ }
 
4282
  },
4283
 
4284
+ setSetting: function( key, value ) {
4285
+ this.get( 'settings' ).setExternalChange( key, value );
 
 
4286
  },
4287
 
4288
+ getSetting: function( key ) {
4289
+ var settings = this.get( 'settings' );
4290
 
4291
+ if ( undefined === settings.get( key ) ) {
4292
+ return '';
4293
+ }
4294
 
4295
+ return settings.get( key );
 
 
 
4296
  },
4297
 
4298
+ setHtmlCache: function( htmlCache ) {
4299
+ this._htmlCache = htmlCache;
4300
+ },
4301
 
4302
+ getHtmlCache: function() {
4303
+ return this._htmlCache;
4304
+ },
 
 
 
 
 
 
 
 
 
4305
 
4306
+ getTitle: function() {
4307
+ var elementData = elementor.getElementData( this );
4308
+
4309
+ return ( elementData ) ? elementData.title : 'Unknown';
4310
  },
4311
 
4312
+ getIcon: function() {
4313
+ var elementData = elementor.getElementData( this );
4314
 
4315
+ return ( elementData ) ? elementData.icon : 'unknown';
 
 
4316
  },
4317
 
4318
+ createRemoteRenderRequest: function() {
4319
+ var data = this.toJSON();
4320
 
4321
+ return elementor.ajax.send( 'render_widget', {
4322
+ data: {
4323
+ post_id: elementor.config.post_id,
4324
+ data: JSON.stringify( data ),
4325
+ _nonce: elementor.config.nonce
4326
+ },
4327
+ success: _.bind( this.onRemoteGetHtml, this )
4328
+ } );
4329
+ },
4330
 
4331
+ renderRemoteServer: function() {
4332
+ if ( ! this.remoteRender ) {
4333
  return;
4334
  }
4335
 
4336
+ this.renderOnLeave = false;
 
4337
 
4338
+ this.trigger( 'before:remote:render' );
 
4339
 
4340
+ if ( this.isRemoteRequestActive() ) {
4341
+ this._jqueryXhr.abort();
4342
+ }
4343
+
4344
+ this._jqueryXhr = this.createRemoteRenderRequest();
4345
  },
4346
 
4347
+ isRemoteRequestActive: function() {
4348
+ return this._jqueryXhr && 4 !== this._jqueryXhr.readyState;
4349
  },
4350
 
4351
+ onRemoteGetHtml: function( data ) {
4352
+ this.setHtmlCache( data.render );
4353
+ this.trigger( 'remote:render' );
4354
+ },
 
 
 
 
 
4355
 
4356
+ clone: function() {
4357
+ var newModel = new this.constructor( elementor.helpers.cloneObject( this.attributes ) );
 
4358
 
4359
+ newModel.set( 'id', elementor.helpers.getUniqueID() );
 
4360
 
4361
+ newModel.setHtmlCache( this.getHtmlCache() );
 
 
 
4362
 
4363
+ var elements = this.get( 'elements' );
 
4364
 
4365
+ if ( ! _.isEmpty( elements ) ) {
4366
+ newModel.set( 'elements', elements.clone() );
4367
+ }
4368
 
4369
+ return newModel;
4370
+ },
4371
 
4372
+ toJSON: function( options ) {
4373
+ options = _.extend( { copyHtmlCache: false }, options );
4374
 
4375
+ // Call parent's toJSON method
4376
+ var data = Backbone.Model.prototype.toJSON.call( this );
 
4377
 
4378
+ _.each( data, function( attribute, key ) {
4379
+ if ( attribute && attribute.toJSON ) {
4380
+ data[ key ] = attribute.toJSON( options );
4381
+ }
4382
+ } );
4383
 
4384
+ if ( options.copyHtmlCache ) {
4385
+ data.htmlCache = this.getHtmlCache();
4386
+ } else {
4387
+ delete data.htmlCache;
4388
  }
4389
 
4390
+ return data;
4391
+ }
 
 
 
 
 
 
4392
 
4393
+ } );
 
 
4394
 
4395
+ ElementCollection = Backbone.Collection.extend( {
4396
+ add: function( models, options, isCorrectSet ) {
4397
+ if ( ( ! options || ! options.silent ) && ! isCorrectSet ) {
4398
+ throw 'Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.';
4399
+ }
4400
 
4401
+ return Backbone.Collection.prototype.add.call( this, models, options );
4402
+ },
 
 
4403
 
4404
+ model: function( attrs, options ) {
4405
+ var ModelClass = Backbone.Model;
4406
 
4407
+ if ( attrs.elType ) {
4408
+ ModelClass = elementor.hooks.applyFilters( 'element/model', ElementModel, attrs );
4409
  }
4410
 
4411
+ return new ModelClass( attrs, options );
4412
+ },
 
 
4413
 
4414
+ clone: function() {
4415
+ var tempCollection = Backbone.Collection.prototype.clone.apply( this, arguments ),
4416
+ newCollection = new ElementCollection();
4417
+
4418
+ tempCollection.forEach( function( model ) {
4419
+ newCollection.add( model.clone(), null, true );
4420
  } );
4421
 
4422
+ return newCollection;
4423
+ }
4424
+ } );
4425
 
4426
+ ElementCollection.prototype.sync = function() {
4427
+ return null;
4428
+ };
 
4429
 
4430
+ ElementCollection.prototype.fetch = function() {
4431
+ return null;
4432
  };
4433
 
4434
+ ElementCollection.prototype.save = function() {
4435
+ return null;
4436
+ };
4437
 
4438
+ ElementModel.prototype.sync = function() {
4439
+ return null;
4440
+ };
4441
+ ElementModel.prototype.fetch = function() {
4442
+ return null;
4443
+ };
4444
+ ElementModel.prototype.save = function() {
4445
+ return null;
4446
+ };
4447
 
4448
+ module.exports = {
4449
+ Model: ElementModel,
4450
+ Collection: ElementCollection
4451
+ };
 
 
 
 
4452
 
4453
+ },{"elementor-models/base-settings":58,"elementor-models/column-settings":59,"elementor-models/section-settings":61,"elementor-models/widget-settings":62}],61:[function(require,module,exports){
4454
+ var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4455
+ SectionSettingsModel;
4456
 
4457
+ SectionSettingsModel = BaseSettingsModel.extend( {
4458
+ defaults: {}
4459
+ } );
4460
 
4461
+ module.exports = SectionSettingsModel;
 
 
4462
 
4463
+ },{"elementor-models/base-settings":58}],62:[function(require,module,exports){
4464
+ var BaseSettingsModel = require( 'elementor-models/base-settings' ),
4465
+ WidgetSettingsModel;
4466
 
4467
+ WidgetSettingsModel = BaseSettingsModel.extend( {
 
 
4468
 
4469
+ } );
 
 
4470
 
4471
+ module.exports = WidgetSettingsModel;
 
 
4472
 
4473
+ },{"elementor-models/base-settings":58}],63:[function(require,module,exports){
4474
+ var ViewModule = require( 'elementor-utils/view-module' ),
4475
+ SettingsModel = require( 'elementor-models/base-settings' ),
4476
+ ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' );
 
 
 
 
4477
 
4478
+ module.exports = ViewModule.extend( {
4479
+ controlsCSS: null,
 
4480
 
4481
+ model: null,
 
4482
 
4483
+ hasChange: false,
4484
 
4485
+ changeCallbacks: {},
4486
 
4487
+ addChangeCallback: function( attribute, callback ) {
4488
+ this.changeCallbacks[ attribute ] = callback;
4489
+ },
4490
 
4491
+ bindEvents: function() {
4492
+ elementor.on( 'preview:loaded', this.onElementorPreviewLoaded );
 
4493
 
4494
+ this.model.on( 'change', this.onModelChange );
4495
+ },
 
 
 
 
 
 
 
 
 
 
4496
 
4497
+ addPanelPage: function() {
4498
+ var name = this.getSettings( 'name' );
4499
 
4500
+ elementor.getPanelView().addPage( name + '_settings', {
4501
+ view: elementor.settings.panelPages[ name ] || elementor.settings.panelPages.base,
4502
+ title: this.getSettings( 'panelPage.title' ),
4503
+ options: {
4504
+ model: this.model,
4505
+ name: name
4506
  }
4507
+ } );
4508
+ },
4509
 
4510
+ updateStylesheet: function() {
4511
+ this.controlsCSS.stylesheet.empty();
4512
 
4513
+ this.controlsCSS.addStyleRules( this.model.getStyleControls(), this.model.attributes, this.model.controls, [ /{{WRAPPER}}/g ], [ this.getSettings( 'cssWrapperSelector' ) ] );
 
 
 
 
 
 
 
 
 
4514
 
4515
+ this.controlsCSS.addStyleToDocument();
4516
+ },
4517
 
4518
+ initModel: function() {
4519
+ this.model = new SettingsModel( this.getSettings( 'settings' ), {
4520
+ controls: this.getSettings( 'controls' )
4521
+ } );
4522
+ },
4523
 
4524
+ initControlsCSSParser: function() {
4525
+ this.controlsCSS = new ControlsCSSParser( { id: this.getSettings( 'name' ) } );
4526
+ },
4527
 
4528
+ getDataToSave: function( data ) {
4529
+ return data;
4530
+ },
 
 
 
 
 
 
4531
 
4532
+ save: function( callback ) {
4533
+ var self = this;
 
 
 
4534
 
4535
+ if ( ! self.hasChange ) {
4536
+ return;
4537
+ }
4538
 
4539
+ var settings = this.model.toJSON( { removeDefault: true } ),
4540
+ data = this.getDataToSave( {
4541
+ data: JSON.stringify( settings )
4542
+ } );
4543
 
4544
+ NProgress.start();
 
4545
 
4546
+ elementor.ajax.send( 'save_' + this.getSettings( 'name' ) + '_settings', {
4547
+ data: data,
4548
+ success: function() {
4549
+ NProgress.done();
4550
 
4551
+ self.setSettings( 'settings', settings );
 
4552
 
4553
+ self.hasChange = false;
4554
+
4555
+ if ( callback ) {
4556
+ callback.apply( self, arguments );
4557
+ }
4558
+ },
4559
+ error: function() {
4560
+ alert( 'An error occurred' );
4561
  }
4562
+ } );
4563
+ },
4564
 
4565
+ addPanelMenuItem: function() {
4566
+ var menuSettings = this.getSettings( 'panelPage.menu' ),
4567
+ menuItemOptions = {
4568
+ icon: menuSettings.icon,
4569
+ title: this.getSettings( 'panelPage.title' ),
4570
+ type: 'page',
4571
+ pageName: this.getSettings( 'name' ) + '_settings'
4572
+ };
4573
 
4574
+ elementor.modules.panel.Menu.addItem( menuItemOptions, menuSettings.beforeItem );
4575
+ },
 
 
 
 
 
 
 
 
 
4576
 
4577
+ onInit: function() {
4578
+ this.initModel();
 
 
4579
 
4580
+ this.initControlsCSSParser();
 
 
4581
 
4582
+ this.addPanelMenuItem();
4583
+
4584
+ this.debounceSave = _.debounce( this.save, 3000 );
4585
+
4586
+ ViewModule.prototype.onInit.apply( this, arguments );
4587
  },
4588
 
4589
+ onModelChange: function( model ) {
4590
+ var self = this;
 
 
4591
 
4592
+ self.hasChange = true;
 
 
 
 
 
 
4593
 
4594
+ this.controlsCSS.stylesheet.empty();
4595
+
4596
+ _.each( model.changed, function( value, key ) {
4597
+ if ( self.changeCallbacks[ key ] ) {
4598
+ self.changeCallbacks[ key ].call( self, value );
 
4599
  }
4600
  } );
4601
 
4602
+ self.updateStylesheet();
4603
+
4604
+ self.debounceSave();
4605
  },
4606
 
4607
+ onElementorPreviewLoaded: function() {
4608
+ this.updateStylesheet();
4609
 
4610
+ this.addPanelPage();
 
 
4611
  }
4612
+ } );
 
 
4613
 
4614
+ },{"elementor-editor-utils/controls-css-parser":70,"elementor-models/base-settings":58,"elementor-utils/view-module":123}],64:[function(require,module,exports){
4615
+ var ControlsStack = require( 'elementor-views/controls-stack' );
4616
 
4617
+ module.exports = ControlsStack.extend( {
4618
+ id: function() {
4619
+ return 'elementor-panel-' + this.getOption( 'name' ) + '-settings';
4620
+ },
4621
 
4622
+ getTemplate: function() {
4623
+ return '#tmpl-elementor-panel-' + this.getOption( 'name' ) + '-settings';
 
 
 
 
 
4624
  },
4625
 
4626
+ childViewContainer: function() {
4627
+ return '#elementor-panel-' + this.getOption( 'name' ) + '-settings-controls';
4628
+ },
 
4629
 
4630
+ childViewOptions: function() {
4631
+ return {
4632
+ elementSettingsModel: this.model
4633
+ };
4634
+ },
4635
 
4636
+ initialize: function() {
4637
+ this.collection = new Backbone.Collection( _.values( this.model.controls ) );
4638
+ }
4639
+ } );
 
 
 
 
4640
 
4641
+ },{"elementor-views/controls-stack":89}],65:[function(require,module,exports){
4642
+ var BaseSettings = require( 'elementor-editor/settings/base/manager' );
 
4643
 
4644
+ module.exports = BaseSettings.extend( {
4645
+ changeCallbacks: {
4646
+ elementor_page_title_selector: function( newValue ) {
4647
+ var newSelector = newValue || 'h1.entry-title',
4648
+ titleSelectors = elementor.settings.page.model.controls.hide_title.selectors = {};
4649
 
4650
+ titleSelectors[ newSelector ] = 'display: none';
4651
 
4652
+ elementor.settings.page.updateStylesheet();
 
 
 
4653
  }
4654
+ }
4655
+ } );
4656
 
4657
+ },{"elementor-editor/settings/base/manager":63}],66:[function(require,module,exports){
4658
+ var BaseSettings = require( 'elementor-editor/settings/base/manager' );
 
 
 
4659
 
4660
+ module.exports = BaseSettings.extend( {
4661
+ changeCallbacks: {
4662
+ post_title: function( newValue ) {
4663
+ var $title = elementorFrontend.getElements( '$document' ).find( elementor.config.page_title_selector );
4664
 
4665
+ $title.text( newValue );
4666
+ },
4667
 
4668
+ template: function() {
4669
+ this.save( function() {
4670
+ elementor.reloadPreview();
4671
 
4672
+ elementor.once( 'preview:loaded', function() {
4673
+ elementor.getPanelView().setPage( 'page_settings' );
4674
+ } );
4675
+ } );
4676
  }
4677
+ },
4678
 
4679
+ getDataToSave: function( data ) {
4680
+ data.id = elementor.config.post_id;
4681
 
4682
+ return data;
4683
+ }
4684
+ } );
 
 
 
 
 
 
4685
 
4686
+ },{"elementor-editor/settings/base/manager":63}],67:[function(require,module,exports){
4687
+ var Module = require( 'elementor-utils/module' );
 
 
4688
 
4689
+ module.exports = Module.extend( {
4690
+ modules: {
4691
+ base: require( 'elementor-editor/settings/base/manager' ),
4692
+ general: require( 'elementor-editor/settings/general/manager' ),
4693
+ page: require( 'elementor-editor/settings/page/manager' )
4694
  },
4695
 
4696
+ panelPages: {
4697
+ base: require( 'elementor-editor/settings/base/panel' )
 
 
 
 
 
 
 
 
4698
  },
4699
 
4700
+ onInit: function() {
4701
+ this.initSettings();
 
 
 
 
4702
  },
4703
 
4704
+ initSettings: function() {
4705
+ var self = this;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4706
 
4707
+ _.each( elementor.config.settings, function( config, name ) {
4708
+ var Manager = self.modules[ name ] || self.modules.base;
 
 
 
 
4709
 
4710
+ self[ name ] = new Manager( config );
4711
+ } );
4712
+ }
4713
+ } );
4714
 
4715
+ },{"elementor-editor/settings/base/manager":63,"elementor-editor/settings/base/panel":64,"elementor-editor/settings/general/manager":65,"elementor-editor/settings/page/manager":66,"elementor-utils/module":122}],68:[function(require,module,exports){
4716
+ var Ajax;
 
 
 
 
 
 
 
 
 
4717
 
4718
+ Ajax = {
4719
+ config: {},
4720
 
4721
+ initConfig: function() {
4722
+ this.config = {
4723
+ ajaxParams: {
4724
+ type: 'POST',
4725
+ url: elementor.config.ajaxurl,
4726
+ data: {}
4727
+ },
4728
+ actionPrefix: 'elementor_'
4729
+ };
4730
  },
4731
 
4732
+ init: function() {
4733
+ this.initConfig();
4734
  },
4735
 
4736
+ send: function( action, options ) {
4737
+ var ajaxParams = elementor.helpers.cloneObject( this.config.ajaxParams );
 
4738
 
4739
+ options = options || {};
 
 
4740
 
4741
+ action = this.config.actionPrefix + action;
 
 
 
 
4742
 
4743
+ Backbone.$.extend( ajaxParams, options );
 
 
 
4744
 
4745
+ if ( ajaxParams.data instanceof FormData ) {
4746
+ ajaxParams.data.append( 'action', action );
4747
+ ajaxParams.data.append( '_nonce', elementor.config.nonce );
4748
+ } else {
4749
+ ajaxParams.data.action = action;
4750
+ ajaxParams.data._nonce = elementor.config.nonce;
4751
+ }
4752
 
4753
+ var successCallback = ajaxParams.success,
4754
+ errorCallback = ajaxParams.error;
 
 
 
4755
 
4756
+ if ( successCallback || errorCallback ) {
4757
+ ajaxParams.success = function( response ) {
4758
+ if ( response.success && successCallback ) {
4759
+ successCallback( response.data );
4760
+ }
4761
 
4762
+ if ( ( ! response.success ) && errorCallback ) {
4763
+ errorCallback( response.data );
4764
+ }
 
 
 
 
 
 
4765
  };
4766
 
4767
+ if ( errorCallback ) {
4768
+ ajaxParams.error = function( data ) {
4769
+ errorCallback( data );
4770
+ };
4771
+ }
4772
  }
4773
 
4774
+ return Backbone.$.ajax( ajaxParams );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4775
  }
4776
  };
4777
 
4778
+ module.exports = Ajax;
4779
 
4780
+ },{}],69:[function(require,module,exports){
4781
+ var Conditions;
4782
 
4783
+ Conditions = function() {
4784
  var self = this;
4785
 
4786
+ this.compare = function( leftValue, rightValue, operator ) {
4787
+ switch ( operator ) {
4788
+ /* jshint ignore:start */
4789
+ case '==':
4790
+ return leftValue == rightValue;
4791
+ case '!=':
4792
+ return leftValue != rightValue;
4793
+ /* jshint ignore:end */
4794
+ case '!==':
4795
+ return leftValue !== rightValue;
4796
+ case 'in':
4797
+ return -1 !== rightValue.indexOf( leftValue );
4798
+ case '!in':
4799
+ return -1 === rightValue.indexOf( leftValue );
4800
+ case '<':
4801
+ return leftValue < rightValue;
4802
+ case '<=':
4803
+ return leftValue <= rightValue;
4804
+ case '>':
4805
+ return leftValue > rightValue;
4806
+ case '>=':
4807
+ return leftValue >= rightValue;
4808
+ default:
4809
+ return leftValue === rightValue;
4810
+ }
4811
+ };
4812
 
4813
+ this.check = function( conditions, comparisonObject ) {
4814
+ var isOrCondition = 'or' === conditions.relation,
4815
+ conditionSucceed = ! isOrCondition;
4816
 
4817
+ Backbone.$.each( conditions.terms, function() {
4818
+ var term = this,
4819
+ comparisonResult;
4820
 
4821
+ if ( term.terms ) {
4822
+ comparisonResult = self.check( term, comparisonObject );
4823
+ } else {
4824
+ var parsedName = term.name.match( /(\w+)(?:\[(\w+)])?/ ),
4825
+ value = comparisonObject[ parsedName[ 1 ] ];
4826
 
4827
+ if ( parsedName[ 2 ] ) {
4828
+ value = value[ parsedName[ 2 ] ];
4829
+ }
4830
 
4831
+ comparisonResult = self.compare( value, term.value, term.operator );
 
 
 
4832
  }
 
 
 
4833
 
4834
+ if ( isOrCondition ) {
4835
+ if ( comparisonResult ) {
4836
+ conditionSucceed = true;
4837
+ }
4838
 
4839
+ return ! comparisonResult;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4840
  }
4841
 
4842
+ if ( ! comparisonResult ) {
4843
+ return conditionSucceed = false;
4844
+ }
4845
+ } );
4846
 
4847
+ return conditionSucceed;
4848
  };
4849
+ };
4850
 
4851
+ module.exports = new Conditions();
 
 
4852
 
4853
+ },{}],70:[function(require,module,exports){
4854
+ var ViewModule = require( 'elementor-utils/view-module' ),
4855
+ Stylesheet = require( 'elementor-editor-utils/stylesheet' ),
4856
+ ControlsCSSParser;
4857
 
4858
+ ControlsCSSParser = ViewModule.extend( {
4859
+ stylesheet: null,
 
4860
 
4861
+ getDefaultSettings: function() {
4862
+ return {
4863
+ id: 0
4864
+ };
4865
+ },
4866
 
4867
+ getDefaultElements: function() {
4868
+ return {
4869
+ $stylesheetElement: Backbone.$( '<style>', { id: 'elementor-style-' + this.getSettings( 'id' ) } )
4870
+ };
4871
+ },
4872
 
4873
+ initStylesheet: function() {
4874
+ var viewportBreakpoints = elementor.config.viewportBreakpoints;
 
 
4875
 
4876
+ this.stylesheet = new Stylesheet();
4877
 
4878
+ this.stylesheet
4879
+ .addDevice( 'mobile', 0 )
4880
+ .addDevice( 'tablet', viewportBreakpoints.md )
4881
+ .addDevice( 'desktop', viewportBreakpoints.lg );
4882
+ },
4883
 
4884
+ addStyleRules: function( controls, values, controlsStack, placeholders, replacements ) {
4885
+ var self = this;
 
 
 
4886
 
4887
+ _.each( controls, function( control ) {
4888
+ if ( control.styleFields && control.styleFields.length ) {
4889
+ values[ control.name ].each( function( itemModel ) {
4890
+ self.addStyleRules(
4891
+ control.styleFields,
4892
+ itemModel.attributes,
4893
+ controlsStack,
4894
+ placeholders.concat( [ '{{CURRENT_ITEM}}' ] ),
4895
+ replacements.concat( [ '.elementor-repeater-item-' + itemModel.get( '_id' ) ] )
4896
+ );
4897
+ } );
4898
  }
4899
 
4900
+ self.addControlStyleRules( control, values, controlsStack, placeholders, replacements );
4901
+ } );
4902
+ },
 
 
4903
 
4904
+ addControlStyleRules: function( control, values, controlsStack, placeholders, replacements ) {
4905
+ var self = this;
4906
 
4907
+ ControlsCSSParser.addControlStyleRules( self.stylesheet, control, controlsStack, function( control ) {
4908
+ return self.getStyleControlValue( control, values );
4909
+ }, placeholders, replacements );
4910
+ },
4911
 
4912
+ getStyleControlValue: function( control, values ) {
4913
+ var value = values[ control.name ];
4914
+
4915
+ if ( control.selectors_dictionary ) {
4916
+ value = control.selectors_dictionary[ value ] || value;
4917
  }
4918
 
4919
+ if ( ! _.isNumber( value ) && _.isEmpty( value ) ) {
4920
+ return;
4921
+ }
 
 
 
 
 
4922
 
4923
+ return value;
4924
+ },
 
 
4925
 
4926
+ addStyleToDocument: function() {
4927
+ elementor.$previewContents.find( 'head' ).append( this.elements.$stylesheetElement );
 
 
 
 
 
 
 
4928
 
4929
+ this.elements.$stylesheetElement.text( this.stylesheet );
4930
+ },
4931
 
4932
+ removeStyleFromDocument: function() {
4933
+ this.elements.$stylesheetElement.remove();
4934
+ },
4935
 
4936
+ onInit: function() {
4937
+ ViewModule.prototype.onInit.apply( this, arguments );
4938
 
4939
+ this.initStylesheet();
4940
+ }
4941
+ } );
4942
 
4943
+ ControlsCSSParser.addControlStyleRules = function( stylesheet, control, controlsStack, valueCallback, placeholders, replacements ) {
4944
+ var value = valueCallback( control );
 
 
 
 
4945
 
4946
+ if ( undefined === value ) {
4947
+ return;
4948
+ }
4949
 
4950
+ _.each( control.selectors, function( cssProperty, selector ) {
4951
+ var outputCssProperty;
 
 
4952
 
4953
+ try {
4954
+ outputCssProperty = cssProperty.replace( /{{(?:([^.}]+)\.)?([^}]*)}}/g, function( originalPhrase, controlName, placeholder ) {
4955
+ var parserControl = control,
4956
+ valueToInsert = value;
4957
 
4958
+ if ( controlName ) {
4959
+ parserControl = _.findWhere( controlsStack, { name: controlName } );
 
 
4960
 
4961
+ if ( ! parserControl ) {
4962
+ return '';
4963
+ }
4964
 
4965
+ valueToInsert = valueCallback( parserControl );
4966
+ }
4967
 
4968
+ var parsedValue = elementor.getControlView( parserControl.type ).getStyleValue( placeholder.toLowerCase(), valueToInsert );
 
 
 
 
4969
 
4970
+ if ( '' === parsedValue ) {
4971
+ throw '';
4972
+ }
4973
 
4974
+ return parsedValue;
4975
+ } );
4976
+ } catch ( e ) {
4977
  return;
4978
  }
4979
 
4980
+ if ( _.isEmpty( outputCssProperty ) ) {
4981
+ return;
4982
+ }
 
4983
 
4984
+ var devicePattern = /^(?:\([^)]+\)){1,2}/,
4985
+ deviceRules = selector.match( devicePattern ),
4986
+ query = {};
 
4987
 
4988
+ if ( deviceRules ) {
4989
+ deviceRules = deviceRules[0];
4990
 
4991
+ selector = selector.replace( devicePattern, '' );
 
 
 
 
 
 
 
 
 
 
4992
 
4993
+ var pureDevicePattern = /\(([^)]+)\)/g,
4994
+ pureDeviceRules = [],
4995
+ matches;
 
 
4996
 
4997
+ while ( matches = pureDevicePattern.exec( deviceRules ) ) {
4998
+ pureDeviceRules.push( matches[1] );
4999
+ }
 
 
 
 
 
 
 
5000
 
5001
+ _.each( pureDeviceRules, function( deviceRule ) {
5002
+ if ( 'desktop' === deviceRule ) {
5003
+ return;
5004
+ }
5005
 
5006
+ var device = deviceRule.replace( /\+$/, '' ),
5007
+ endPoint = device === deviceRule ? 'max' : 'min';
 
5008
 
5009
+ query[ endPoint ] = device;
5010
+ } );
5011
+ }
5012
 
5013
+ _.each( placeholders, function( placeholder, index ) {
5014
+ // Check if it's a RegExp
5015
+ var regexp = placeholder.source ? placeholder.source : placeholder,
5016
+ placeholderPattern = new RegExp( regexp, 'g' );
 
5017
 
5018
+ selector = selector.replace( placeholderPattern, replacements[ index ] );
5019
+ } );
 
 
 
5020
 
5021
+ if ( ! Object.keys( query ).length && control.responsive ) {
5022
+ query = elementor.helpers.cloneObject( control.responsive );
 
5023
 
5024
+ if ( 'desktop' === query.max ) {
5025
+ delete query.max;
5026
  }
5027
+ }
 
 
 
 
 
 
 
 
 
 
 
5028
 
5029
+ stylesheet.addRules( selector, outputCssProperty, query );
5030
+ } );
5031
+ };
5032
 
5033
+ module.exports = ControlsCSSParser;
 
5034
 
5035
+ },{"elementor-editor-utils/stylesheet":80,"elementor-utils/view-module":123}],71:[function(require,module,exports){
5036
+ var Debug = function() {
5037
+ var self = this,
5038
+ errorStack = [],
5039
+ settings = {},
5040
+ elements = {};
5041
 
5042
+ var initSettings = function() {
5043
+ settings = {
5044
+ debounceDelay: 500,
5045
+ urlsToWatch: [
5046
+ 'elementor/assets'
5047
+ ]
5048
  };
 
 
5049
  };
5050
 
5051
+ var initElements = function() {
5052
+ elements.$window = jQuery( window );
5053
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5054
 
5055
+ var onError = function( event ) {
5056
+ var originalEvent = event.originalEvent,
5057
+ error = originalEvent.error;
5058
 
5059
+ if ( ! error ) {
5060
+ return;
5061
+ }
5062
 
5063
+ var isInWatchList = false,
5064
+ urlsToWatch = settings.urlsToWatch;
 
5065
 
5066
+ jQuery.each( urlsToWatch, function() {
5067
+ if ( -1 !== error.stack.indexOf( this ) ) {
5068
+ isInWatchList = true;
5069
 
 
5070
  return false;
5071
  }
5072
+ } );
5073
 
5074
+ if ( ! isInWatchList ) {
5075
+ return;
5076
+ }
 
 
 
 
 
 
5077
 
5078
+ self.addError( {
5079
+ type: error.name,
5080
+ message: error.message,
5081
+ url: originalEvent.filename,
5082
+ line: originalEvent.lineno,
5083
+ column: originalEvent.colno
5084
+ } );
5085
+ };
5086
 
5087
+ var bindEvents = function() {
5088
+ elements.$window.on( 'error', onError );
5089
+ };
5090
 
5091
+ var init = function() {
5092
+ initSettings();
 
5093
 
5094
+ initElements();
 
 
 
 
5095
 
5096
+ bindEvents();
 
5097
 
5098
+ self.sendErrors = _.debounce( self.sendErrors, settings.debounceDelay );
5099
+ };
 
 
5100
 
5101
+ this.addURLToWatch = function( url ) {
5102
+ settings.urlsToWatch.push( url );
5103
+ };
5104
 
5105
+ this.addCustomError = function( error, category, tag ) {
5106
+ var errorInfo = {
5107
+ type: error.name,
5108
+ message: error.message,
5109
+ url: error.fileName || error.sourceURL,
5110
+ line: error.lineNumber || error.line,
5111
+ column: error.columnNumber || error.column,
5112
+ customFields: {
5113
+ category: category || 'general',
5114
+ tag: tag
5115
  }
5116
+ };
5117
 
5118
+ if ( ! errorInfo.url ) {
5119
+ var stackInfo = error.stack.match( /\n {4}at (.*?(?=:(\d+):(\d+)))/ );
5120
 
5121
+ if ( stackInfo ) {
5122
+ errorInfo.url = stackInfo[1];
5123
+ errorInfo.line = stackInfo[2];
5124
+ errorInfo.column = stackInfo[3];
5125
  }
5126
+ }
5127
 
5128
+ this.addError( errorInfo );
5129
+ };
5130
 
5131
+ this.addError = function( errorParams ) {
5132
+ var defaultParams = {
5133
+ type: 'Error',
5134
+ timestamp: Math.floor( new Date().getTime() / 1000 ),
5135
+ message: null,
5136
+ url: null,
5137
+ line: null,
5138
+ column: null,
5139
+ customFields: {}
5140
  };
5141
 
5142
+ errorStack.push( jQuery.extend( true, defaultParams, errorParams ) );
 
 
 
5143
 
5144
+ self.sendErrors();
5145
+ };
5146
 
5147
+ this.sendErrors = function() {
5148
+ // Avoid recursions on errors in ajax
5149
+ elements.$window.off( 'error', onError );
5150
 
5151
+ jQuery.ajax( {
5152
+ url: ElementorConfig.ajaxurl,
5153
+ method: 'POST',
5154
+ data: {
5155
+ action: 'elementor_debug_log',
5156
+ data: errorStack
5157
+ },
5158
+ success: function() {
5159
+ errorStack = [];
5160
 
5161
+ // Restore error handler
5162
+ elements.$window.on( 'error', onError );
5163
+ }
5164
+ } );
5165
+ };
5166
 
5167
+ init();
5168
+ };
5169
 
5170
+ module.exports = new Debug();
5171
 
5172
+ },{}],72:[function(require,module,exports){
5173
+ var heartbeat;
 
5174
 
5175
+ heartbeat = {
 
 
5176
 
5177
+ init: function() {
5178
+ var modal;
5179
 
5180
+ this.getModal = function() {
5181
+ if ( ! modal ) {
5182
+ modal = this.initModal();
5183
+ }
5184
 
5185
+ return modal;
5186
+ };
5187
+
5188
+ Backbone.$( document ).on( {
5189
+ 'heartbeat-send': function( event, data ) {
5190
+ data.elementor_post_lock = {
5191
+ post_ID: elementor.config.post_id
5192
+ };
5193
+ },
5194
+ 'heartbeat-tick': function( event, response ) {
5195
+ if ( response.locked_user ) {
5196
+ if ( elementor.isEditorChanged() ) {
5197
+ elementor.saveEditor( { status: 'autosave' } );
5198
  }
 
5199
 
5200
+ heartbeat.showLockMessage( response.locked_user );
5201
+ } else {
5202
+ heartbeat.getModal().hide();
5203
  }
5204
+
5205
+ elementor.config.nonce = response.elementor_nonce;
5206
  }
5207
+ } );
5208
 
5209
+ if ( elementor.config.locked_user ) {
5210
+ heartbeat.showLockMessage( elementor.config.locked_user );
5211
+ }
5212
+ },
5213
 
5214
+ initModal: function() {
5215
+ var modal = elementor.dialogsManager.createWidget( 'options', {
5216
+ headerMessage: elementor.translate( 'take_over' )
5217
+ } );
5218
 
5219
+ modal.addButton( {
5220
+ name: 'go_back',
5221
+ text: elementor.translate( 'go_back' ),
5222
+ callback: function() {
5223
+ parent.history.go( -1 );
5224
  }
5225
+ } );
5226
 
5227
+ modal.addButton( {
5228
+ name: 'take_over',
5229
+ text: elementor.translate( 'take_over' ),
5230
+ callback: function() {
5231
+ wp.heartbeat.enqueue( 'elementor_force_post_lock', true );
5232
+ wp.heartbeat.connectNow();
 
 
5233
  }
5234
+ } );
5235
 
5236
+ return modal;
5237
+ },
5238
 
5239
+ showLockMessage: function( lockedUser ) {
5240
+ var modal = heartbeat.getModal();
5241
 
5242
+ modal
5243
+ .setMessage( elementor.translate( 'dialog_user_taken_over', [ lockedUser ] ) )
5244
+ .show();
5245
+ }
5246
+ };
5247
 
5248
+ module.exports = heartbeat;
 
5249
 
5250
+ },{}],73:[function(require,module,exports){
5251
+ var helpers;
5252
 
5253
+ helpers = {
5254
+ _enqueuedFonts: [],
5255
+
5256
+ elementsHierarchy: {
5257
+ section: {
5258
+ column: {
5259
+ widget: null,
5260
+ section: null
5261
  }
5262
+ }
5263
+ },
5264
 
5265
+ enqueueFont: function( font ) {
5266
+ if ( -1 !== this._enqueuedFonts.indexOf( font ) ) {
5267
+ return;
5268
+ }
5269
 
5270
+ var fontType = elementor.config.controls.font.fonts[ font ],
5271
+ fontUrl,
5272
 
5273
+ subsets = {
5274
+ 'ru_RU': 'cyrillic',
5275
+ 'uk': 'cyrillic',
5276
+ 'bg_BG': 'cyrillic',
5277
+ 'vi': 'vietnamese',
5278
+ 'el': 'greek',
5279
+ 'he_IL': 'hebrew'
5280
+ };
5281
 
5282
+ switch ( fontType ) {
5283
+ case 'googlefonts' :
5284
+ fontUrl = 'https://fonts.googleapis.com/css?family=' + font + ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';
 
5285
 
5286
+ if ( subsets[ elementor.config.locale ] ) {
5287
+ fontUrl += '&subset=' + subsets[ elementor.config.locale ];
5288
+ }
5289
 
5290
+ break;
 
 
5291
 
5292
+ case 'earlyaccess' :
5293
+ var fontLowerString = font.replace( /\s+/g, '' ).toLowerCase();
5294
+ fontUrl = 'https://fonts.googleapis.com/earlyaccess/' + fontLowerString + '.css';
5295
+ break;
5296
+ }
5297
 
5298
+ if ( ! _.isEmpty( fontUrl ) ) {
5299
+ elementor.$previewContents.find( 'link:last' ).after( '<link href="' + fontUrl + '" rel="stylesheet" type="text/css">' );
5300
+ }
5301
+ this._enqueuedFonts.push( font );
5302
+ },
5303
 
5304
+ getElementChildType: function( elementType, container ) {
5305
+ if ( ! container ) {
5306
+ container = this.elementsHierarchy;
5307
+ }
5308
 
5309
+ if ( undefined !== container[ elementType ] ) {
5310
 
5311
+ if ( Backbone.$.isPlainObject( container[ elementType ] ) ) {
5312
+ return Object.keys( container[ elementType ] );
5313
  }
5314
 
5315
+ return null;
5316
+ }
 
 
5317
 
5318
+ for ( var type in container ) {
 
5319
 
5320
+ if ( ! container.hasOwnProperty( type ) ) {
5321
+ continue;
 
 
 
 
 
5322
  }
5323
 
5324
+ if ( ! Backbone.$.isPlainObject( container[ type ] ) ) {
5325
+ continue;
 
 
 
 
 
 
 
 
5326
  }
5327
 
5328
+ var result = this.getElementChildType( elementType, container[ type ] );
5329
 
5330
+ if ( result ) {
5331
+ return result;
5332
  }
5333
+ }
 
 
 
 
 
 
 
 
 
 
 
5334
 
5335
+ return null;
5336
+ },
5337
 
5338
+ getUniqueID: function() {
5339
+ var id;
5340
 
5341
+ // TODO: Check conflict models
5342
+ //while ( true ) {
5343
+ id = Math.random().toString( 36 ).substr( 2, 7 );
5344
+ //if ( 1 > $( 'li.item-id-' + id ).length ) {
5345
+ return id;
5346
+ //}
5347
+ //}
5348
+ },
5349
 
5350
+ stringReplaceAll: function( string, replaces ) {
5351
+ var re = new RegExp( Object.keys( replaces ).join( '|' ), 'gi' );
5352
 
5353
+ return string.replace( re, function( matched ) {
5354
+ return replaces[ matched ];
5355
+ } );
5356
+ },
5357
 
5358
+ isActiveControl: function( controlModel, values ) {
5359
+ var condition;
5360
 
5361
+ // TODO: Better way to get this?
5362
+ if ( _.isFunction( controlModel.get ) ) {
5363
+ condition = controlModel.get( 'condition' );
5364
+ } else {
5365
+ condition = controlModel.condition;
5366
+ }
 
5367
 
5368
+ // Repeater items conditions
5369
+ if ( controlModel.conditions ) {
5370
+ return elementor.conditions.check( controlModel.conditions, values );
5371
+ }
5372
 
5373
+ if ( _.isEmpty( condition ) ) {
5374
+ return true;
5375
+ }
 
5376
 
5377
+ var hasFields = _.filter( condition, function( conditionValue, conditionName ) {
5378
+ var conditionNameParts = conditionName.match( /([a-z_0-9]+)(?:\[([a-z_]+)])?(!?)$/i ),
5379
+ conditionRealName = conditionNameParts[1],
5380
+ conditionSubKey = conditionNameParts[2],
5381
+ isNegativeCondition = !! conditionNameParts[3],
5382
+ controlValue = values[ conditionRealName ];
5383
 
5384
+ if ( conditionSubKey ) {
5385
+ controlValue = controlValue[ conditionSubKey ];
5386
+ }
5387
 
5388
+ // If it's a non empty array - check if the conditionValue contains the controlValue,
5389
+ // If the controlValue is a non empty array - check if the controlValue contains the conditionValue
5390
+ // otherwise check if they are equal. ( and give the ability to check if the value is an empty array )
5391
+ var isContains;
5392
+ if ( _.isArray( conditionValue ) && ! _.isEmpty( conditionValue ) ) {
5393
+ isContains = _.contains( conditionValue, controlValue );
5394
+ } else if ( _.isArray( controlValue ) && ! _.isEmpty( controlValue ) ) {
5395
+ isContains = _.contains( controlValue, conditionValue );
5396
+ } else {
5397
+ isContains = _.isEqual( conditionValue, controlValue );
5398
+ }
5399
 
5400
+ return isNegativeCondition ? isContains : ! isContains;
5401
+ } );
5402
 
5403
+ return _.isEmpty( hasFields );
5404
+ },
5405
 
5406
+ cloneObject: function( object ) {
5407
+ return JSON.parse( JSON.stringify( object ) );
5408
+ },
5409
 
5410
+ disableElementEvents: function( $element ) {
5411
+ $element.each( function() {
5412
+ var currentPointerEvents = this.style.pointerEvents;
5413
 
5414
+ if ( 'none' === currentPointerEvents ) {
5415
+ return;
5416
+ }
5417
 
5418
+ Backbone.$( this )
5419
+ .data( 'backup-pointer-events', currentPointerEvents )
5420
+ .css( 'pointer-events', 'none' );
5421
+ } );
5422
+ },
5423
 
5424
+ enableElementEvents: function( $element ) {
5425
+ $element.each( function() {
5426
+ var $this = Backbone.$( this ),
5427
+ backupPointerEvents = $this.data( 'backup-pointer-events' );
5428
 
5429
+ if ( undefined === backupPointerEvents ) {
5430
+ return;
5431
+ }
 
 
 
 
 
5432
 
5433
+ $this
5434
+ .removeData( 'backup-pointer-events' )
5435
+ .css( 'pointer-events', backupPointerEvents );
5436
+ } );
5437
+ },
5438
 
5439
+ getColorPickerPaletteIndex: function( paletteKey ) {
5440
+ return [ '7', '8', '1', '5', '2', '3', '6', '4' ].indexOf( paletteKey );
5441
+ },
 
 
 
 
 
 
 
 
5442
 
5443
+ wpColorPicker: function( $element, options ) {
5444
+ var self = this,
5445
+ colorPickerScheme = elementor.schemes.getScheme( 'color-picker' ),
5446
+ items = _.sortBy( colorPickerScheme.items, function( item ) {
5447
+ return self.getColorPickerPaletteIndex( item.key );
5448
+ } ),
5449
+ defaultOptions = {
5450
+ width: window.innerWidth >= 1440 ? 271 : 251,
5451
+ palettes: _.pluck( items, 'value' )
5452
+ };
5453
 
5454
+ if ( options ) {
5455
+ _.extend( defaultOptions, options );
5456
+ }
 
5457
 
5458
+ return $element.wpColorPicker( defaultOptions );
5459
+ }
5460
+ };
5461
 
5462
+ module.exports = helpers;
5463
 
5464
+ },{}],74:[function(require,module,exports){
5465
+ var ImagesManager;
5466
 
5467
+ ImagesManager = function() {
5468
+ var self = this;
 
 
 
 
5469
 
5470
+ var cache = {};
 
5471
 
5472
+ var debounceDelay = 300;
5473
 
5474
+ var registeredItems = [];
 
 
 
 
 
 
 
 
 
 
5475
 
5476
+ var getNormalizedSize = function( image ) {
5477
+ var size,
5478
+ imageSize = image.size;
5479
 
5480
+ if ( 'custom' === imageSize ) {
5481
+ var customDimension = image.dimension;
5482
+
5483
+ if ( customDimension.width || customDimension.height ) {
5484
+ size = 'custom_' + customDimension.width + 'x' + customDimension.height;
5485
+ } else {
5486
+ return 'full';
5487
  }
5488
+ } else {
5489
+ size = imageSize;
5490
+ }
5491
 
5492
+ return size;
5493
+ };
5494
 
5495
+ self.onceTriggerChange = _.once( function( model ) {
5496
+ window.setTimeout( function() {
5497
+ model.get( 'settings' ).trigger( 'change' );
5498
+ }, 700 );
5499
+ } );
5500
 
5501
+ self.getImageUrl = function( image ) {
5502
+ // Register for AJAX checking
5503
+ self.registerItem( image );
5504
 
5505
+ var imageUrl = self.getItem( image );
 
 
5506
 
5507
+ // If it's not in cache, like a new dropped widget or a custom size - get from settings
5508
+ if ( ! imageUrl ) {
5509
 
5510
+ if ( 'custom' === image.size ) {
 
5511
 
5512
+ if ( elementor.getPanelView() && 'editor' === elementor.getPanelView().currentPageName && image.model ) {
5513
+ // Trigger change again, so it's will load from the cache
5514
+ self.onceTriggerChange( image.model );
5515
+ }
5516
 
5517
+ return ;
5518
+ }
5519
 
5520
+ // If it's a new dropped widget
5521
+ imageUrl = image.url;
5522
+ }
 
 
 
 
 
 
 
5523
 
5524
+ return imageUrl;
5525
+ };
5526
 
5527
+ self.getItem = function( image ) {
5528
+ var size = getNormalizedSize( image ),
5529
+ id = image.id;
5530
 
5531
+ if ( ! size ) {
5532
+ return false;
5533
+ }
5534
 
5535
+ if ( cache[ id ] && cache[ id ][ size ] ) {
5536
+ return cache[ id ][ size ];
5537
+ }
5538
 
5539
+ return false;
5540
+ };
5541
 
5542
+ self.registerItem = function( image ) {
5543
+ if ( '' === image.id ) {
5544
+ // It's a new dropped widget
5545
+ return;
5546
+ }
5547
 
5548
+ if ( self.getItem( image ) ) {
5549
+ // It's already in cache
5550
+ return;
5551
+ }
5552
 
5553
+ registeredItems.push( image );
 
5554
 
5555
+ self.debounceGetRemoteItems();
5556
+ };
5557
 
5558
+ self.getRemoteItems = function() {
5559
+ var requestedItems = [],
5560
+ registeredItemsLength = Object.keys( registeredItems ).length,
5561
+ image,
5562
+ index;
5563
 
5564
+ // It's one item, so we can render it from remote server
5565
+ if ( 0 === registeredItemsLength ) {
5566
+ return;
5567
+ } else if ( 1 === registeredItemsLength ) {
5568
+ for ( index in registeredItems ) {
5569
+ image = registeredItems[ index ];
5570
+ break;
5571
  }
5572
 
5573
+ if ( image && image.model ) {
5574
+ image.model.renderRemoteServer();
5575
+ return;
5576
+ }
5577
+ }
5578
 
5579
+ for ( index in registeredItems ) {
5580
+ image = registeredItems[ index ];
5581
 
5582
+ var size = getNormalizedSize( image ),
5583
+ id = image.id,
5584
+ isFirstTime = ! cache[ id ] || 0 === Object.keys( cache[ id ] ).length;
5585
 
5586
+ requestedItems.push( {
5587
+ id: id,
5588
+ size: size,
5589
+ is_first_time: isFirstTime
5590
+ } );
5591
+ }
5592
 
5593
+ window.elementor.ajax.send(
5594
+ 'get_images_details', {
5595
+ data: {
5596
+ items: requestedItems
5597
+ },
5598
+ success: function( data ) {
5599
+ var id,
5600
+ size;
5601
 
5602
+ for ( id in data ) {
5603
+ if ( ! cache[ id ] ) {
5604
+ cache[ id ] = {};
5605
+ }
5606
 
5607
+ for ( size in data[ id ] ) {
5608
+ cache[ id ][ size ] = data[ id ][ size ];
5609
+ }
5610
+ }
5611
+ registeredItems = [];
5612
+ }
5613
+ }
5614
+ );
5615
+ };
5616
 
5617
+ self.debounceGetRemoteItems = _.debounce( self.getRemoteItems, debounceDelay );
 
5618
  };
5619
 
5620
+ module.exports = new ImagesManager();
5621
 
5622
+ },{}],75:[function(require,module,exports){
5623
+ var Introduction;
 
 
5624
 
5625
+ Introduction = function() {
5626
  var self = this,
5627
+ modal;
 
 
 
 
 
 
 
 
 
5628
 
5629
+ var initModal = function() {
5630
+ modal = elementor.dialogsManager.createWidget( 'lightbox', {
5631
+ id: 'elementor-introduction',
5632
+ closeButton: true,
5633
+ closeButtonClass: 'eicon-close'
5634
+ } );
5635
 
5636
+ modal.getElements( 'closeButton' ).on( 'click', function() {
5637
+ self.setIntroductionViewed();
5638
+ } );
5639
 
5640
+ modal.on( 'hide', function() {
5641
+ modal.getElements( 'message' ).empty(); // In order to stop the video
5642
+ } );
5643
  };
5644
 
5645
+ this.getSettings = function() {
5646
+ return elementor.config.introduction;
 
 
5647
  };
5648
 
5649
+ this.getModal = function() {
5650
+ if ( ! modal ) {
5651
+ initModal();
5652
+ }
 
 
 
5653
 
5654
+ return modal;
 
 
 
5655
  };
5656
 
5657
+ this.startIntroduction = function() {
5658
+ var settings = this.getSettings();
 
 
5659
 
5660
+ this.getModal()
5661
+ .setHeaderMessage( settings.title )
5662
+ .setMessage( settings.content )
5663
+ .show();
5664
  };
5665
 
5666
+ this.startOnLoadIntroduction = function() {
5667
+ var settings = this.getSettings();
 
 
 
5668
 
5669
+ if ( ! settings.is_user_should_view ) {
5670
+ return;
5671
+ }
5672
 
5673
+ setTimeout( _.bind( function() {
5674
+ this.startIntroduction();
5675
+ }, this ), settings.delay );
5676
  };
5677
 
5678
+ this.setIntroductionViewed = function() {
5679
+ elementor.ajax.send( 'introduction_viewed' );
5680
  };
5681
+ };
5682
 
5683
+ module.exports = new Introduction();
 
 
 
5684
 
5685
+ },{}],76:[function(require,module,exports){
5686
+ /**
5687
+ * HTML5 - Drag and Drop
5688
+ */
5689
+ ;(function( $ ) {
5690
 
5691
+ var hasFullDataTransferSupport = function( event ) {
5692
+ try {
5693
+ event.originalEvent.dataTransfer.setData( 'test', 'test' );
5694
 
5695
+ event.originalEvent.dataTransfer.clearData( 'test' );
5696
 
5697
+ return true;
5698
+ } catch ( e ) {
5699
+ return false;
5700
  }
 
 
5701
  };
5702
 
5703
+ var Draggable = function( userSettings ) {
5704
+ var self = this,
5705
+ settings = {},
5706
+ elementsCache = {},
5707
+ defaultSettings = {
5708
+ element: '',
5709
+ groups: null,
5710
+ onDragStart: null,
5711
+ onDragEnd: null
5712
+ };
5713
 
5714
+ var initSettings = function() {
5715
+ $.extend( true, settings, defaultSettings, userSettings );
5716
+ };
5717
 
5718
+ var initElementsCache = function() {
5719
+ elementsCache.$element = $( settings.element );
5720
+ };
 
 
 
5721
 
5722
+ var buildElements = function() {
5723
+ elementsCache.$element.attr( 'draggable', true );
5724
+ };
5725
 
5726
+ var onDragEnd = function( event ) {
5727
+ if ( $.isFunction( settings.onDragEnd ) ) {
5728
+ settings.onDragEnd.call( elementsCache.$element, event, self );
5729
+ }
5730
+ };
5731
 
5732
+ var onDragStart = function( event ) {
5733
+ var groups = settings.groups || [],
5734
+ dataContainer = {
5735
+ groups: groups
5736
+ };
5737
 
5738
+ if ( hasFullDataTransferSupport( event ) ) {
5739
+ event.originalEvent.dataTransfer.setData( JSON.stringify( dataContainer ), true );
5740
+ }
5741
 
5742
+ if ( $.isFunction( settings.onDragStart ) ) {
5743
+ settings.onDragStart.call( elementsCache.$element, event, self );
 
 
 
 
 
5744
  }
5745
+ };
 
5746
 
5747
+ var attachEvents = function() {
5748
+ elementsCache.$element
5749
+ .on( 'dragstart', onDragStart )
5750
+ .on( 'dragend', onDragEnd );
5751
+ };
5752
 
5753
+ var init = function() {
5754
+ initSettings();
5755
 
5756
+ initElementsCache();
 
5757
 
5758
+ buildElements();
 
 
 
 
5759
 
5760
+ attachEvents();
5761
+ };
 
 
5762
 
5763
+ this.destroy = function() {
5764
+ elementsCache.$element.off( 'dragstart', onDragStart );
 
5765
 
5766
+ elementsCache.$element.removeAttr( 'draggable' );
5767
  };
5768
 
5769
+ init();
5770
+ };
5771
 
5772
+ var Droppable = function( userSettings ) {
5773
+ var self = this,
5774
+ settings = {},
5775
+ elementsCache = {},
5776
+ currentElement,
5777
+ currentSide,
5778
+ defaultSettings = {
5779
+ element: '',
5780
+ items: '>',
5781
+ horizontalSensitivity: '10%',
5782
+ axis: [ 'vertical', 'horizontal' ],
5783
+ placeholder: true,
5784
+ currentElementClass: 'html5dnd-current-element',
5785
+ placeholderClass: 'html5dnd-placeholder',
5786
+ hasDraggingOnChildClass: 'html5dnd-has-dragging-on-child',
5787
+ groups: null,
5788
+ isDroppingAllowed: null,
5789
+ onDragEnter: null,
5790
+ onDragging: null,
5791
+ onDropping: null,
5792
+ onDragLeave: null
5793
+ };
5794
 
5795
+ var initSettings = function() {
5796
+ $.extend( settings, defaultSettings, userSettings );
5797
  };
5798
 
5799
+ var initElementsCache = function() {
5800
+ elementsCache.$element = $( settings.element );
 
 
5801
 
5802
+ elementsCache.$placeholder = $( '<div>', { 'class': settings.placeholderClass } );
5803
+ };
 
 
5804
 
5805
+ var hasHorizontalDetection = function() {
5806
+ return -1 !== settings.axis.indexOf( 'horizontal' );
5807
+ };
5808
 
5809
+ var hasVerticalDetection = function() {
5810
+ return -1 !== settings.axis.indexOf( 'vertical' );
5811
  };
5812
 
5813
+ var checkHorizontal = function( offsetX, elementWidth ) {
5814
+ var isPercentValue,
5815
+ sensitivity;
5816
 
5817
+ if ( ! hasHorizontalDetection() ) {
5818
+ return false;
5819
+ }
5820
 
5821
+ if ( ! hasVerticalDetection() ) {
5822
+ return offsetX > elementWidth / 2 ? 'right' : 'left';
5823
  }
5824
 
5825
+ sensitivity = settings.horizontalSensitivity.match( /\d+/ );
 
 
 
 
5826
 
5827
+ if ( ! sensitivity ) {
5828
+ return false;
5829
+ }
5830
 
5831
+ sensitivity = sensitivity[0];
 
5832
 
5833
+ isPercentValue = /%$/.test( settings.horizontalSensitivity );
 
5834
 
5835
+ if ( isPercentValue ) {
5836
+ sensitivity = elementWidth / sensitivity;
5837
+ }
5838
 
5839
+ if ( offsetX > elementWidth - sensitivity ) {
5840
+ return 'right';
5841
+ } else if ( offsetX < sensitivity ) {
5842
+ return 'left';
5843
+ }
5844
 
5845
+ return false;
5846
  };
5847
 
5848
+ var setSide = function( event ) {
5849
+ var $element = $( currentElement ),
5850
+ elementHeight = $element.outerHeight() - elementsCache.$placeholder.outerHeight(),
5851
+ elementWidth = $element.outerWidth();
 
 
 
5852
 
5853
+ event = event.originalEvent;
 
5854
 
5855
+ if ( currentSide = checkHorizontal( event.offsetX, elementWidth ) ) {
5856
+ return;
5857
+ }
5858
 
5859
+ if ( ! hasVerticalDetection() ) {
5860
+ currentSide = null;
5861
 
5862
+ return;
 
5863
  }
5864
 
5865
+ var elementPosition = currentElement.getBoundingClientRect();
 
 
 
5866
 
5867
+ currentSide = event.clientY > elementPosition.top + elementHeight / 2 ? 'bottom' : 'top';
5868
+ };
5869
 
5870
+ var insertPlaceholder = function() {
5871
+ if ( ! settings.placeholder ) {
5872
+ return;
5873
+ }
5874
 
5875
+ var insertMethod = 'top' === currentSide ? 'prependTo' : 'appendTo';
5876
 
5877
+ elementsCache.$placeholder[ insertMethod ]( currentElement );
5878
  };
5879
 
5880
+ var isDroppingAllowed = function( event ) {
5881
+ var dataTransferTypes,
5882
+ draggableGroups,
5883
+ isGroupMatch,
5884
+ isDroppingAllowed;
5885
 
5886
+ if ( settings.groups && hasFullDataTransferSupport( event ) ) {
5887
+ dataTransferTypes = event.originalEvent.dataTransfer.types;
5888
 
5889
+ isGroupMatch = false;
 
 
5890
 
5891
+ dataTransferTypes = Array.prototype.slice.apply( dataTransferTypes ); // Convert to array, since Firefox hold it as DOMStringList
 
 
5892
 
5893
+ dataTransferTypes.forEach( function( type ) {
5894
+ try {
5895
+ draggableGroups = JSON.parse( type );
5896
 
5897
+ if ( ! draggableGroups.groups.slice ) {
5898
+ return;
5899
+ }
5900
 
5901
+ settings.groups.forEach( function( groupName ) {
 
 
 
5902
 
5903
+ if ( -1 !== draggableGroups.groups.indexOf( groupName ) ) {
5904
+ isGroupMatch = true;
5905
 
5906
+ return false; // stops the forEach from extra loops
5907
+ }
5908
+ } );
5909
+ } catch ( e ) {
5910
+ }
5911
+ } );
5912
 
5913
+ if ( ! isGroupMatch ) {
5914
+ return false;
5915
+ }
5916
+ }
5917
 
5918
+ if ( $.isFunction( settings.isDroppingAllowed ) ) {
5919
 
5920
+ isDroppingAllowed = settings.isDroppingAllowed.call( currentElement, currentSide, event, self );
 
 
5921
 
5922
+ if ( ! isDroppingAllowed ) {
5923
+ return false;
 
 
5924
  }
 
 
5925
  }
5926
 
5927
+ return true;
 
 
5928
  };
5929
 
5930
+ var onDragEnter = function( event ) {
5931
+ event.stopPropagation();
 
5932
 
5933
+ if ( currentElement ) {
5934
+ return;
5935
+ }
 
5936
 
5937
+ currentElement = this;
 
5938
 
5939
+ elementsCache.$element.parents().each( function() {
5940
+ var droppableInstance = $( this ).data( 'html5Droppable' );
5941
 
5942
+ if ( ! droppableInstance ) {
5943
+ return;
5944
  }
5945
 
5946
+ droppableInstance.doDragLeave();
 
 
 
 
5947
  } );
5948
 
5949
+ setSide( event );
 
 
 
 
 
 
 
 
5950
 
5951
+ if ( ! isDroppingAllowed( event ) ) {
5952
+ return;
5953
  }
 
5954
 
5955
+ insertPlaceholder();
 
5956
 
5957
+ elementsCache.$element.addClass( settings.hasDraggingOnChildClass );
 
5958
 
5959
+ $( currentElement ).addClass( settings.currentElementClass );
5960
+
5961
+ if ( $.isFunction( settings.onDragEnter ) ) {
5962
+ settings.onDragEnter.call( currentElement, currentSide, event, self );
5963
  }
5964
+ };
5965
 
5966
+ var onDragOver = function( event ) {
5967
+ event.stopPropagation();
5968
 
5969
+ if ( ! currentElement ) {
5970
+ onDragEnter.call( this, event );
5971
+ }
5972
 
5973
+ var oldSide = currentSide;
 
 
5974
 
5975
+ setSide( event );
 
5976
 
5977
+ if ( ! isDroppingAllowed( event ) ) {
5978
+ return;
5979
+ }
5980
 
5981
+ event.preventDefault();
 
 
 
5982
 
5983
+ if ( oldSide !== currentSide ) {
5984
+ insertPlaceholder();
5985
+ }
5986
 
5987
+ if ( $.isFunction( settings.onDragging ) ) {
5988
+ settings.onDragging.call( this, currentSide, event, self );
5989
+ }
5990
+ };
5991
 
5992
+ var onDragLeave = function( event ) {
5993
+ var elementPosition = this.getBoundingClientRect();
5994
 
5995
+ if ( 'dragleave' === event.type && ! (
5996
+ event.clientX < elementPosition.left ||
5997
+ event.clientX >= elementPosition.right ||
5998
+ event.clientY < elementPosition.top ||
5999
+ event.clientY >= elementPosition.bottom
6000
+ ) ) {
6001
+ return;
6002
+ }
6003
 
6004
+ $( currentElement ).removeClass( settings.currentElementClass );
 
 
 
6005
 
6006
+ self.doDragLeave();
6007
+ };
6008
 
6009
+ var onDrop = function( event ) {
6010
+ setSide( event );
6011
 
6012
+ if ( ! isDroppingAllowed( event ) ) {
6013
+ return;
6014
+ }
6015
 
6016
+ event.preventDefault();
 
 
6017
 
6018
+ if ( $.isFunction( settings.onDropping ) ) {
6019
+ settings.onDropping.call( this, currentSide, event, self );
6020
+ }
6021
+ };
 
 
 
 
6022
 
6023
+ var attachEvents = function() {
6024
+ elementsCache.$element
6025
+ .on( 'dragenter', settings.items, onDragEnter )
6026
+ .on( 'dragover', settings.items, onDragOver )
6027
+ .on( 'drop', settings.items, onDrop )
6028
+ .on( 'dragleave drop', settings.items, onDragLeave );
6029
+ };
6030
 
6031
+ var init = function() {
6032
+ initSettings();
 
6033
 
6034
+ initElementsCache();
 
 
6035
 
6036
+ attachEvents();
6037
+ };
 
6038
 
6039
+ this.doDragLeave = function() {
6040
+ if ( settings.placeholder ) {
6041
+ elementsCache.$placeholder.remove();
6042
+ }
6043
 
6044
+ elementsCache.$element.removeClass( settings.hasDraggingOnChildClass );
 
 
6045
 
6046
+ if ( $.isFunction( settings.onDragLeave ) ) {
6047
+ settings.onDragLeave.call( currentElement, event, self );
 
 
6048
  }
6049
+
6050
+ currentElement = currentSide = null;
6051
  };
 
6052
 
6053
+ this.destroy = function() {
6054
+ elementsCache.$element
6055
+ .off( 'dragenter', settings.items, onDragEnter )
6056
+ .off( 'dragover', settings.items, onDragOver )
6057
+ .off( 'drop', settings.items, onDrop )
6058
+ .off( 'dragleave drop', settings.items, onDragLeave );
6059
+ };
6060
 
6061
+ init();
6062
+ };
 
6063
 
6064
+ var plugins = {
6065
+ html5Draggable: Draggable,
6066
+ html5Droppable: Droppable
6067
+ };
 
 
 
 
 
 
6068
 
6069
+ $.each( plugins, function( pluginName, Plugin ) {
6070
+ $.fn[ pluginName ] = function( options ) {
6071
+ options = options || {};
6072
 
6073
+ this.each( function() {
6074
+ var instance = $.data( this, pluginName ),
6075
+ hasInstance = instance instanceof Plugin;
 
6076
 
6077
+ if ( hasInstance ) {
 
 
 
 
 
 
 
6078
 
6079
+ if ( 'destroy' === options ) {
 
 
6080
 
6081
+ instance.destroy();
6082
 
6083
+ $.removeData( this, pluginName );
6084
+ }
6085
 
6086
+ return;
6087
+ }
6088
 
6089
+ options.element = this;
 
 
 
 
 
6090
 
6091
+ $.data( this, pluginName, new Plugin( options ) );
6092
+ } );
6093
+
6094
+ return this;
6095
+ };
6096
+ } );
6097
+ })( jQuery );
6098
 
6099
  },{}],77:[function(require,module,exports){
6100
+ /*!
6101
+ * jQuery Serialize Object v1.0.1
6102
+ */
6103
+ (function( $ ) {
6104
+ $.fn.elementorSerializeObject = function() {
6105
+ var serializedArray = this.serializeArray(),
6106
+ data = {};
6107
 
6108
+ var parseObject = function( dataContainer, key, value ) {
6109
+ var isArrayKey = /^[^\[\]]+\[]/.test( key ),
6110
+ isObjectKey = /^[^\[\]]+\[[^\[\]]+]/.test( key ),
6111
+ keyName = key.replace( /\[.*/, '' );
6112
 
6113
+ if ( isArrayKey ) {
6114
+ if ( ! dataContainer[ keyName ] ) {
6115
+ dataContainer[ keyName ] = [];
6116
+ }
6117
+ } else {
6118
+ if ( ! isObjectKey ) {
6119
+ if ( dataContainer.push ) {
6120
+ dataContainer.push( value );
6121
+ } else {
6122
+ dataContainer[ keyName ] = value;
6123
+ }
6124
 
6125
+ return;
6126
+ }
6127
 
6128
+ if ( ! dataContainer[ keyName ] ) {
6129
+ dataContainer[ keyName ] = {};
6130
+ }
6131
+ }
6132
 
6133
+ var nextKeys = key.match( /\[[^\[\]]*]/g );
 
 
6134
 
6135
+ nextKeys[ 0 ] = nextKeys[ 0 ].replace( /\[|]/g, '' );
 
6136
 
6137
+ return parseObject( dataContainer[ keyName ], nextKeys.join( '' ), value );
6138
+ };
6139
 
6140
+ $.each( serializedArray, function() {
6141
+ parseObject( data, this.name, this.value );
6142
+ } );
6143
+ return data;
6144
+ };
6145
+ })( jQuery );
6146
+
6147
+ },{}],78:[function(require,module,exports){
6148
+ var presetsFactory;
6149
+
6150
+ presetsFactory = {
6151
+
6152
+ getPresetsDictionary: function() {
6153
+ return {
6154
+ 11: 100 / 9,
6155
+ 12: 100 / 8,
6156
+ 14: 100 / 7,
6157
+ 16: 100 / 6,
6158
+ 33: 100 / 3,
6159
+ 66: 2 / 3 * 100,
6160
+ 83: 5 / 6 * 100
6161
+ };
6162
  },
6163
 
6164
+ getAbsolutePresetValues: function( preset ) {
6165
+ var clonedPreset = elementor.helpers.cloneObject( preset ),
6166
+ presetDictionary = this.getPresetsDictionary();
6167
+
6168
+ _.each( clonedPreset, function( unitValue, unitIndex ) {
6169
+ if ( presetDictionary[ unitValue ] ) {
6170
+ clonedPreset[ unitIndex ] = presetDictionary[ unitValue ];
6171
  }
6172
  } );
6173
+
6174
+ return clonedPreset;
6175
  },
6176
 
6177
+ getPresets: function( columnsCount, presetIndex ) {
6178
+ var presets = elementor.helpers.cloneObject( elementor.config.elements.section.presets );
6179
 
6180
+ if ( columnsCount ) {
6181
+ presets = presets[ columnsCount ];
6182
+ }
 
6183
 
6184
+ if ( presetIndex ) {
6185
+ presets = presets[ presetIndex ];
6186
+ }
6187
+
6188
+ return presets;
6189
  },
6190
 
6191
+ getPresetByStructure: function( structure ) {
6192
+ var parsedStructure = this.getParsedStructure( structure );
6193
 
6194
+ return this.getPresets( parsedStructure.columnsCount, parsedStructure.presetIndex );
6195
  },
6196
 
6197
+ getParsedStructure: function( structure ) {
6198
+ structure += ''; // Make sure this is a string
6199
 
6200
+ return {
6201
+ columnsCount: structure.slice( 0, -1 ),
6202
+ presetIndex: structure.substr( -1 )
6203
+ };
6204
  },
6205
 
6206
+ getPresetSVG: function( preset, svgWidth, svgHeight, separatorWidth ) {
6207
+ svgWidth = svgWidth || 100;
6208
+ svgHeight = svgHeight || 50;
6209
+ separatorWidth = separatorWidth || 2;
 
 
6210
 
6211
+ var absolutePresetValues = this.getAbsolutePresetValues( preset ),
6212
+ presetSVGPath = this._generatePresetSVGPath( absolutePresetValues, svgWidth, svgHeight, separatorWidth );
6213
 
6214
+ return this._createSVGPreset( presetSVGPath, svgWidth, svgHeight );
 
6215
  },
6216
 
6217
+ _createSVGPreset: function( presetPath, svgWidth, svgHeight ) {
6218
+ var svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );
 
6219
 
6220
+ svg.setAttributeNS( 'http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink' );
6221
+ svg.setAttribute( 'viewBox', '0 0 ' + svgWidth + ' ' + svgHeight );
6222
 
6223
+ var path = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' );
 
6224
 
6225
+ path.setAttribute( 'd', presetPath );
 
6226
 
6227
+ svg.appendChild( path );
 
6228
 
6229
+ return svg;
6230
+ },
6231
 
6232
+ _generatePresetSVGPath: function( preset, svgWidth, svgHeight, separatorWidth ) {
6233
+ var DRAW_SIZE = svgWidth - separatorWidth * ( preset.length - 1 );
6234
 
6235
+ var xPointer = 0,
6236
+ dOutput = '';
 
6237
 
6238
+ for ( var i = 0; i < preset.length; i++ ) {
6239
+ if ( i ) {
6240
+ dOutput += ' ';
6241
+ }
 
 
6242
 
6243
+ var increment = preset[ i ] / 100 * DRAW_SIZE;
 
6244
 
6245
+ xPointer += increment;
6246
 
6247
+ dOutput += 'M' + ( +xPointer.toFixed( 4 ) ) + ',0';
6248
 
6249
+ dOutput += 'V' + svgHeight;
 
 
6250
 
6251
+ dOutput += 'H' + ( +( xPointer - increment ).toFixed( 4 ) );
 
6252
 
6253
+ dOutput += 'V0Z';
6254
+
6255
+ xPointer += separatorWidth;
6256
  }
6257
 
6258
+ return dOutput;
6259
+ }
6260
+ };
 
 
6261
 
6262
+ module.exports = presetsFactory;
 
 
 
 
 
 
 
 
 
6263
 
6264
+ },{}],79:[function(require,module,exports){
6265
+ var Schemes,
6266
+ Stylesheet = require( 'elementor-editor-utils/stylesheet' ),
6267
+ ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' );
6268
 
6269
+ Schemes = function() {
6270
+ var self = this,
6271
+ stylesheet = new Stylesheet(),
6272
+ schemes = {},
6273
+ settings = {
6274
+ selectorWrapperPrefix: '.elementor-widget-'
6275
+ },
6276
+ elements = {};
6277
 
6278
+ var buildUI = function() {
6279
+ elements.$previewHead.append( elements.$style );
6280
+ };
6281
 
6282
+ var initElements = function() {
6283
+ elements.$style = Backbone.$( '<style>', {
6284
+ id: 'elementor-style-scheme'
6285
+ });
 
 
 
 
6286
 
6287
+ elements.$previewHead = elementor.$previewContents.find( 'head' );
6288
+ };
 
6289
 
6290
+ var initSchemes = function() {
6291
+ schemes = elementor.helpers.cloneObject( elementor.config.schemes.items );
6292
+ };
6293
 
6294
+ var fetchControlStyles = function( control, controlsStack, widgetType ) {
6295
+ ControlsCSSParser.addControlStyleRules( stylesheet, control, controlsStack, function( control ) {
6296
+ return self.getSchemeValue( control.scheme.type, control.scheme.value, control.scheme.key ).value;
6297
+ }, [ '{{WRAPPER}}' ], [ settings.selectorWrapperPrefix + widgetType ] );
6298
+ };
6299
 
6300
+ var fetchWidgetControlsStyles = function( widget ) {
6301
+ var widgetSchemeControls = self.getWidgetSchemeControls( widget );
 
 
 
 
 
6302
 
6303
+ _.each( widgetSchemeControls, function( control ) {
6304
+ fetchControlStyles( control, widgetSchemeControls, widget.widget_type );
6305
+ } );
6306
+ };
6307
 
6308
+ var fetchAllWidgetsSchemesStyle = function() {
6309
+ _.each( elementor.config.widgets, function( widget ) {
6310
+ fetchWidgetControlsStyles( widget );
6311
+ } );
6312
+ };
 
6313
 
6314
+ this.init = function() {
6315
+ initElements();
6316
+ buildUI();
6317
+ initSchemes();
6318
 
6319
+ return self;
6320
+ };
 
6321
 
6322
+ this.getWidgetSchemeControls = function( widget ) {
6323
+ return _.filter( widget.controls, function( control ) {
6324
+ return _.isObject( control.scheme );
6325
+ } );
6326
+ };
6327
 
6328
+ this.getSchemes = function() {
6329
+ return schemes;
6330
+ };
6331
 
6332
+ this.getEnabledSchemesTypes = function() {
6333
+ return elementor.config.schemes.enabled_schemes;
6334
+ };
6335
 
6336
+ this.getScheme = function( schemeType ) {
6337
+ return schemes[ schemeType ];
6338
+ };
6339
 
6340
+ this.getSchemeValue = function( schemeType, value, key ) {
6341
+ if ( this.getEnabledSchemesTypes().indexOf( schemeType ) < 0 ) {
6342
+ return false;
6343
+ }
6344
 
6345
+ var scheme = self.getScheme( schemeType ),
6346
+ schemeValue = scheme.items[ value ];
 
6347
 
6348
+ if ( key && _.isObject( schemeValue ) ) {
6349
+ var clonedSchemeValue = elementor.helpers.cloneObject( schemeValue );
6350
 
6351
+ clonedSchemeValue.value = schemeValue.value[ key ];
 
 
 
6352
 
6353
+ return clonedSchemeValue;
 
 
 
 
 
 
6354
  }
6355
 
6356
+ return schemeValue;
6357
+ };
 
 
 
6358
 
6359
+ this.printSchemesStyle = function() {
6360
+ stylesheet.empty();
6361
 
6362
+ fetchAllWidgetsSchemesStyle();
6363
 
6364
+ elements.$style.text( stylesheet );
6365
+ };
 
6366
 
6367
+ this.resetSchemes = function( schemeName ) {
6368
+ schemes[ schemeName ] = elementor.helpers.cloneObject( elementor.config.schemes.items[ schemeName ] );
6369
+ };
6370
 
6371
+ this.saveScheme = function( schemeName ) {
6372
+ elementor.config.schemes.items[ schemeName ].items = elementor.helpers.cloneObject( schemes[ schemeName ].items );
6373
 
6374
+ var itemsToSave = {};
 
6375
 
6376
+ _.each( schemes[ schemeName ].items, function( item, key ) {
6377
+ itemsToSave[ key ] = item.value;
6378
+ } );
6379
 
6380
+ NProgress.start();
 
 
6381
 
6382
+ elementor.ajax.send( 'apply_scheme', {
6383
+ data: {
6384
+ scheme_name: schemeName,
6385
+ data: JSON.stringify( itemsToSave )
6386
+ },
6387
+ success: function() {
6388
+ NProgress.done();
6389
+ }
6390
+ } );
6391
+ };
6392
 
6393
+ this.setSchemeValue = function( schemeName, itemKey, value ) {
6394
+ schemes[ schemeName ].items[ itemKey ].value = value;
6395
+ };
6396
+ };
6397
 
6398
+ module.exports = new Schemes();
 
 
6399
 
6400
+ },{"elementor-editor-utils/controls-css-parser":70,"elementor-editor-utils/stylesheet":80}],80:[function(require,module,exports){
6401
+ ( function( $ ) {
 
6402
 
6403
+ var Stylesheet = function() {
6404
+ var self = this,
6405
+ rules = {},
6406
+ rawCSS = {},
6407
+ devices = {};
6408
 
6409
+ var getDeviceMaxValue = function( deviceName ) {
6410
+ var deviceNames = Object.keys( devices ),
6411
+ deviceNameIndex = deviceNames.indexOf( deviceName ),
6412
+ nextIndex = deviceNameIndex + 1;
6413
 
6414
+ if ( nextIndex >= deviceNames.length ) {
6415
+ throw new RangeError( 'Max value for this device is out of range.' );
6416
  }
6417
 
6418
+ return devices[ deviceNames[ nextIndex ] ] - 1;
6419
+ };
 
6420
 
6421
+ var queryToHash = function( query ) {
6422
+ var hash = [];
 
 
6423
 
6424
+ $.each( query, function( endPoint ) {
6425
+ hash.push( endPoint + '_' + this );
6426
+ } );
6427
 
6428
+ return hash.join( '-' );
6429
+ };
6430
 
6431
+ var hashToQuery = function( hash ) {
6432
+ var query = {};
6433
 
6434
+ hash = hash.split( '-' ).filter( String );
6435
 
6436
+ hash.forEach( function( singleQuery ) {
6437
+ var queryParts = singleQuery.split( '_' ),
6438
+ endPoint = queryParts[0],
6439
+ deviceName = queryParts[1];
6440
 
6441
+ query[ endPoint ] = 'max' === endPoint ? getDeviceMaxValue( deviceName ) : devices[ deviceName ];
6442
+ } );
6443
 
6444
+ return query;
6445
+ };
6446
 
6447
+ var addQueryHash = function( queryHash ) {
6448
+ rules[ queryHash ] = {};
6449
 
6450
+ var hashes = Object.keys( rules );
 
 
6451
 
6452
+ if ( hashes.length < 2 ) {
6453
+ return;
 
 
6454
  }
6455
 
6456
+ // Sort the devices from narrowest to widest
6457
+ hashes.sort( function( a, b ) {
6458
+ if ( 'all' === a ) {
6459
+ return -1;
 
 
 
 
 
 
 
6460
  }
 
6461
 
6462
+ if ( 'all' === b ) {
6463
+ return 1;
6464
+ }
6465
 
6466
+ var aQuery = hashToQuery( a ),
6467
+ bQuery = hashToQuery( b );
 
 
 
 
 
6468
 
6469
+ return bQuery.max - aQuery.max;
6470
+ } );
6471
 
6472
+ var sortedRules = {};
 
6473
 
6474
+ hashes.forEach( function( deviceName ) {
6475
+ sortedRules[ deviceName ] = rules[ deviceName ];
6476
+ } );
6477
 
6478
+ rules = sortedRules;
6479
+ };
6480
 
6481
+ var getQueryHashStyleFormat = function( queryHash ) {
6482
+ var query = hashToQuery( queryHash ),
6483
+ styleFormat = [];
 
 
6484
 
6485
+ $.each( query, function( endPoint ) {
6486
+ styleFormat.push( '(' + endPoint + '-width:' + this + 'px)' );
6487
+ } );
 
 
 
6488
 
6489
+ return '@media' + styleFormat.join( ' and ' );
6490
+ };
 
 
 
6491
 
6492
+ this.addDevice = function( deviceName, deviceValue ) {
6493
+ devices[ deviceName ] = deviceValue;
 
6494
 
6495
+ var deviceNames = Object.keys( devices );
 
 
6496
 
6497
+ if ( deviceNames.length < 2 ) {
6498
+ return self;
6499
+ }
6500
 
6501
+ // Sort the devices from narrowest to widest
6502
+ deviceNames.sort( function( a, b ) {
6503
+ return devices[ a ] - devices[ b ];
6504
+ } );
 
 
6505
 
6506
+ var sortedDevices = {};
 
6507
 
6508
+ deviceNames.forEach( function( deviceName ) {
6509
+ sortedDevices[ deviceName ] = devices[ deviceName ];
6510
+ } );
6511
 
6512
+ devices = sortedDevices;
 
6513
 
6514
+ return self;
6515
+ };
 
6516
 
6517
+ this.addRawCSS = function( key, css ) {
6518
+ rawCSS[ key ] = css;
6519
+ };
6520
 
6521
+ this.addRules = function( selector, styleRules, query ) {
6522
+ var queryHash = 'all';
 
 
6523
 
6524
+ if ( ! _.isEmpty( query ) ) {
6525
+ queryHash = queryToHash( query );
6526
  }
6527
 
6528
+ if ( ! rules[ queryHash ] ) {
6529
+ addQueryHash( queryHash );
 
6530
  }
 
6531
 
6532
+ if ( ! styleRules ) {
6533
+ var parsedRules = selector.match( /[^{]+\{[^}]+}/g );
 
6534
 
6535
+ $.each( parsedRules, function() {
6536
+ var parsedRule = this.match( /([^{]+)\{([^}]+)}/ );
 
 
 
 
 
 
6537
 
6538
+ if ( parsedRule ) {
6539
+ self.addRules( parsedRule[1].trim(), parsedRule[2].trim(), query );
6540
+ }
6541
+ } );
6542
 
6543
+ return;
6544
+ }
6545
 
6546
+ if ( ! rules[ queryHash ][ selector ] ) {
6547
+ rules[ queryHash ][ selector ] = {};
6548
+ }
6549
 
6550
+ if ( 'string' === typeof styleRules ) {
6551
+ styleRules = styleRules.split( ';' ).filter( String );
 
 
 
 
 
 
6552
 
6553
+ var orderedRules = {};
 
 
6554
 
6555
+ try {
6556
+ $.each( styleRules, function() {
6557
+ var property = this.split( /:(.*)?/ );
6558
 
6559
+ orderedRules[ property[0].trim() ] = property[1].trim().replace( ';', '' );
6560
+ } );
6561
+ } catch ( error ) { // At least one of the properties is incorrect
6562
+ return;
6563
+ }
6564
 
6565
+ styleRules = orderedRules;
6566
+ }
6567
 
6568
+ $.extend( rules[ queryHash ][ selector ], styleRules );
 
 
6569
 
6570
+ return self;
6571
+ };
6572
 
6573
+ this.getRules = function() {
6574
+ return rules;
6575
+ };
6576
 
6577
+ this.empty = function() {
6578
+ rules = {};
6579
+ rawCSS = {};
6580
+ };
6581
 
6582
+ this.toString = function() {
6583
+ var styleText = '';
6584
 
6585
+ $.each( rules, function( queryHash ) {
6586
+ var deviceText = Stylesheet.parseRules( this );
 
6587
 
6588
+ if ( 'all' !== queryHash ) {
6589
+ deviceText = getQueryHashStyleFormat( queryHash ) + '{' + deviceText + '}';
6590
+ }
6591
 
6592
+ styleText += deviceText;
6593
+ } );
 
6594
 
6595
+ $.each( rawCSS, function() {
6596
+ styleText += this;
6597
+ } );
6598
 
6599
+ return styleText;
6600
+ };
6601
+ };
6602
 
6603
+ Stylesheet.parseRules = function( rules ) {
6604
+ var parsedRules = '';
6605
 
6606
+ $.each( rules, function( selector ) {
6607
+ var selectorContent = Stylesheet.parseProperties( this );
6608
 
6609
+ if ( selectorContent ) {
6610
+ parsedRules += selector + '{' + selectorContent + '}';
6611
+ }
6612
+ } );
6613
 
6614
+ return parsedRules;
6615
+ };
6616
 
6617
+ Stylesheet.parseProperties = function( properties ) {
6618
+ var parsedProperties = '';
 
 
6619
 
6620
+ $.each( properties, function( propertyKey ) {
6621
+ if ( this ) {
6622
+ parsedProperties += propertyKey + ':' + this + ';';
6623
  }
6624
  } );
 
6625
 
6626
+ return parsedProperties;
6627
+ };
 
 
6628
 
6629
+ module.exports = Stylesheet;
6630
+ } )( jQuery );
6631
 
6632
+ },{}],81:[function(require,module,exports){
6633
+ var Module = require( 'elementor-utils/module' ),
6634
+ Validator;
 
6635
 
6636
+ Validator = Module.extend( {
6637
+ errors: [],
6638
 
6639
+ __construct: function( settings ) {
6640
+ var customValidationMethod = settings.customValidationMethod;
 
 
 
 
 
 
 
 
 
 
 
6641
 
6642
+ if ( customValidationMethod ) {
6643
+ this.validationMethod = customValidationMethod;
6644
+ }
6645
  },
6646
 
6647
+ isValid: function() {
6648
+ var validationErrors = this.validationMethod.apply( this, arguments );
 
 
 
 
6649
 
6650
+ if ( validationErrors.length ) {
6651
+ this.errors = validationErrors;
 
6652
 
6653
+ return false;
6654
+ }
 
6655
 
6656
+ return true;
 
 
 
 
6657
  },
6658
 
6659
+ validationMethod: function() {
6660
+ return [];
6661
+ }
6662
+ } );
 
 
 
6663
 
6664
+ module.exports = Validator;
 
 
6665
 
6666
+ },{"elementor-utils/module":122}],82:[function(require,module,exports){
6667
+ var AddSectionView;
6668
 
6669
+ AddSectionView = Marionette.ItemView.extend( {
6670
+ template: Marionette.TemplateCache.get( '#tmpl-elementor-add-section' ),
6671
 
6672
+ attributes: {
6673
+ 'data-view': 'choose-action'
6674
  },
6675
 
6676
+ ui: {
6677
+ addNewSection: '.elementor-add-new-section',
6678
+ closeButton: '.elementor-add-section-close',
6679
+ addSectionButton: '.elementor-add-section-button',
6680
+ addTemplateButton: '.elementor-add-template-button',
6681
+ selectPreset: '.elementor-select-preset',
6682
+ presets: '.elementor-preset'
6683
  },
6684
 
6685
+ events: {
6686
+ 'click @ui.addSectionButton': 'onAddSectionButtonClick',
6687
+ 'click @ui.addTemplateButton': 'onAddTemplateButtonClick',
6688
+ 'click @ui.closeButton': 'onCloseButtonClick',
6689
+ 'click @ui.presets': 'onPresetSelected'
6690
+ },
6691
 
6692
+ className: function() {
6693
+ return 'elementor-add-section elementor-visible-desktop';
6694
+ },
6695
 
6696
+ addSection: function( properties, options ) {
6697
+ return elementor.sections.currentView.addSection( properties, options );
6698
+ },
 
6699
 
6700
+ setView: function( view ) {
6701
+ this.$el.attr( 'data-view', view );
6702
+ },
6703
 
6704
+ showSelectPresets: function() {
6705
+ this.setView( 'select-preset' );
6706
+ },
6707
 
6708
+ closeSelectPresets: function() {
6709
+ this.setView( 'choose-action' );
6710
+ },
6711
 
6712
+ getTemplatesModalOptions: function() {
6713
+ return {
6714
+ onReady: function() {
6715
+ elementor.templates.showTemplates();
 
 
 
 
 
 
 
 
 
 
6716
  }
6717
  };
 
 
6718
  },
6719
 
6720
+ onAddSectionButtonClick: function() {
6721
+ this.showSelectPresets();
6722
+ },
6723
 
6724
+ onAddTemplateButtonClick: function() {
6725
+ elementor.templates.startModal( this.getTemplatesModalOptions() );
6726
  },
6727
 
6728
+ onRender: function() {
6729
+ this.$el.html5Droppable( {
6730
+ axis: [ 'vertical' ],
6731
+ groups: [ 'elementor-element' ],
6732
+ placeholder: false,
6733
+ currentElementClass: 'elementor-html5dnd-current-element',
6734
+ hasDraggingOnChildClass: 'elementor-dragging-on-child',
6735
+ onDropping: _.bind( this.onDropping, this )
6736
+ } );
6737
  },
6738
 
6739
+ onPresetSelected: function( event ) {
6740
+ this.closeSelectPresets();
6741
 
6742
+ var selectedStructure = event.currentTarget.dataset.structure,
6743
+ parsedStructure = elementor.presetsFactory.getParsedStructure( selectedStructure ),
6744
+ elements = [],
6745
+ loopIndex;
6746
 
6747
+ for ( loopIndex = 0; loopIndex < parsedStructure.columnsCount; loopIndex++ ) {
6748
+ elements.push( {
6749
+ id: elementor.helpers.getUniqueID(),
6750
+ elType: 'column',
6751
+ settings: {},
6752
+ elements: []
6753
+ } );
6754
+ }
6755
 
6756
+ var newSection = this.addSection( { elements: elements } );
 
6757
 
6758
+ newSection.setStructure( selectedStructure );
6759
+ newSection.redefineLayout();
6760
  },
6761
 
6762
+ onDropping: function() {
6763
+ this.addSection().addElementFromPanel();
6764
+ }
6765
+ } );
6766
 
6767
+ module.exports = AddSectionView;
 
6768
 
6769
+ },{}],83:[function(require,module,exports){
6770
+ var BaseAddSectionView = require( 'elementor-views/add-section/base' );
 
6771
 
6772
+ module.exports = BaseAddSectionView.extend( {
6773
+ id: 'elementor-add-new-section',
 
6774
 
6775
+ onCloseButtonClick: function() {
6776
+ this.closeSelectPresets();
6777
+ }
6778
+ } );
6779
 
6780
+ },{"elementor-views/add-section/base":82}],84:[function(require,module,exports){
6781
+ var BaseAddSectionView = require( 'elementor-views/add-section/base' );
6782
 
6783
+ module.exports = BaseAddSectionView.extend( {
6784
+ options: {
6785
+ atIndex: null
6786
  },
6787
 
6788
+ className: function() {
6789
+ return BaseAddSectionView.prototype.className.apply( this, arguments ) + ' elementor-add-section-inline';
6790
+ },
6791
 
6792
+ addSection: function( properties, options ) {
6793
+ options = options || {};
6794
 
6795
+ options.at = this.getOption( 'atIndex' );
6796
+
6797
+ return BaseAddSectionView.prototype.addSection.call( this, properties, options );
6798
+ },
6799
+
6800
+ getTemplatesModalOptions: function() {
6801
+ return _.extend( BaseAddSectionView.prototype.getTemplatesModalOptions.apply( this, arguments ), {
6802
+ importOptions: {
6803
+ at: this.getOption( 'atIndex' )
6804
  }
6805
  } );
6806
  },
6807
 
6808
+ fadeToDeath: function() {
6809
+ var self = this;
 
 
6810
 
6811
+ self.$el.slideUp( function() {
6812
+ self.destroy();
6813
+ } );
6814
  },
6815
 
6816
+ onCloseButtonClick: function() {
6817
+ this.fadeToDeath();
 
 
 
6818
  },
6819
 
6820
+ onPresetSelected: function() {
6821
+ BaseAddSectionView.prototype.onPresetSelected.apply( this, arguments );
 
6822
 
6823
+ this.destroy();
 
 
 
 
6824
  },
6825
 
6826
+ onAddTemplateButtonClick: function() {
6827
+ BaseAddSectionView.prototype.onAddTemplateButtonClick.apply( this, arguments );
 
6828
 
6829
+ this.destroy();
6830
  },
6831
 
6832
+ onDropping: function() {
6833
+ BaseAddSectionView.prototype.onDropping.apply( this, arguments );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6834
 
6835
+ this.destroy();
6836
+ }
6837
+ } );
6838
 
6839
+ },{"elementor-views/add-section/base":82}],85:[function(require,module,exports){
6840
+ module.exports = Marionette.CompositeView.extend( {
 
6841
 
6842
+ getBehavior: function( name ) {
6843
+ return this._behaviors[ Object.keys( this.behaviors() ).indexOf( name ) ];
 
6844
  },
6845
 
6846
+ addChildModel: function( model, options ) {
6847
+ return this.collection.add( model, options, true );
 
 
 
 
 
 
6848
  },
6849
 
6850
+ addChildElement: function( itemData, options ) {
6851
+ options = options || {};
 
6852
 
6853
+ var myChildType = this.getChildType(),
6854
+ elType = itemData.get ? itemData.get( 'elType' ) : itemData.elType;
 
6855
 
6856
+ if ( -1 === myChildType.indexOf( elType ) ) {
6857
+ delete options.at;
6858
 
6859
+ return this.children.last().addChildElement( itemData, options );
 
6860
  }
6861
 
6862
+ var newModel = this.addChildModel( itemData, options ),
6863
+ newView = this.children.findByModel( newModel );
 
 
 
 
 
6864
 
6865
+ newView.edit();
6866
+
6867
+ return newView;
6868
  }
6869
  } );
6870
 
6871
+ },{}],86:[function(require,module,exports){
6872
+ var BaseSettingsModel = require( 'elementor-models/base-settings' ),
6873
+ ControlsCSSParser = require( 'elementor-editor-utils/controls-css-parser' ),
6874
+ Validator = require( 'elementor-editor-utils/validator' ),
6875
+ BaseContainer = require( 'elementor-views/base-container' ),
6876
+ BaseElementView;
6877
 
6878
+ BaseElementView = BaseContainer.extend( {
6879
+ tagName: 'div',
6880
 
6881
+ controlsCSSParser: null,
 
6882
 
6883
+ toggleEditTools: true,
6884
 
6885
+ className: function() {
6886
+ return this.getElementUniqueID();
6887
+ },
6888
+
6889
+ attributes: function() {
6890
+ var type = this.model.get( 'elType' );
6891
+
6892
+ if ( 'widget' === type ) {
6893
+ type = this.model.get( 'widgetType' );
6894
+ }
6895
 
 
6896
  return {
6897
+ 'data-id': this.getID(),
6898
+ 'data-element_type': type
6899
  };
6900
  },
6901
 
6902
  ui: function() {
6903
  return {
6904
+ triggerButton: '> .elementor-element-overlay .elementor-editor-element-trigger',
6905
+ duplicateButton: '> .elementor-element-overlay .elementor-editor-element-duplicate',
6906
+ removeButton: '> .elementor-element-overlay .elementor-editor-element-remove',
6907
+ saveButton: '> .elementor-element-overlay .elementor-editor-element-save',
6908
+ settingsList: '> .elementor-element-overlay .elementor-editor-element-settings',
6909
+ addButton: '> .elementor-element-overlay .elementor-editor-element-add'
6910
  };
6911
  },
6912
 
6913
+ behaviors: function() {
6914
+ var behaviors = {};
6915
+
6916
+ return elementor.hooks.applyFilters( 'elements/base/behaviors', behaviors, this );
6917
+ },
6918
+
6919
+ getBehavior: function( name ) {
6920
+ return this._behaviors[ Object.keys( this.behaviors() ).indexOf( name ) ];
6921
+ },
6922
+
6923
  events: function() {
6924
  return {
6925
+ 'click @ui.removeButton': 'onClickRemove',
6926
+ 'click @ui.saveButton': 'onClickSave',
6927
+ 'click @ui.duplicateButton': 'onClickDuplicate',
6928
+ 'click @ui.triggerButton': 'onClickEdit'
6929
  };
6930
  },
6931
 
6932
+ getElementType: function() {
6933
+ return this.model.get( 'elType' );
6934
  },
6935
 
6936
+ getChildType: function() {
6937
+ return elementor.helpers.getElementChildType( this.getElementType() );
 
 
6938
  },
6939
 
6940
+ getChildView: function( model ) {
6941
+ var ChildView,
6942
+ elType = model.get( 'elType' );
6943
 
6944
+ if ( 'section' === elType ) {
6945
+ ChildView = require( 'elementor-views/section' );
6946
+ } else if ( 'column' === elType ) {
6947
+ ChildView = require( 'elementor-views/column' );
6948
+ } else {
6949
+ ChildView = elementor.modules.WidgetView;
6950
  }
6951
 
6952
+ return elementor.hooks.applyFilters( 'element/view', ChildView, model, this );
6953
+ },
 
6954
 
6955
+ templateHelpers: function() {
6956
+ return {
6957
+ elementModel: this.model,
6958
+ editModel: this.getEditModel()
6959
+ };
6960
+ },
6961
 
6962
+ getTemplateType: function() {
6963
+ return 'js';
6964
  },
6965
 
6966
+ getEditModel: function() {
6967
+ return this.model;
6968
  },
6969
 
6970
+ initialize: function() {
6971
+ // grab the child collection from the parent model
6972
+ // so that we can render the collection as children
6973
+ // of this parent element
6974
+ this.collection = this.model.get( 'elements' );
6975
 
6976
+ if ( this.collection ) {
6977
+ this.listenTo( this.collection, 'add remove reset', this.onCollectionChanged, this );
6978
+ }
6979
 
6980
+ var editModel = this.getEditModel();
6981
 
6982
+ this.listenTo( editModel.get( 'settings' ), 'change', this.onSettingsChanged, this );
6983
+ this.listenTo( editModel.get( 'editSettings' ), 'change', this.onEditSettingsChanged, this );
 
6984
 
6985
+ this.initRemoveDialog();
 
 
 
6986
 
6987
+ this.initControlsCSSParser();
 
6988
  },
6989
 
6990
+ edit: function() {
6991
+ elementor.getPanelView().openEditor( this.getEditModel(), this );
 
 
6992
  },
6993
 
6994
+ addElementFromPanel: function( options ) {
6995
+ var elementView = elementor.channels.panelElements.request( 'element:selected' );
 
 
 
6996
 
6997
+ var itemData = {
6998
+ id: elementor.helpers.getUniqueID(),
6999
+ elType: elementView.model.get( 'elType' )
7000
+ };
7001
 
7002
+ if ( 'widget' === itemData.elType ) {
7003
+ itemData.widgetType = elementView.model.get( 'widgetType' );
7004
+ } else if ( 'section' === itemData.elType ) {
7005
+ itemData.elements = [];
7006
+ itemData.isInner = true;
7007
+ } else {
7008
+ return;
7009
+ }
7010
 
7011
+ var customData = elementView.model.get( 'custom' );
7012
+
7013
+ if ( customData ) {
7014
+ _.extend( itemData, customData );
7015
+ }
7016
+
7017
+ var newView = this.addChildElement( itemData, options );
7018
+
7019
+ if ( 'section' === newView.getElementType() && newView.isInner() ) {
7020
+ newView.addEmptyColumn();
7021
+ }
7022
 
 
 
7023
  },
7024
 
7025
+ addControlValidator: function( controlName, validationCallback ) {
7026
+ validationCallback = _.bind( validationCallback, this );
7027
 
7028
+ var validator = new Validator( { customValidationMethod: validationCallback } ),
7029
+ validators = this.getEditModel().get( 'settings' ).validators;
7030
 
7031
+ if ( ! validators[ controlName ] ) {
7032
+ validators[ controlName ] = [];
7033
  }
7034
 
7035
+ validators[ controlName ].push( validator );
 
 
7036
  },
7037
 
7038
+ isCollectionFilled: function() {
7039
+ return false;
7040
  },
7041
 
7042
+ isInner: function() {
7043
+ return !! this.model.get( 'isInner' );
7044
  },
7045
 
7046
+ initRemoveDialog: function() {
7047
+ var removeDialog;
 
 
 
 
 
7048
 
7049
+ this.getRemoveDialog = function() {
7050
+ if ( ! removeDialog ) {
7051
+ var elementTitle = this.model.getTitle();
 
 
 
7052
 
7053
+ removeDialog = elementor.dialogsManager.createWidget( 'confirm', {
7054
+ message: elementor.translate( 'dialog_confirm_delete', [ elementTitle.toLowerCase() ] ),
7055
+ headerMessage: elementor.translate( 'delete_element', [ elementTitle ] ),
7056
+ strings: {
7057
+ confirm: elementor.translate( 'delete' ),
7058
+ cancel: elementor.translate( 'cancel' )
7059
+ },
7060
+ defaultOption: 'confirm',
7061
+ onConfirm: _.bind( function() {
7062
+ var parent = this._parent;
7063
 
7064
+ parent.isManualRemoving = true;
 
 
7065
 
7066
+ this.model.destroy();
7067
 
7068
+ parent.isManualRemoving = false;
7069
+ }, this )
7070
+ } );
7071
+ }
7072
 
7073
+ return removeDialog;
7074
+ };
7075
+ },
 
7076
 
7077
+ initControlsCSSParser: function() {
7078
+ this.controlsCSSParser = new ControlsCSSParser( { id: this.model.cid } );
7079
  },
7080
 
7081
+ enqueueFonts: function() {
7082
+ var editModel = this.getEditModel(),
7083
+ settings = editModel.get( 'settings' );
7084
 
7085
+ _.each( settings.getFontControls(), _.bind( function( control ) {
7086
+ var fontFamilyName = editModel.getSetting( control.name );
 
7087
 
7088
+ if ( _.isEmpty( fontFamilyName ) ) {
7089
+ return;
7090
+ }
7091
 
7092
+ elementor.helpers.enqueueFont( fontFamilyName );
7093
+ }, this ) );
7094
  },
7095
 
7096
+ renderStyles: function( settings ) {
7097
+ var self = this;
7098
+ if ( ! settings ) {
7099
+ settings = this.getEditModel().get( 'settings' );
 
 
 
 
 
7100
  }
7101
 
7102
+ self.controlsCSSParser.stylesheet.empty();
 
7103
 
7104
+ self.controlsCSSParser.addStyleRules( settings.getStyleControls(), settings.attributes, self.getEditModel().get( 'settings' ).controls, [ /{{ID}}/g, /{{WRAPPER}}/g ], [ self.getID(), '#elementor .' + self.getElementUniqueID() ] );
 
7105
 
7106
+ self.controlsCSSParser.addStyleToDocument();
 
 
 
 
 
 
 
7107
 
7108
+ var extraCSS = elementor.hooks.applyFilters( 'editor/style/styleText', '', this );
 
 
7109
 
7110
+ if ( extraCSS ) {
7111
+ self.controlsCSSParser.elements.$stylesheetElement.append( extraCSS );
7112
+ }
7113
+ },
7114
 
7115
+ renderCustomClasses: function() {
7116
+ var self = this;
 
7117
 
7118
+ self.$el.addClass( 'elementor-element' );
7119
 
7120
+ var settings = self.getEditModel().get( 'settings' ),
7121
+ classControls = settings.getClassControls();
 
7122
 
7123
+ // Remove all previous classes
7124
+ _.each( classControls, function( control ) {
7125
+ var previousClassValue = settings.previous( control.name );
7126
 
7127
+ if ( control.classes_dictionary ) {
7128
+ if ( undefined !== control.classes_dictionary[ previousClassValue ] ) {
7129
+ previousClassValue = control.classes_dictionary[ previousClassValue ];
7130
+ }
7131
+ }
7132
 
7133
+ self.$el.removeClass( control.prefix_class + previousClassValue );
7134
+ } );
 
7135
 
7136
+ // Add new classes
7137
+ _.each( classControls, function( control ) {
7138
+ var value = settings.attributes[ control.name ],
7139
+ classValue = value;
7140
 
7141
+ if ( control.classes_dictionary ) {
7142
+ if ( undefined !== control.classes_dictionary[ value ] ) {
7143
+ classValue = control.classes_dictionary[ value ];
7144
+ }
7145
+ }
7146
 
7147
+ var isVisible = elementor.helpers.isActiveControl( control, settings.attributes );
7148
+
7149
+ if ( isVisible && ! _.isEmpty( classValue ) ) {
7150
+ self.$el
7151
+ .addClass( control.prefix_class + classValue )
7152
+ .addClass( _.result( self, 'className' ) );
7153
+ }
7154
+ } );
 
 
 
7155
  },
7156
 
7157
+ renderCustomElementID: function() {
7158
+ var customElementID = this.getEditModel().get( 'settings' ).get( '_element_id' );
7159
 
7160
+ this.$el.attr( 'id', customElementID );
7161
  },
7162
 
7163
+ getModelForRender: function() {
7164
+ return elementor.hooks.applyFilters( 'element/templateHelpers/editModel', this.getEditModel(), this );
7165
  },
7166
 
7167
+ renderUIOnly: function() {
7168
+ var editModel = this.getModelForRender();
 
 
 
7169
 
7170
+ this.renderStyles( editModel.get( 'settings' ) );
7171
+ this.renderCustomClasses();
7172
+ this.renderCustomElementID();
7173
+ this.enqueueFonts();
7174
+ },
7175
 
7176
+ renderUI: function() {
7177
+ this.renderStyles();
7178
+ this.renderCustomClasses();
7179
+ this.renderCustomElementID();
7180
+ this.enqueueFonts();
7181
+ },
7182
 
7183
+ runReadyTrigger: function() {
7184
+ _.defer( _.bind( function() {
7185
+ elementorFrontend.elementsHandler.runReadyTrigger( this.$el );
7186
+ }, this ) );
7187
+ },
7188
 
7189
+ getID: function() {
7190
+ return this.model.get( 'id' );
7191
  },
7192
 
7193
+ getElementUniqueID: function() {
7194
+ return 'elementor-element-' + this.getID();
7195
  },
7196
 
7197
+ duplicate: function() {
7198
+ this.trigger( 'request:duplicate' );
 
 
 
 
 
 
 
7199
  },
7200
 
7201
+ confirmRemove: function() {
7202
+ this.getRemoveDialog().show();
 
 
 
 
 
7203
  },
7204
 
7205
+ renderOnChange: function( settings ) {
7206
+ // Make sure is correct model
7207
+ if ( settings instanceof BaseSettingsModel ) {
7208
+ var hasChanged = settings.hasChanged(),
7209
+ isContentChanged = ! hasChanged,
7210
+ isRenderRequired = ! hasChanged;
7211
 
7212
+ _.each( settings.changedAttributes(), function( settingValue, settingKey ) {
7213
+ var control = settings.getControl( settingKey );
 
7214
 
7215
+ if ( ! control ) {
7216
+ isRenderRequired = true;
7217
 
7218
+ return;
7219
+ }
7220
 
7221
+ if ( 'none' !== control.render_type ) {
7222
+ isRenderRequired = true;
7223
+ }
7224
 
7225
+ if ( -1 !== [ 'none', 'ui' ].indexOf( control.render_type ) ) {
7226
+ return;
7227
+ }
7228
 
7229
+ if ( 'template' === control.render_type || ! settings.isStyleControl( settingKey ) && ! settings.isClassControl( settingKey ) && '_element_id' !== settingKey ) {
7230
+ isContentChanged = true;
7231
+ }
7232
+ } );
7233
 
7234
+ if ( ! isRenderRequired ) {
7235
+ return;
7236
+ }
7237
 
7238
+ if ( ! isContentChanged ) {
7239
+ this.renderUIOnly();
7240
+ return;
7241
+ }
7242
+ }
7243
 
7244
+ // Re-render the template
7245
+ var templateType = this.getTemplateType(),
7246
+ editModel = this.getEditModel();
7247
 
7248
+ if ( 'js' === templateType ) {
7249
+ this.getEditModel().setHtmlCache();
7250
+ this.render();
7251
+ editModel.renderOnLeave = true;
7252
+ } else {
7253
+ editModel.renderRemoteServer();
7254
+ }
7255
  },
7256
 
7257
+ onRender: function() {
7258
+ var self = this;
7259
 
7260
+ self.renderUI();
7261
+
7262
+ self.runReadyTrigger();
7263
+
7264
+ if ( self.toggleEditTools ) {
7265
+ self.ui.settingsList.hoverIntent( function() {
7266
+ self.ui.triggerButton.addClass( 'elementor-active' );
7267
+ }, function() {
7268
+ self.ui.triggerButton.removeClass( 'elementor-active' );
7269
+ }, { timeout: 500 } );
7270
  }
7271
+ },
7272
 
7273
+ onCollectionChanged: function() {
7274
+ elementor.setFlagEditorChange( true );
7275
  },
7276
 
7277
+ onEditSettingsChanged: function( changedModel ) {
7278
+ this.renderOnChange( changedModel );
7279
+ },
7280
 
7281
+ onSettingsChanged: function( changedModel ) {
7282
+ elementor.setFlagEditorChange( true );
7283
+
7284
+ this.renderOnChange( changedModel );
7285
  },
7286
 
7287
+ onClickEdit: function( event ) {
7288
+ if ( ! Backbone.$( event.target ).closest( '.elementor-clickable' ).length ) {
7289
+ event.preventDefault();
 
7290
 
7291
+ event.stopPropagation();
 
7292
  }
7293
 
7294
+ var activeMode = elementor.channels.dataEditMode.request( 'activeMode' );
 
 
7295
 
7296
+ if ( 'edit' !== activeMode ) {
7297
+ return;
 
7298
  }
7299
 
7300
+ this.edit();
7301
  },
7302
 
7303
+ onClickDuplicate: function( event ) {
7304
+ event.preventDefault();
7305
+ event.stopPropagation();
7306
 
7307
+ this.duplicate();
 
 
 
 
 
 
7308
  },
7309
 
7310
+ onClickRemove: function( event ) {
7311
+ event.preventDefault();
7312
+ event.stopPropagation();
7313
 
7314
+ this.confirmRemove();
 
7315
  },
7316
 
7317
+ onClickSave: function( event ) {
7318
+ event.preventDefault();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7319
 
7320
+ var model = this.model;
7321
 
7322
+ elementor.templates.startModal( {
7323
+ onReady: function() {
7324
+ elementor.templates.getLayout().showSaveTemplateView( model );
7325
+ }
7326
+ } );
7327
  },
7328
 
7329
+ onDestroy: function() {
7330
+ this.controlsCSSParser.removeStyleFromDocument();
7331
+ }
7332
+ } );
7333
 
7334
+ module.exports = BaseElementView;
 
7335
 
7336
+ },{"elementor-editor-utils/controls-css-parser":70,"elementor-editor-utils/validator":81,"elementor-models/base-settings":58,"elementor-views/base-container":85,"elementor-views/column":88,"elementor-views/section":118}],87:[function(require,module,exports){
7337
+ var SectionView = require( 'elementor-views/section' ),
7338
+ BaseContainer = require( 'elementor-views/base-container' ),
7339
+ BaseSectionsContainerView;
7340
 
7341
+ BaseSectionsContainerView = BaseContainer.extend( {
7342
+ childView: SectionView,
7343
 
7344
+ behaviors: function() {
7345
+ var behaviors = {
7346
+ Sortable: {
7347
+ behaviorClass: require( 'elementor-behaviors/sortable' ),
7348
+ elChildType: 'section'
7349
+ },
7350
+ HandleDuplicate: {
7351
+ behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
7352
+ },
7353
+ HandleAddMode: {
7354
+ behaviorClass: require( 'elementor-behaviors/duplicate' )
7355
  }
7356
+ };
 
 
7357
 
7358
+ return elementor.hooks.applyFilters( 'elements/base-section-container/behaviors', behaviors, this );
7359
  },
7360
 
7361
+ getSortableOptions: function() {
7362
+ return {
7363
+ handle: '> .elementor-element-overlay .elementor-editor-section-settings .elementor-editor-element-trigger',
7364
+ items: '> .elementor-section'
7365
+ };
7366
+ },
7367
 
7368
+ getChildType: function() {
7369
+ return [ 'section' ];
7370
+ },
7371
 
7372
+ isCollectionFilled: function() {
7373
+ return false;
7374
  },
7375
 
7376
+ initialize: function() {
7377
+ this
7378
+ .listenTo( this.collection, 'add remove reset', this.onCollectionChanged )
7379
+ .listenTo( elementor.channels.panelElements, 'element:drag:start', this.onPanelElementDragStart )
7380
+ .listenTo( elementor.channels.panelElements, 'element:drag:end', this.onPanelElementDragEnd );
7381
  },
7382
 
7383
+ addSection: function( properties, options ) {
7384
+ var newSection = {
7385
+ id: elementor.helpers.getUniqueID(),
7386
+ elType: 'section',
7387
+ settings: {},
7388
+ elements: []
7389
+ };
7390
+
7391
+ if ( properties ) {
7392
+ _.extend( newSection, properties );
7393
  }
7394
 
7395
+ var newModel = this.addChildModel( newSection, options );
7396
 
7397
+ return this.children.findByModelCid( newModel.cid );
7398
  },
7399
 
7400
+ onCollectionChanged: function() {
7401
+ elementor.setFlagEditorChange( true );
7402
+ },
 
7403
 
7404
+ onPanelElementDragStart: function() {
7405
+ elementor.helpers.disableElementEvents( this.$el.find( 'iframe' ) );
7406
  },
7407
 
7408
+ onPanelElementDragEnd: function() {
7409
+ elementor.helpers.enableElementEvents( this.$el.find( 'iframe' ) );
7410
+ }
7411
+ } );
7412
 
7413
+ module.exports = BaseSectionsContainerView;
 
 
 
7414
 
7415
+ },{"elementor-behaviors/duplicate":1,"elementor-behaviors/handle-duplicate":2,"elementor-behaviors/sortable":5,"elementor-views/base-container":85,"elementor-views/section":118}],88:[function(require,module,exports){
7416
+ var BaseElementView = require( 'elementor-views/base-element' ),
7417
+ ElementEmptyView = require( 'elementor-views/element-empty' ),
7418
+ ColumnView;
 
 
7419
 
7420
+ ColumnView = BaseElementView.extend( {
7421
+ template: Marionette.TemplateCache.get( '#tmpl-elementor-element-column-content' ),
7422
+
7423
+ emptyView: ElementEmptyView,
7424
+
7425
+ childViewContainer: '> .elementor-column-wrap > .elementor-widget-wrap',
7426
+
7427
+ behaviors: function() {
7428
+ var behaviors = {
7429
+ Sortable: {
7430
+ behaviorClass: require( 'elementor-behaviors/sortable' ),
7431
+ elChildType: 'widget'
7432
  },
7433
+ Resizable: {
7434
+ behaviorClass: require( 'elementor-behaviors/resizable' )
7435
+ },
7436
+ HandleDuplicate: {
7437
+ behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
7438
+ },
7439
+ HandleAddMode: {
7440
+ behaviorClass: require( 'elementor-behaviors/duplicate' )
7441
  }
7442
+ };
 
7443
 
7444
+ return elementor.hooks.applyFilters( 'elements/column/behaviors', behaviors, this );
 
7445
  },
7446
 
7447
+ className: function() {
7448
+ var classes = BaseElementView.prototype.className.apply( this, arguments ),
7449
+ type = this.isInner() ? 'inner' : 'top';
 
 
 
 
 
 
7450
 
7451
+ return classes + ' elementor-column elementor-' + type + '-column';
7452
+ },
7453
 
7454
+ tagName: function() {
7455
+ return this.model.getSetting( 'html_tag' ) || 'div';
7456
+ },
7457
 
 
7458
  ui: function() {
7459
+ var ui = BaseElementView.prototype.ui.apply( this, arguments );
7460
 
7461
+ ui.columnInner = '> .elementor-column-wrap';
7462
+
7463
+ ui.percentsTooltip = '> .elementor-element-overlay .elementor-column-percents-tooltip';
7464
 
7465
  return ui;
7466
  },
7467
 
7468
+ triggers: {
7469
+ 'click @ui.addButton': 'click:new'
7470
  },
7471
 
7472
+ initialize: function() {
7473
+ BaseElementView.prototype.initialize.apply( this, arguments );
7474
 
7475
+ this.addControlValidator( '_inline_size', this.onEditorInlineSizeInputChange );
7476
+ },
 
7477
 
7478
+ isDroppingAllowed: function() {
7479
+ var elementView = elementor.channels.panelElements.request( 'element:selected' ),
7480
+ elType = elementView.model.get( 'elType' );
7481
+
7482
+ if ( 'section' === elType ) {
7483
+ return ! this.isInner();
7484
+ }
7485
+
7486
+ return 'widget' === elType;
7487
  },
7488
 
7489
+ getPercentsForDisplay: function() {
7490
+ var inlineSize = +this.model.getSetting( '_inline_size' ) || this.getPercentSize();
7491
 
7492
+ return inlineSize.toFixed( 1 ) + '%';
7493
+ },
 
 
7494
 
7495
+ changeSizeUI: function() {
7496
+ var self = this,
7497
+ columnSize = self.model.getSetting( '_column_size' );
7498
 
7499
+ self.$el.attr( 'data-col', columnSize );
7500
+
7501
+ _.defer( function() { // Wait for the column size to be applied
7502
+ if ( self.ui.percentsTooltip ) {
7503
+ self.ui.percentsTooltip.text( self.getPercentsForDisplay() );
7504
  }
7505
  } );
7506
  },
7507
 
7508
+ getPercentSize: function( size ) {
7509
+ if ( ! size ) {
7510
+ size = this.el.getBoundingClientRect().width;
7511
+ }
7512
 
7513
+ return +( size / this.$el.parent().width() * 100 ).toFixed( 3 );
7514
  },
7515
 
7516
+ getSortableOptions: function() {
7517
+ return {
7518
+ connectWith: '.elementor-widget-wrap',
7519
+ items: '> .elementor-element'
7520
+ };
7521
  },
7522
 
7523
+ changeChildContainerClasses: function() {
7524
+ var emptyClass = 'elementor-element-empty',
7525
+ populatedClass = 'elementor-element-populated';
7526
 
7527
+ if ( this.collection.isEmpty() ) {
7528
+ this.ui.columnInner.removeClass( populatedClass ).addClass( emptyClass );
7529
+ } else {
7530
+ this.ui.columnInner.removeClass( emptyClass ).addClass( populatedClass );
7531
+ }
7532
  },
7533
 
7534
+ // Events
7535
+ onCollectionChanged: function() {
7536
+ BaseElementView.prototype.onCollectionChanged.apply( this, arguments );
 
 
 
 
 
7537
 
7538
+ this.changeChildContainerClasses();
7539
+ },
 
7540
 
7541
+ onRender: function() {
7542
+ var self = this;
7543
 
7544
+ BaseElementView.prototype.onRender.apply( self, arguments );
 
 
7545
 
7546
+ self.changeChildContainerClasses();
 
 
7547
 
7548
+ self.changeSizeUI();
7549
 
7550
+ self.$el.html5Droppable( {
7551
+ items: ' > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add',
7552
+ axis: [ 'vertical' ],
7553
+ groups: [ 'elementor-element' ],
7554
+ isDroppingAllowed: _.bind( self.isDroppingAllowed, self ),
7555
+ currentElementClass: 'elementor-html5dnd-current-element',
7556
+ placeholderClass: 'elementor-sortable-placeholder elementor-widget-placeholder',
7557
+ hasDraggingOnChildClass: 'elementor-dragging-on-child',
7558
+ onDropping: function( side, event ) {
7559
+ event.stopPropagation();
7560
 
7561
+ var newIndex = Backbone.$( this ).index();
 
 
 
 
7562
 
7563
+ if ( 'bottom' === side ) {
7564
+ newIndex++;
7565
+ }
7566
 
7567
+ self.addElementFromPanel( { at: newIndex } );
7568
+ }
7569
+ } );
7570
  },
7571
 
7572
+ onSettingsChanged: function( settings ) {
7573
+ BaseElementView.prototype.onSettingsChanged.apply( this, arguments );
 
 
7574
 
7575
+ var changedAttributes = settings.changedAttributes();
7576
 
7577
+ if ( '_column_size' in changedAttributes || '_inline_size' in changedAttributes ) {
7578
+ this.changeSizeUI();
7579
  }
7580
  },
7581
 
7582
+ onEditorInlineSizeInputChange: function( newValue, oldValue ) {
7583
+ var errors = [],
7584
+ columnSize = this.model.getSetting( '_column_size' );
7585
 
7586
+ // If there's only one column
7587
+ if ( 100 === columnSize ) {
7588
+ errors.push( 'Could not resize one column' );
7589
 
7590
+ return errors;
 
 
 
7591
  }
 
 
7592
 
7593
+ if ( ! oldValue ) {
7594
+ oldValue = columnSize;
7595
+ }
 
 
7596
 
7597
+ try {
7598
+ this._parent.resizeChild( this, +oldValue, +newValue );
7599
+ } catch ( e ) {
7600
+ if ( e.message === this._parent.errors.columnWidthTooLarge ) {
7601
+ errors.push( e.message );
7602
+ }
7603
+ }
7604
 
7605
+ return errors;
7606
+ }
7607
+ } );
7608
 
7609
+ module.exports = ColumnView;
 
7610
 
7611
+ },{"elementor-behaviors/duplicate":1,"elementor-behaviors/handle-duplicate":2,"elementor-behaviors/resizable":4,"elementor-behaviors/sortable":5,"elementor-views/base-element":86,"elementor-views/element-empty":116}],89:[function(require,module,exports){
7612
+ var ControlsStack;
7613
 
7614
+ ControlsStack = Marionette.CompositeView.extend( {
7615
+ className: 'elementor-panel-controls-stack',
 
7616
 
7617
+ activeTab: null,
7618
 
7619
+ activeSection: null,
7620
 
7621
+ templateHelpers: function() {
7622
+ return {
7623
+ elementData: elementor.getElementData( this.model )
7624
+ };
7625
+ },
 
 
7626
 
7627
+ ui: function() {
7628
+ return {
7629
+ tabs: '.elementor-panel-navigation-tab',
7630
+ reloadButton: '.elementor-update-preview-button'
7631
+ };
7632
+ },
7633
 
7634
+ events: function() {
7635
+ return {
7636
+ 'click @ui.tabs': 'onClickTabControl',
7637
+ 'click @ui.reloadButton': 'onReloadButtonClick'
7638
+ };
7639
+ },
7640
 
7641
+ modelEvents: {
7642
+ 'destroy': 'onModelDestroy'
7643
+ },
7644
 
7645
+ behaviors: {
7646
+ HandleInnerTabs: {
7647
+ behaviorClass: require( 'elementor-behaviors/inner-tabs' )
7648
+ }
7649
+ },
7650
 
7651
+ initialize: function() {
7652
+ this.listenTo( elementor.channels.deviceMode, 'change', this.onDeviceModeChange );
7653
+ },
 
 
7654
 
7655
+ filter: function( controlModel ) {
7656
+ if ( controlModel.get( 'tab' ) !== this.activeTab ) {
7657
+ return false;
 
7658
  }
 
 
7659
 
7660
+ if ( 'section' === controlModel.get( 'type' ) ) {
7661
+ return true;
7662
+ }
7663
 
7664
+ var section = controlModel.get( 'section' );
 
 
7665
 
7666
+ return ! section || section === this.activeSection;
7667
+ },
 
7668
 
7669
+ isVisibleSectionControl: function( sectionControlModel ) {
7670
+ return this.activeTab === sectionControlModel.get( 'tab' );
 
 
 
 
 
 
 
 
7671
  },
7672
 
7673
+ activateTab: function( $tab ) {
7674
+ var self = this,
7675
+ activeTab = this.activeTab = $tab.data( 'tab' );
 
7676
 
7677
+ this.ui.tabs.removeClass( 'active' );
 
 
7678
 
7679
+ $tab.addClass( 'active' );
7680
 
7681
+ var sectionControls = this.collection.filter( function( controlModel ) {
7682
+ return 'section' === controlModel.get( 'type' ) && self.isVisibleSectionControl( controlModel );
7683
+ } );
7684
 
7685
+ if ( sectionControls[0] ) {
7686
+ this.activateSection( sectionControls[0].get( 'name' ) );
7687
+ }
7688
+ },
7689
 
7690
+ activateSection: function( sectionName ) {
7691
+ this.activeSection = sectionName;
7692
+ },
7693
 
7694
+ getChildView: function( item ) {
7695
+ var controlType = item.get( 'type' );
7696
+
7697
+ return elementor.getControlView( controlType );
7698
  },
7699
 
7700
+ openActiveSection: function() {
7701
+ var activeSection = this.activeSection,
7702
+ activeSectionView = this.children.filter( function( view ) {
7703
+ return activeSection === view.model.get( 'name' );
7704
+ } );
7705
 
7706
+ if ( activeSectionView[0] ) {
7707
+ activeSectionView[0].ui.heading.addClass( 'elementor-open' );
7708
+ }
7709
+ },
7710
+
7711
+ onRenderCollection: function() {
7712
+ // Create tooltip on controls
7713
+ this.$( '.tooltip-target' ).tipsy( {
7714
+ gravity: function() {
7715
+ // `n` for down, `s` for up
7716
+ var gravity = Backbone.$( this ).data( 'tooltip-pos' );
7717
+
7718
+ if ( undefined !== gravity ) {
7719
+ return gravity;
7720
+ } else {
7721
+ return 'n';
7722
+ }
7723
+ },
7724
+ title: function() {
7725
+ return this.getAttribute( 'data-tooltip' );
7726
  }
7727
  } );
7728
 
7729
+ this.openActiveSection();
7730
  },
7731
 
7732
+ onRenderTemplate: function() {
7733
+ this.activateTab( this.ui.tabs.eq( 0 ) );
7734
  },
7735
 
7736
+ onModelDestroy: function() {
7737
+ this.destroy();
7738
+ },
 
 
7739
 
7740
+ onClickTabControl: function( event ) {
7741
+ event.preventDefault();
7742
 
7743
+ var $tab = this.$( event.currentTarget );
 
 
7744
 
7745
+ if ( this.activeTab === $tab.data( 'tab' ) ) {
7746
+ return;
7747
+ }
7748
 
7749
+ this.activateTab( $tab );
 
7750
 
7751
+ this._renderChildren();
7752
  },
7753
 
7754
+ onReloadButtonClick: function() {
7755
+ elementor.reloadPreview();
7756
  },
7757
 
7758
+ onDeviceModeChange: function() {
7759
+ this.$el.removeClass( 'elementor-responsive-switchers-open' );
 
 
 
 
 
7760
  },
7761
 
7762
+ onChildviewControlSectionClicked: function( childView ) {
7763
+ var isSectionOpen = childView.ui.heading.hasClass( 'elementor-open' );
 
 
 
 
 
 
7764
 
7765
+ this.activateSection( isSectionOpen ? null : childView.model.get( 'name' ) );
 
7766
 
7767
+ this._renderChildren();
7768
+ },
7769
 
7770
+ onChildviewResponsiveSwitcherClick: function( childView, device ) {
7771
+ if ( 'desktop' === device ) {
7772
+ this.$el.toggleClass( 'elementor-responsive-switchers-open' );
7773
  }
7774
+ }
7775
+ } );
7776
 
7777
+ module.exports = ControlsStack;
 
 
 
 
 
 
7778
 
7779
+ },{"elementor-behaviors/inner-tabs":3}],90:[function(require,module,exports){
7780
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
7781
+ ControlBaseMultipleItemView;
7782
 
7783
+ ControlBaseMultipleItemView = ControlBaseItemView.extend( {
 
7784
 
7785
+ applySavedValue: function() {
7786
+ var values = this.getControlValue(),
7787
+ $inputs = this.$( '[data-setting]' ),
7788
+ self = this;
7789
 
7790
+ _.each( values, function( value, key ) {
7791
+ var $input = $inputs.filter( function() {
7792
+ return key === this.dataset.setting;
7793
+ } );
7794
 
7795
+ self.setInputValue( $input, value );
7796
+ } );
7797
+ },
7798
 
7799
+ getControlValue: function( key ) {
7800
+ var values = this.elementSettingsModel.get( this.model.get( 'name' ) );
7801
+
7802
+ if ( ! Backbone.$.isPlainObject( values ) ) {
7803
+ return {};
7804
  }
7805
 
7806
+ if ( key ) {
7807
+ return values[ key ] || '';
7808
+ }
7809
 
7810
+ return elementor.helpers.cloneObject( values );
7811
+ },
 
 
7812
 
7813
+ setValue: function( key, value ) {
7814
+ var values = this.getControlValue();
7815
 
7816
+ if ( 'object' === typeof key ) {
7817
+ _.each( key, function( internalValue, internalKey ) {
7818
+ values[ internalKey ] = internalValue;
7819
+ } );
7820
+ } else {
7821
+ values[ key ] = value;
7822
+ }
7823
 
7824
+ this.setSettingsModel( values );
7825
  },
7826
 
7827
+ updateElementModel: function( value, input ) {
7828
+ var key = input.dataset.setting;
 
 
7829
 
7830
+ this.setValue( key, value );
7831
+ }
7832
+ }, {
7833
+ // Static methods
7834
+ getStyleValue: function( placeholder, controlValue ) {
7835
+ if ( ! _.isObject( controlValue ) ) {
7836
+ return ''; // invalid
7837
  }
7838
 
7839
+ return controlValue[ placeholder ];
7840
+ }
7841
+ } );
 
 
 
 
7842
 
7843
+ module.exports = ControlBaseMultipleItemView;
 
7844
 
7845
+ },{"elementor-views/controls/base":92}],91:[function(require,module,exports){
7846
+ var ControlBaseMultipleItemView = require( 'elementor-views/controls/base-multiple' ),
7847
+ ControlBaseUnitsItemView;
 
7848
 
7849
+ ControlBaseUnitsItemView = ControlBaseMultipleItemView.extend( {
 
7850
 
7851
+ getCurrentRange: function() {
7852
+ return this.getUnitRange( this.getControlValue( 'unit' ) );
7853
  },
7854
 
7855
+ getUnitRange: function( unit ) {
7856
+ var ranges = this.model.get( 'range' );
7857
 
7858
+ if ( ! ranges || ! ranges[ unit ] ) {
7859
+ return false;
7860
  }
7861
 
7862
+ return ranges[ unit ];
7863
+ }
7864
+ } );
7865
 
7866
+ module.exports = ControlBaseUnitsItemView;
 
7867
 
7868
+ },{"elementor-views/controls/base-multiple":90}],92:[function(require,module,exports){
7869
+ var ControlBaseItemView;
7870
 
7871
+ ControlBaseItemView = Marionette.CompositeView.extend( {
7872
+ ui: function() {
7873
+ return {
7874
+ input: 'input[data-setting][type!="checkbox"][type!="radio"]',
7875
+ checkbox: 'input[data-setting][type="checkbox"]',
7876
+ radio: 'input[data-setting][type="radio"]',
7877
+ select: 'select[data-setting]',
7878
+ textarea: 'textarea[data-setting]',
7879
+ controlTitle: '.elementor-control-title',
7880
+ responsiveSwitchers: '.elementor-responsive-switcher'
7881
+ };
7882
  },
7883
 
7884
+ behaviors: function() {
7885
+ var behaviors = {};
 
7886
 
7887
+ return elementor.hooks.applyFilters( 'controls/base/behaviors', behaviors, this );
7888
+ },
7889
 
7890
+ className: function() {
7891
+ // TODO: Any better classes for that?
7892
+ var classes = 'elementor-control elementor-control-' + this.model.get( 'name' ) + ' elementor-control-type-' + this.model.get( 'type' ),
7893
+ modelClasses = this.model.get( 'classes' ),
7894
+ responsive = this.model.get( 'responsive' );
7895
 
7896
+ if ( ! _.isEmpty( modelClasses ) ) {
7897
+ classes += ' ' + modelClasses;
 
7898
  }
7899
 
7900
+ if ( ! _.isEmpty( this.model.get( 'section' ) ) ) {
7901
+ classes += ' elementor-control-under-section';
7902
+ }
7903
 
7904
+ if ( ! _.isEmpty( responsive ) ) {
7905
+ classes += ' elementor-control-responsive-' + responsive.max;
7906
+ }
 
7907
 
7908
+ return classes;
7909
+ },
7910
 
7911
+ getTemplate: function() {
7912
+ return Marionette.TemplateCache.get( '#tmpl-elementor-control-' + this.model.get( 'type' ) + '-content' );
7913
+ },
7914
+
7915
+ templateHelpers: function() {
7916
+ var controlData = {
7917
+ controlValue: this.getControlValue(),
7918
+ _cid: this.model.cid
7919
+ };
7920
 
 
 
7921
  return {
7922
+ data: _.extend( {}, this.model.toJSON(), controlData )
7923
  };
7924
  },
7925
 
7926
+ baseEvents: {
7927
+ 'input @ui.input': 'onBaseInputChange',
7928
+ 'change @ui.checkbox': 'onBaseInputChange',
7929
+ 'change @ui.radio': 'onBaseInputChange',
7930
+ 'input @ui.textarea': 'onBaseInputChange',
7931
+ 'change @ui.select': 'onBaseInputChange',
7932
+ 'click @ui.responsiveSwitchers': 'onSwitcherClick'
7933
+ },
7934
 
7935
+ childEvents: {},
 
 
 
 
7936
 
7937
+ events: function() {
7938
+ return _.extend( {}, this.baseEvents, this.childEvents );
7939
+ },
7940
 
7941
+ initialize: function( options ) {
7942
+ this.elementSettingsModel = options.elementSettingsModel;
 
7943
 
7944
+ var controlType = this.model.get( 'type' ),
7945
+ controlSettings = Backbone.$.extend( true, {}, elementor.config.controls[ controlType ], this.model.attributes );
 
7946
 
7947
+ this.model.set( controlSettings );
 
 
7948
 
7949
+ this.listenTo( this.elementSettingsModel, 'change', this.toggleControlVisibility )
7950
+ .listenTo( this.elementSettingsModel, 'change:external:' + this.model.get( 'name' ), this.onSettingsExternalChange );
7951
+ },
7952
 
7953
+ getControlValue: function() {
7954
+ return this.elementSettingsModel.get( this.model.get( 'name' ) );
7955
  },
7956
 
7957
+ setValue: function( value ) {
7958
+ this.setSettingsModel( value );
 
 
7959
  },
7960
 
7961
+ setSettingsModel: function( value ) {
7962
+ this.elementSettingsModel.set( this.model.get( 'name' ), value );
7963
 
7964
+ this.triggerMethod( 'settings:change' );
7965
+ },
 
7966
 
7967
+ applySavedValue: function() {
7968
+ this.setInputValue( '[data-setting="' + this.model.get( 'name' ) + '"]', this.getControlValue() );
7969
  },
7970
 
7971
+ getEditSettings: function( setting ) {
7972
+ var settings = this.getOption( 'elementEditSettings' ).toJSON();
7973
+
7974
+ if ( setting ) {
7975
+ return settings[ setting ];
7976
+ }
7977
+
7978
+ return settings;
7979
  },
7980
 
7981
+ setEditSetting: function( settingKey, settingValue ) {
7982
+ var settings = this.getOption( 'elementEditSettings' );
7983
 
7984
+ settings.set( settingKey, settingValue );
7985
  },
7986
 
7987
+ getInputValue: function( input ) {
7988
+ var $input = this.$( input ),
7989
+ inputValue = $input.val(),
7990
+ inputType = $input.attr( 'type' );
 
 
7991
 
7992
+ if ( -1 !== [ 'radio', 'checkbox' ].indexOf( inputType ) ) {
7993
+ return $input.prop( 'checked' ) ? inputValue : '';
7994
+ }
 
 
 
 
 
7995
 
7996
+ if ( 'number' === inputType && _.isFinite( inputValue ) ) {
7997
+ return +inputValue;
7998
  }
7999
 
8000
+ // Temp fix for jQuery (< 3.0) that return null instead of empty array
8001
+ if ( 'SELECT' === input.tagName && $input.prop( 'multiple' ) && null === inputValue ) {
8002
+ inputValue = [];
8003
+ }
8004
 
8005
+ return inputValue;
 
 
 
 
 
8006
  },
8007
 
8008
+ setInputValue: function( input, value ) {
8009
+ var $input = this.$( input ),
8010
+ inputType = $input.attr( 'type' );
 
8011
 
8012
+ if ( 'checkbox' === inputType ) {
8013
+ $input.prop( 'checked', !! value );
8014
+ } else if ( 'radio' === inputType ) {
8015
+ $input.filter( '[value="' + value + '"]' ).prop( 'checked', true );
8016
+ } else {
8017
+ $input.val( value );
8018
+ }
8019
  },
8020
 
8021
+ onSettingsError: function() {
8022
+ this.$el.addClass( 'elementor-error' );
 
 
 
 
 
 
 
 
 
 
 
8023
  },
8024
 
8025
+ onSettingsChange: function() {
8026
+ this.$el.removeClass( 'elementor-error' );
8027
+ },
 
 
 
8028
 
8029
+ onRender: function() {
8030
+ this.applySavedValue();
 
 
 
 
8031
 
8032
+ var layoutType = this.model.get( 'label_block' ) ? 'block' : 'inline',
8033
+ showLabel = this.model.get( 'show_label' ),
8034
+ elClasses = 'elementor-label-' + layoutType;
8035
 
8036
+ elClasses += ' elementor-control-separator-' + this.model.get( 'separator' );
 
8037
 
8038
+ if ( ! showLabel ) {
8039
+ elClasses += ' elementor-control-hidden-label';
 
8040
  }
8041
 
8042
+ this.$el.addClass( elClasses );
8043
+ this.renderResponsiveSwitchers();
 
 
 
8044
 
8045
+ this.triggerMethod( 'ready' );
8046
+ this.toggleControlVisibility();
8047
  },
8048
 
8049
+ onBaseInputChange: function( event ) {
8050
+ var input = event.currentTarget,
8051
+ value = this.getInputValue( input ),
8052
+ validators = this.elementSettingsModel.validators[ this.model.get( 'name' ) ];
 
 
 
 
 
 
 
 
 
 
 
 
8053
 
8054
+ if ( validators ) {
8055
+ var oldValue = this.getControlValue();
 
8056
 
8057
+ var isValidValue = validators.every( function( validator ) {
8058
+ return validator.isValid( value, oldValue );
8059
+ } );
8060
 
8061
+ if ( ! isValidValue ) {
8062
+ this.setInputValue( input, oldValue );
 
8063
 
8064
+ return;
8065
+ }
8066
+ }
 
8067
 
8068
+ this.updateElementModel( value, input );
8069
 
8070
+ this.triggerMethod( 'input:change', event );
8071
+ },
 
8072
 
8073
+ onSwitcherClick: function( event ) {
8074
+ var device = Backbone.$( event.currentTarget ).data( 'device' );
8075
 
8076
+ elementor.changeDeviceMode( device );
 
8077
 
8078
+ this.triggerMethod( 'responsive:switcher:click', device );
8079
  },
8080
 
8081
+ onSettingsExternalChange: function() {
8082
+ this.applySavedValue();
8083
+ },
 
 
 
 
 
 
 
 
8084
 
8085
+ renderResponsiveSwitchers: function() {
8086
+ if ( _.isEmpty( this.model.get( 'responsive' ) ) ) {
8087
  return;
8088
  }
8089
 
8090
+ var templateHtml = Backbone.$( '#tmpl-elementor-control-responsive-switchers' ).html();
 
 
 
 
 
 
 
 
 
 
8091
 
8092
+ this.ui.controlTitle.after( templateHtml );
 
 
8093
  },
8094
 
8095
+ toggleControlVisibility: function() {
8096
+ var isVisible = elementor.helpers.isActiveControl( this.model, this.elementSettingsModel.attributes );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8097
 
8098
+ this.$el.toggleClass( 'elementor-hidden-control', ! isVisible );
 
 
8099
 
8100
+ elementor.channels.data.trigger( 'scrollbar:update' );
 
 
8101
  },
8102
 
8103
+ onReady: function() {},
 
8104
 
8105
+ updateElementModel: function( value ) {
8106
+ this.setValue( value );
8107
+ }
8108
+ }, {
8109
+ // Static methods
8110
+ getStyleValue: function( placeholder, controlValue ) {
8111
+ return controlValue;
8112
  }
8113
  } );
8114
 
8115
+ module.exports = ControlBaseItemView;
8116
 
8117
+ },{}],93:[function(require,module,exports){
8118
  var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8119
+ ControlBoxShadowItemView;
8120
 
8121
+ ControlBoxShadowItemView = ControlMultipleBaseItemView.extend( {
8122
  ui: function() {
8123
  var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
8124
 
8125
+ ui.sliders = '.elementor-slider';
8126
+ ui.colors = '.elementor-shadow-color-picker';
 
8127
 
8128
  return ui;
8129
  },
8130
 
8131
  childEvents: {
8132
+ 'slide @ui.sliders': 'onSlideChange'
 
8133
  },
8134
 
8135
+ initSliders: function() {
8136
+ var value = this.getControlValue();
 
 
 
8137
 
8138
+ this.ui.sliders.each( function() {
8139
+ var $slider = Backbone.$( this ),
8140
+ $input = $slider.next( '.elementor-slider-input' ).find( 'input' );
 
8141
 
8142
+ $slider.slider( {
8143
+ value: value[ this.dataset.input ],
8144
+ min: +$input.attr( 'min' ),
8145
+ max: +$input.attr( 'max' )
8146
+ } );
8147
+ } );
8148
  },
8149
 
8150
+ initColors: function() {
8151
+ var self = this;
 
 
 
8152
 
8153
+ elementor.helpers.wpColorPicker( this.ui.colors, {
8154
+ change: function() {
8155
+ var $this = Backbone.$( this ),
8156
+ type = $this.data( 'setting' );
8157
 
8158
+ self.setValue( type, $this.wpColorPicker( 'color' ) );
 
 
 
 
 
 
8159
  },
8160
+
8161
+ clear: function() {
8162
+ self.setValue( this.dataset.setting, '' );
8163
+ }
 
 
 
 
8164
  } );
8165
+ },
8166
 
8167
+ onInputChange: function( event ) {
8168
+ var type = event.currentTarget.dataset.setting,
8169
+ $slider = this.ui.sliders.filter( '[data-input="' + type + '"]' );
8170
+
8171
+ $slider.slider( 'value', this.getControlValue( type ) );
8172
  },
8173
 
8174
+ onReady: function() {
8175
+ this.initSliders();
8176
+ this.initColors();
8177
+ },
 
 
 
8178
 
8179
+ onSlideChange: function( event, ui ) {
8180
+ var type = event.currentTarget.dataset.input,
8181
+ $input = this.ui.input.filter( '[data-setting="' + type + '"]' );
 
 
8182
 
8183
+ $input.val( ui.value );
8184
+ this.setValue( type, ui.value );
8185
  },
8186
 
8187
  onBeforeDestroy: function() {
8188
+ this.ui.colors.each( function() {
8189
+ var $color = Backbone.$( this );
8190
+
8191
+ if ( $color.wpColorPicker( 'instance' ) ) {
8192
+ $color.wpColorPicker( 'close' );
8193
+ }
8194
+ } );
8195
+
8196
  this.$el.remove();
8197
  }
8198
  } );
8199
 
8200
+ module.exports = ControlBoxShadowItemView;
8201
 
8202
+ },{"elementor-views/controls/base-multiple":90}],94:[function(require,module,exports){
8203
  var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8204
+ ControlChooseItemView;
8205
 
8206
+ ControlChooseItemView = ControlBaseItemView.extend( {
8207
+ ui: function() {
8208
+ var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
8209
 
8210
+ ui.inputs = '[type="radio"]';
 
 
 
 
 
8211
 
8212
+ return ui;
8213
+ },
 
8214
 
8215
+ childEvents: {
8216
+ 'mousedown label': 'onMouseDownLabel',
8217
+ 'click @ui.inputs': 'onClickInput',
8218
+ 'change @ui.inputs': 'onBaseInputChange'
8219
+ },
8220
 
8221
+ onMouseDownLabel: function( event ) {
8222
+ var $clickedLabel = this.$( event.currentTarget ),
8223
+ $selectedInput = this.$( '#' + $clickedLabel.attr( 'for' ) );
8224
 
8225
+ $selectedInput.data( 'checked', $selectedInput.prop( 'checked' ) );
8226
  },
8227
 
8228
+ onClickInput: function( event ) {
8229
+ if ( ! this.model.get( 'toggle' ) ) {
8230
+ return;
 
 
 
 
 
8231
  }
8232
 
8233
+ var $selectedInput = this.$( event.currentTarget );
 
8234
 
8235
+ if ( $selectedInput.data( 'checked' ) ) {
8236
+ $selectedInput.prop( 'checked', false ).trigger( 'change' );
 
8237
  }
8238
+ },
8239
 
8240
+ onRender: function() {
8241
+ ControlBaseItemView.prototype.onRender.apply( this, arguments );
8242
+
8243
+ var currentValue = this.getControlValue();
8244
+
8245
+ if ( currentValue ) {
8246
+ this.ui.inputs.filter( '[value="' + currentValue + '"]' ).prop( 'checked', true );
8247
+ } else if ( ! this.model.get( 'toggle' ) ) {
8248
+ this.ui.inputs.first().prop( 'checked', true ).trigger( 'change' );
8249
+ }
8250
  }
8251
  } );
8252
 
8253
+ module.exports = ControlChooseItemView;
8254
 
8255
+ },{"elementor-views/controls/base":92}],95:[function(require,module,exports){
8256
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8257
+ ControlCodeEditorItemView;
8258
+
8259
+ ControlCodeEditorItemView = ControlBaseItemView.extend( {
8260
 
 
8261
  ui: function() {
8262
+ var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
8263
 
8264
+ ui.editor = '.elementor-code-editor';
8265
 
8266
  return ui;
8267
  },
8268
 
8269
+ onReady: function() {
8270
+ var self = this;
8271
 
8272
+ if ( 'undefined' === typeof ace ) {
8273
+ return;
8274
+ }
8275
 
8276
+ self.editor = ace.edit( this.ui.editor[0] );
 
8277
 
8278
+ Backbone.$( self.editor.container ).addClass( 'elementor-input-style elementor-code-editor' );
 
8279
 
8280
+ self.editor.setOptions( {
8281
+ mode: 'ace/mode/' + self.model.attributes.language,
8282
+ minLines: 10,
8283
+ maxLines: Infinity,
8284
+ showGutter: true,
8285
+ useWorker: true
8286
+ } );
8287
 
8288
+ self.editor.setValue( self.getControlValue(), -1 ); // -1 = move cursor to the start
8289
 
8290
+ self.editor.on( 'change', function() {
8291
+ self.setValue( self.editor.getValue() );
8292
+ } );
8293
 
8294
+ if ( 'html' === self.model.attributes.language ) {
8295
+ // Remove the `doctype` annotation
8296
+ var session = self.editor.getSession();
8297
 
8298
+ session.on( 'changeAnnotation', function() {
8299
+ var annotations = session.getAnnotations() || [],
8300
+ annotationsLength = annotations.length,
8301
+ index = annotations.length;
8302
 
8303
+ while ( index-- ) {
8304
+ if ( /doctype first\. Expected/.test( annotations[ index ].text ) ) {
8305
+ annotations.splice( index, 1 );
8306
+ }
8307
+ }
 
8308
 
8309
+ if ( annotationsLength > annotations.length ) {
8310
+ session.setAnnotations( annotations );
8311
+ }
8312
+ }) ;
8313
  }
8314
+ }
8315
+ } );
 
 
 
 
 
8316
 
8317
+ module.exports = ControlCodeEditorItemView;
 
 
 
 
8318
 
8319
+ },{"elementor-views/controls/base":92}],96:[function(require,module,exports){
8320
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8321
+ ControlColorItemView;
8322
 
8323
+ ControlColorItemView = ControlBaseItemView.extend( {
8324
+ onReady: function() {
8325
+ var self = this;
8326
 
8327
+ elementor.helpers.wpColorPicker( self.ui.input, {
8328
+ change: function() {
8329
+ self.ui.input.val( self.ui.input.wpColorPicker( 'color' ) ).trigger( 'input' );
8330
+ },
8331
+ clear: function() {
8332
+ self.setValue( '' );
8333
+ }
8334
+ } ).wpColorPicker( 'instance' )
8335
+ .wrap.find( '> .wp-picker-input-wrap > .wp-color-picker' )
8336
+ .removeAttr( 'maxlength' );
8337
  },
8338
 
8339
+ onBeforeDestroy: function() {
8340
+ if ( this.ui.input.wpColorPicker( 'instance' ) ) {
8341
+ this.ui.input.wpColorPicker( 'close' );
8342
+ }
 
8343
 
8344
+ this.$el.remove();
8345
+ }
8346
+ } );
8347
 
8348
+ module.exports = ControlColorItemView;
 
 
 
8349
 
8350
+ },{"elementor-views/controls/base":92}],97:[function(require,module,exports){
8351
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8352
+ ControlDateTimePickerItemView;
8353
 
8354
+ ControlDateTimePickerItemView = ControlBaseItemView.extend( {
8355
+ ui: function() {
8356
+ var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
8357
 
8358
+ ui.picker = '.elementor-date-time-picker';
8359
 
8360
+ return ui;
8361
+ },
8362
+
8363
+ onReady: function() {
8364
+ var self = this;
8365
+
8366
+ var options = _.extend( this.model.get( 'picker_options' ), {
8367
+ onHide: function() {
8368
+ self.saveValue();
8369
+ }
8370
  } );
8371
+
8372
+ this.ui.picker.appendDtpicker( options ).handleDtpicker( 'setDate', new Date( this.getControlValue() ) );
8373
  },
8374
 
8375
+ saveValue: function() {
8376
+ this.setValue( this.ui.input.val() );
 
8377
  },
8378
 
8379
+ onBeforeDestroy: function() {
8380
+ this.saveValue();
8381
+ this.ui.picker.dtpicker( 'destroy' );
8382
+ }
8383
+ } );
8384
 
8385
+ module.exports = ControlDateTimePickerItemView;
 
8386
 
8387
+ },{"elementor-views/controls/base":92}],98:[function(require,module,exports){
8388
+ var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),
8389
+ ControlDimensionsItemView;
8390
 
8391
+ ControlDimensionsItemView = ControlBaseUnitsItemView.extend( {
8392
+ ui: function() {
8393
+ var ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );
8394
 
8395
+ ui.controls = '.elementor-control-dimension > input:enabled';
8396
+ ui.link = 'button.elementor-link-dimensions';
 
8397
 
8398
+ return ui;
8399
  },
8400
 
8401
+ childEvents: {
8402
+ 'click @ui.link': 'onLinkDimensionsClicked'
8403
+ },
 
 
 
8404
 
8405
+ defaultDimensionValue: 0,
 
8406
 
8407
+ initialize: function() {
8408
+ ControlBaseUnitsItemView.prototype.initialize.apply( this, arguments );
8409
 
8410
+ // TODO: Need to be in helpers, and not in variable
8411
+ this.model.set( 'allowed_dimensions', this.filterDimensions( this.model.get( 'allowed_dimensions' ) ) );
 
8412
  },
8413
 
8414
+ getPossibleDimensions: function() {
8415
+ return [
8416
+ 'top',
8417
+ 'right',
8418
+ 'bottom',
8419
+ 'left'
8420
+ ];
8421
  },
8422
 
8423
+ filterDimensions: function( filter ) {
8424
+ filter = filter || 'all';
 
 
 
 
8425
 
8426
+ var dimensions = this.getPossibleDimensions();
8427
 
8428
+ if ( 'all' === filter ) {
8429
+ return dimensions;
8430
+ }
 
8431
 
8432
+ if ( ! _.isArray( filter ) ) {
8433
+ if ( 'horizontal' === filter ) {
8434
+ filter = [ 'right', 'left' ];
8435
+ } else if ( 'vertical' === filter ) {
8436
+ filter = [ 'top', 'bottom' ];
8437
+ }
8438
+ }
8439
 
8440
+ return filter;
 
 
 
 
8441
  },
8442
 
8443
+ onReady: function() {
8444
+ var currentValue = this.getControlValue();
8445
 
8446
+ if ( ! this.isLinkedDimensions() ) {
8447
+ this.ui.link.addClass( 'unlinked' );
8448
 
8449
+ this.ui.controls.each( _.bind( function( index, element ) {
8450
+ var value = currentValue[ element.dataset.setting ];
 
 
 
8451
 
8452
+ if ( _.isEmpty( value ) ) {
8453
+ value = this.defaultDimensionValue;
8454
+ }
 
 
 
 
8455
 
8456
+ this.$( element ).val( value );
8457
+ }, this ) );
8458
+ }
8459
 
8460
+ this.fillEmptyDimensions();
8461
+ },
 
 
 
8462
 
8463
+ updateDimensionsValue: function() {
8464
+ var currentValue = {},
8465
+ dimensions = this.getPossibleDimensions(),
8466
+ $controls = this.ui.controls;
8467
 
8468
+ dimensions.forEach( _.bind( function( dimension ) {
8469
+ var $element = $controls.filter( '[data-setting="' + dimension + '"]' );
 
8470
 
8471
+ currentValue[ dimension ] = $element.length ? $element.val() : this.defaultDimensionValue;
8472
+ }, this ) );
8473
 
8474
+ this.setValue( currentValue );
8475
+ },
8476
+
8477
+ fillEmptyDimensions: function() {
8478
+ var dimensions = this.getPossibleDimensions(),
8479
+ allowedDimensions = this.model.get( 'allowed_dimensions' ),
8480
+ $controls = this.ui.controls;
8481
 
8482
+ if ( this.isLinkedDimensions() ) {
8483
+ return;
 
 
8484
  }
 
8485
 
8486
+ dimensions.forEach( _.bind( function( dimension ) {
8487
+ var $element = $controls.filter( '[data-setting="' + dimension + '"]' ),
8488
+ isAllowedDimension = -1 !== _.indexOf( allowedDimensions, dimension );
8489
 
8490
+ if ( isAllowedDimension && $element.length && _.isEmpty( $element.val() ) ) {
8491
+ $element.val( this.defaultDimensionValue );
8492
+ }
8493
 
8494
+ }, this ) );
 
8495
  },
8496
 
8497
+ updateDimensions: function() {
8498
+ this.fillEmptyDimensions();
8499
+ this.updateDimensionsValue();
8500
+ },
8501
 
8502
+ resetDimensions: function() {
8503
+ this.ui.controls.val( '' );
 
 
 
8504
 
8505
+ this.updateDimensionsValue();
8506
  },
8507
 
8508
+ onInputChange: function( event ) {
8509
+ var inputSetting = event.target.dataset.setting;
 
 
8510
 
8511
+ if ( 'unit' === inputSetting ) {
8512
+ this.resetDimensions();
 
 
8513
  }
8514
 
8515
+ if ( ! _.contains( this.getPossibleDimensions(), inputSetting ) ) {
 
8516
  return;
8517
  }
8518
 
8519
+ if ( this.isLinkedDimensions() ) {
8520
+ var $thisControl = this.$( event.target );
8521
 
8522
+ this.ui.controls.val( $thisControl.val() );
8523
+ }
8524
 
8525
+ this.updateDimensions();
8526
  },
8527
 
8528
+ onLinkDimensionsClicked: function( event ) {
8529
+ event.preventDefault();
8530
+ event.stopPropagation();
 
 
 
 
8531
 
8532
+ this.ui.link.toggleClass( 'unlinked' );
 
8533
 
8534
+ this.setValue( 'isLinked', ! this.ui.link.hasClass( 'unlinked' ) );
8535
+
8536
+ if ( this.isLinkedDimensions() ) {
8537
+ // Set all controls value from the first control.
8538
+ this.ui.controls.val( this.ui.controls.eq( 0 ).val() );
8539
  }
8540
 
8541
+ this.updateDimensions();
8542
  },
8543
 
8544
+ isLinkedDimensions: function() {
8545
+ return this.getControlValue( 'isLinked' );
8546
+ }
8547
+ } );
 
8548
 
8549
+ module.exports = ControlDimensionsItemView;
 
8550
 
8551
+ },{"elementor-views/controls/base-units":91}],99:[function(require,module,exports){
8552
+ var ControlSelect2View = require( 'elementor-views/controls/select2' );
8553
 
8554
+ module.exports = ControlSelect2View.extend( {
8555
+ getSelect2Options: function() {
8556
+ return {
8557
+ dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
8558
+ };
8559
  },
8560
 
8561
+ templateHelpers: function() {
8562
+ var helpers = ControlSelect2View.prototype.templateHelpers.apply( this, arguments );
 
8563
 
8564
+ helpers.getFontsByGroups = _.bind( function( groups ) {
8565
+ var fonts = this.model.get( 'fonts' ),
8566
+ filteredFonts = {};
 
 
8567
 
8568
+ _.each( fonts, function( fontType, fontName ) {
8569
+ if ( _.isArray( groups ) && _.contains( groups, fontType ) || fontType === groups ) {
8570
+ filteredFonts[ fontName ] = fontType;
8571
+ }
8572
+ } );
8573
 
8574
+ return filteredFonts;
8575
+ }, this );
 
 
8576
 
8577
+ return helpers;
8578
+ }
8579
+ } );
8580
 
8581
+ },{"elementor-views/controls/select2":109}],100:[function(require,module,exports){
8582
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8583
+ ControlMediaItemView;
8584
 
8585
+ ControlMediaItemView = ControlBaseItemView.extend( {
8586
+ ui: function() {
8587
+ var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
 
8588
 
8589
+ ui.addImages = '.elementor-control-gallery-add';
8590
+ ui.clearGallery = '.elementor-control-gallery-clear';
8591
+ ui.galleryThumbnails = '.elementor-control-gallery-thumbnails';
 
8592
 
8593
+ return ui;
 
8594
  },
8595
 
8596
+ childEvents: {
8597
+ 'click @ui.addImages': 'onAddImagesClick',
8598
+ 'click @ui.clearGallery': 'onClearGalleryClick',
8599
+ 'click @ui.galleryThumbnails': 'onGalleryThumbnailsClick'
8600
+ },
8601
 
8602
+ onReady: function() {
8603
+ var hasImages = this.hasImages();
 
 
 
8604
 
8605
+ this.$el
8606
+ .toggleClass( 'elementor-gallery-has-images', hasImages )
8607
+ .toggleClass( 'elementor-gallery-empty', ! hasImages );
8608
 
8609
+ this.initRemoveDialog();
8610
+ },
8611
 
8612
+ hasImages: function() {
8613
+ return !! this.getControlValue().length;
8614
+ },
8615
 
8616
+ openFrame: function( action ) {
8617
+ this.initFrame( action );
8618
 
8619
+ this.frame.open();
8620
  },
8621
 
8622
+ initFrame: function( action ) {
8623
+ var frameStates = {
8624
+ create: 'gallery',
8625
+ add: 'gallery-library',
8626
+ edit: 'gallery-edit'
8627
+ };
8628
 
8629
+ var options = {
8630
+ frame: 'post',
8631
+ multiple: true,
8632
+ state: frameStates[ action ],
8633
+ button: {
8634
+ text: elementor.translate( 'insert_media' )
8635
+ }
8636
+ };
8637
+
8638
+ if ( this.hasImages() ) {
8639
+ options.selection = this.fetchSelection();
8640
  }
8641
 
8642
+ this.frame = wp.media( options );
 
 
 
 
8643
 
8644
+ // When a file is selected, run a callback.
8645
+ this.frame.on( {
8646
+ 'update': this.select,
8647
+ 'menu:render:default': this.menuRender,
8648
+ 'content:render:browse': this.gallerySettings
8649
+ }, this );
8650
+ },
8651
 
8652
+ menuRender: function( view ) {
8653
+ view.unset( 'insert' );
8654
+ view.unset( 'featured-image' );
8655
+ },
8656
 
8657
+ gallerySettings: function( browser ) {
8658
+ browser.sidebar.on( 'ready', function() {
8659
+ browser.sidebar.unset( 'gallery' );
8660
+ } );
8661
+ },
8662
 
8663
+ fetchSelection: function() {
8664
+ var attachments = wp.media.query( {
8665
+ orderby: 'post__in',
8666
+ order: 'ASC',
8667
+ type: 'image',
8668
+ perPage: -1,
8669
+ post__in: _.pluck( this.getControlValue(), 'id' )
8670
+ } );
8671
 
8672
+ return new wp.media.model.Selection( attachments.models, {
8673
+ props: attachments.props.toJSON(),
8674
+ multiple: true
8675
+ } );
8676
  },
8677
 
8678
+ /**
8679
+ * Callback handler for when an attachment is selected in the media modal.
8680
+ * Gets the selected image information, and sets it within the control.
8681
+ */
8682
+ select: function( selection ) {
8683
+ var images = [];
8684
 
8685
+ selection.each( function( image ) {
8686
+ images.push( {
8687
+ id: image.get( 'id' ),
8688
+ url: image.get( 'url' )
8689
+ } );
8690
+ } );
8691
 
8692
+ this.setValue( images );
 
8693
 
 
 
8694
  this.render();
8695
  },
8696
 
8697
+ onBeforeDestroy: function() {
8698
+ if ( this.frame ) {
8699
+ this.frame.off();
8700
+ }
8701
 
8702
+ this.$el.remove();
 
8703
  },
8704
 
8705
+ resetGallery: function() {
8706
+ this.setValue( '' );
 
8707
 
8708
+ this.render();
8709
+ },
 
8710
 
8711
+ initRemoveDialog: function() {
8712
+ var removeDialog;
8713
 
8714
+ this.getRemoveDialog = function() {
8715
+ if ( ! removeDialog ) {
8716
+ removeDialog = elementor.dialogsManager.createWidget( 'confirm', {
8717
+ message: elementor.translate( 'dialog_confirm_gallery_delete' ),
8718
+ headerMessage: elementor.translate( 'delete_gallery' ),
8719
+ strings: {
8720
+ confirm: elementor.translate( 'delete' ),
8721
+ cancel: elementor.translate( 'cancel' )
8722
+ },
8723
+ defaultOption: 'confirm',
8724
+ onConfirm: _.bind( this.resetGallery, this )
8725
+ } );
8726
+ }
8727
 
8728
+ return removeDialog;
8729
+ };
8730
+ },
8731
 
8732
+ onAddImagesClick: function() {
8733
+ this.openFrame( this.hasImages() ? 'add' : 'create' );
8734
+ },
8735
 
8736
+ onClearGalleryClick: function() {
8737
+ this.getRemoveDialog().show();
8738
  },
8739
 
8740
+ onGalleryThumbnailsClick: function() {
8741
+ this.openFrame( 'edit' );
8742
  }
8743
  } );
8744
 
8745
+ module.exports = ControlMediaItemView;
8746
 
8747
+ },{"elementor-views/controls/base":92}],101:[function(require,module,exports){
8748
+ var ControlSelect2View = require( 'elementor-views/controls/select2' ),
8749
+ ControlIconView;
8750
 
8751
+ ControlIconView = ControlSelect2View.extend( {
 
 
8752
 
8753
+ initialize: function() {
8754
+ ControlSelect2View.prototype.initialize.apply( this, arguments );
 
 
 
8755
 
8756
+ this.filterIcons();
 
8757
  },
8758
 
8759
+ filterIcons: function() {
8760
+ var icons = this.model.get( 'icons' ),
8761
+ include = this.model.get( 'include' ),
8762
+ exclude = this.model.get( 'exclude' );
 
 
 
 
 
 
 
 
 
 
8763
 
8764
+ if ( include ) {
8765
+ var filteredIcons = {};
 
8766
 
8767
+ _.each( include, function( iconKey ) {
8768
+ filteredIcons[ iconKey ] = icons[ iconKey ];
8769
+ } );
8770
 
8771
+ this.model.set( 'icons', filteredIcons );
8772
+ return;
8773
+ }
8774
 
8775
+ if ( exclude ) {
8776
+ _.each( exclude, function( iconKey ) {
8777
+ delete icons[ iconKey ];
8778
+ } );
8779
+ }
8780
  },
8781
 
8782
+ iconsList: function( icon ) {
8783
+ if ( ! icon.id ) {
8784
+ return icon.text;
8785
+ }
 
8786
 
8787
+ return Backbone.$(
8788
+ '<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>'
8789
+ );
8790
  },
8791
 
8792
+ getSelect2Options: function() {
8793
+ return {
8794
+ allowClear: true,
8795
+ templateResult: _.bind( this.iconsList, this ),
8796
+ templateSelection: _.bind( this.iconsList, this )
8797
+ };
8798
+ }
8799
+ } );
8800
 
8801
+ module.exports = ControlIconView;
 
8802
 
8803
+ },{"elementor-views/controls/select2":109}],102:[function(require,module,exports){
8804
+ var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8805
+ ControlImageDimensionsItemView;
8806
 
8807
+ ControlImageDimensionsItemView = ControlMultipleBaseItemView.extend( {
8808
+ ui: function() {
8809
+ return {
8810
+ inputWidth: 'input[data-setting="width"]',
8811
+ inputHeight: 'input[data-setting="height"]',
8812
 
8813
+ btnApply: 'button.elementor-image-dimensions-apply-button'
8814
+ };
8815
  },
8816
 
8817
+ // Override the base events
8818
+ baseEvents: {
8819
+ 'click @ui.btnApply': 'onApplyClicked'
 
 
 
 
 
8820
  },
8821
 
8822
+ onApplyClicked: function( event ) {
8823
+ event.preventDefault();
 
 
8824
 
8825
+ this.setValue( {
8826
+ width: this.ui.inputWidth.val(),
8827
+ height: this.ui.inputHeight.val()
8828
+ } );
8829
  }
8830
  } );
8831
 
8832
+ module.exports = ControlImageDimensionsItemView;
8833
 
8834
+ },{"elementor-views/controls/base-multiple":90}],103:[function(require,module,exports){
8835
+ var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8836
+ ControlMediaItemView;
8837
 
8838
+ ControlMediaItemView = ControlMultipleBaseItemView.extend( {
8839
  ui: function() {
8840
+ var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
8841
 
8842
+ ui.controlMedia = '.elementor-control-media';
8843
+ ui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';
8844
+ ui.deleteButton = '.elementor-control-media-delete';
8845
 
8846
  return ui;
8847
  },
8848
 
8849
  childEvents: {
8850
+ 'click @ui.frameOpeners': 'openFrame',
8851
+ 'click @ui.deleteButton': 'deleteImage'
8852
  },
8853
 
8854
+ onReady: function() {
8855
+ if ( _.isEmpty( this.getControlValue( 'url' ) ) ) {
8856
+ this.ui.controlMedia.addClass( 'media-empty' );
8857
+ }
8858
+ },
8859
 
8860
+ openFrame: function() {
8861
+ if ( ! this.frame ) {
8862
+ this.initFrame();
8863
+ }
8864
 
8865
+ this.frame.open();
8866
  },
8867
 
8868
+ deleteImage: function() {
8869
+ this.setValue( {
8870
+ url: '',
8871
+ id: ''
8872
+ } );
8873
 
8874
+ this.render();
8875
  },
8876
 
8877
+ /**
8878
+ * Create a media modal select frame, and store it so the instance can be reused when needed.
8879
+ */
8880
+ initFrame: function() {
8881
+ this.frame = wp.media( {
8882
+ button: {
8883
+ text: elementor.translate( 'insert_media' )
8884
+ },
8885
+ states: [
8886
+ new wp.media.controller.Library( {
8887
+ title: elementor.translate( 'insert_media' ),
8888
+ library: wp.media.query( { type: 'image' } ),
8889
+ multiple: false,
8890
+ date: false
8891
+ } )
8892
+ ]
8893
+ } );
8894
 
8895
+ // When a file is selected, run a callback.
8896
+ this.frame.on( 'insert select', _.bind( this.select, this ) );
8897
  },
8898
 
8899
+ /**
8900
+ * Callback handler for when an attachment is selected in the media modal.
8901
+ * Gets the selected image information, and sets it within the control.
8902
+ */
8903
+ select: function() {
8904
+ // Get the attachment from the modal frame.
8905
+ var attachment = this.frame.state().get( 'selection' ).first().toJSON();
8906
 
8907
+ if ( attachment.url ) {
8908
+ this.setValue( {
8909
+ url: attachment.url,
8910
+ id: attachment.id
8911
+ } );
8912
+
8913
+ this.render();
8914
+ }
8915
  },
8916
 
8917
+ onBeforeDestroy: function() {
8918
+ this.$el.remove();
8919
  }
8920
  } );
8921
 
8922
+ module.exports = ControlMediaItemView;
8923
 
8924
+ },{"elementor-views/controls/base-multiple":90}],104:[function(require,module,exports){
8925
+ var ControlBaseItemView = require( 'elementor-views/controls/base' ),
8926
+ ControlNumberItemView;
8927
 
8928
+ ControlNumberItemView = ControlBaseItemView.extend( {
8929
+ correctionTimeOut: 0,
 
 
 
8930
 
8931
+ getInputValue: function( input ) {
8932
+ var self = this,
8933
+ inputValue = ControlBaseItemView.prototype.getInputValue.apply( self, arguments ),
8934
+ validValue = inputValue,
8935
+ min = self.model.get( 'min' ),
8936
+ max = self.model.get( 'max' );
8937
 
8938
+ if ( ! _.isFinite( inputValue ) && self.model.get( 'nullable' ) ) {
8939
+ return inputValue;
8940
+ }
8941
 
8942
+ if ( _.isFinite( min ) && inputValue < min ) {
8943
+ validValue = min;
8944
+ }
8945
+
8946
+ if ( _.isFinite( max ) && inputValue > max ) {
8947
+ validValue = max;
8948
+ }
8949
+
8950
+ return validValue;
8951
+ },
8952
+
8953
+ updateElementModel: function( value, input ) {
8954
+ var self = this,
8955
+ originalInputValue = ControlBaseItemView.prototype.getInputValue.call( self, input );
8956
+
8957
+ if ( originalInputValue !== value ) {
8958
+ self.correctionTimeOut = setTimeout( function() {
8959
+ self.setInputValue( input, value );
8960
+ }, 1200 );
8961
+ }
8962
+
8963
+ ControlBaseItemView.prototype.updateElementModel.apply( this, arguments );
8964
+ },
8965
+
8966
+ onBaseInputChange: function() {
8967
+ if ( this.correctionTimeOut ) {
8968
+ clearTimeout( this.correctionTimeOut );
8969
+ }
8970
+
8971
+ ControlBaseItemView.prototype.onBaseInputChange.apply( this, arguments );
8972
  }
8973
  } );
8974
 
8975
+ module.exports = ControlNumberItemView;
8976
 
8977
+ },{"elementor-views/controls/base":92}],105:[function(require,module,exports){
8978
+ var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
8979
+ ControlOrderItemView;
8980
 
8981
+ ControlOrderItemView = ControlMultipleBaseItemView.extend( {
8982
  ui: function() {
8983
+ var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
8984
 
8985
+ ui.reverseOrderLabel = '.elementor-control-order-label';
 
8986
 
8987
  return ui;
8988
  },
8989
 
8990
+ changeLabelTitle: function() {
8991
+ var reverseOrder = this.getControlValue( 'reverse_order' );
8992
+
8993
+ this.ui.reverseOrderLabel.attr( 'title', elementor.translate( reverseOrder ? 'asc' : 'desc' ) );
8994
  },
8995
 
8996
+ onRender: function() {
8997
+ ControlMultipleBaseItemView.prototype.onRender.apply( this, arguments );
 
8998
 
8999
+ this.changeLabelTitle();
9000
  },
9001
 
9002
+ onInputChange: function() {
9003
+ this.changeLabelTitle();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9004
  }
9005
  } );
9006
 
9007
+ module.exports = ControlOrderItemView;
9008
 
9009
+ },{"elementor-views/controls/base-multiple":90}],106:[function(require,module,exports){
9010
+ var RepeaterRowView;
 
9011
 
9012
+ RepeaterRowView = Marionette.CompositeView.extend( {
9013
+ template: Marionette.TemplateCache.get( '#tmpl-elementor-repeater-row' ),
9014
+
9015
+ className: 'repeater-fields',
9016
+
9017
+ ui: {
9018
+ duplicateButton: '.elementor-repeater-tool-duplicate',
9019
+ editButton: '.elementor-repeater-tool-edit',
9020
+ removeButton: '.elementor-repeater-tool-remove',
9021
+ itemTitle: '.elementor-repeater-row-item-title'
9022
  },
9023
 
9024
+ behaviors: {
9025
+ HandleInnerTabs: {
9026
+ behaviorClass: require( 'elementor-behaviors/inner-tabs' )
9027
+ }
 
 
 
 
 
 
 
9028
  },
9029
 
9030
+ triggers: {
9031
+ 'click @ui.removeButton': 'click:remove',
9032
+ 'click @ui.duplicateButton': 'click:duplicate',
9033
+ 'click @ui.itemTitle': 'click:edit'
9034
+ },
9035
 
9036
+ templateHelpers: function() {
9037
+ return {
9038
+ itemIndex: this.getOption( 'itemIndex' )
9039
+ };
9040
+ },
9041
 
9042
+ childViewContainer: '.elementor-repeater-row-controls',
9043
 
9044
+ getChildView: function( item ) {
9045
+ var controlType = item.get( 'type' );
 
 
 
 
 
9046
 
9047
+ return elementor.getControlView( controlType );
9048
+ },
 
9049
 
9050
+ childViewOptions: function() {
9051
+ return {
9052
+ elementSettingsModel: this.model
9053
+ };
9054
+ },
9055
 
9056
+ checkConditions: function() {
9057
+ var self = this;
9058
 
9059
+ self.collection.each( function( model ) {
9060
+ var conditions = model.get( 'conditions' ),
9061
+ parentConditions = model.get( 'parent_conditions' ),
9062
+ isVisible = true;
9063
 
9064
+ if ( conditions ) {
9065
+ isVisible = elementor.conditions.check( conditions, self.model.attributes );
 
 
 
 
 
9066
  }
 
 
 
9067
 
9068
+ if ( parentConditions ) {
9069
+ isVisible = elementor.conditions.check( parentConditions, self.getOption( 'parentModel' ).attributes );
9070
+ }
 
9071
 
9072
+ var child = self.children.findByModelCid( model.cid );
 
9073
 
9074
+ child.$el.toggleClass( 'elementor-panel-hide', ! isVisible );
9075
+ } );
9076
  },
9077
 
9078
+ updateIndex: function( newIndex ) {
9079
+ this.itemIndex = newIndex;
9080
+ this.setTitle();
 
 
 
9081
  },
9082
 
9083
+ setTitle: function() {
9084
+ var self = this,
9085
+ titleField = self.getOption( 'titleField' ),
9086
+ title = '';
9087
 
9088
+ if ( titleField ) {
9089
+ var values = {};
 
9090
 
9091
+ self.children.each( function( child ) {
9092
+ values[ child.model.get( 'name' ) ] = child.getControlValue();
9093
+ } );
9094
 
9095
+ title = Marionette.TemplateCache.prototype.compileTemplate( titleField )( values );
9096
+ }
9097
 
9098
+ if ( ! title ) {
9099
+ title = elementor.translate( 'Item #{0}', [ self.getOption( 'itemIndex' ) ] );
9100
+ }
9101
+
9102
+ self.ui.itemTitle.html( title );
9103
  },
9104
 
9105
+ initialize: function( opt