',
- '
',
+ '
',
' ',
'{{#installed}}',
'
',
diff --git a/app/admin/assets/package.json b/app/admin/assets/package.json
index 695c5e9a0c..1db9592995 100644
--- a/app/admin/assets/package.json
+++ b/app/admin/assets/package.json
@@ -1,26 +1,45 @@
{
"private": true,
"scripts": {
- "dev": "NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
- "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
- "watche": "npm run dev -- --watch",
- "prod": "NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
+ "dev": "mix",
+ "watch": "mix watch",
+ "watch-poll": "mix watch -- --watch-options-poll=1000",
+ "hot": "mix watch --hot",
+ "prod": "mix --production"
},
- "devDependencies": {
- "@fortawesome/fontawesome-free": "^5.15.4",
- "animate.css": "^3.7.2",
- "bootstrap": "^4.6.1",
+ "dependencies": {
+ "@fortawesome/fontawesome-free": "^6.1.1",
+ "@popperjs/core": "^2.10.2",
+ "animate.css": "^4.1.1",
+ "bootstrap": "^5.1.3",
"bootstrap-colorpicker": "^3.4.0",
- "cross-env": "^5.0.1",
+ "bootstrap-datepicker": "^1.9.0",
+ "bootstrap-multiselect": "^1.1.0",
+ "bootstrap-table": "^1.19.1",
+ "chart.js": "^3.7.1",
+ "chartjs-adapter-moment": "^1.0.0",
+ "clockpicker": "0.0.7",
+ "codemirror": "^5.65.2",
+ "colorpicker": "^2.0.0",
+ "daterangepicker": "^3.1.0",
+ "dropzone": "^6.0.0-beta.2",
+ "easymde": "^2.16.1",
+ "fullcalendar": "^5.10.2",
+ "inputmask": "^5.0.7",
"jquery": "^3.5.1",
"jquery-sortablejs": "^1.0.1",
"js-cookie": "^2.2.0",
- "laravel-mix": "^5.0.0",
"metismenu": "2.7.7",
- "popper.js": "^1.16.1",
- "select2": "4.0.13",
- "select2-theme-bootstrap4": "0.2.0-beta.2",
+ "sweetalert2": "^11.4.8",
"sortablejs": "^1.14.0",
- "sweetalert": "^2.1.0"
+ "summernote": "^0.8.20",
+ "tempusdominus-bootstrap-4": "^5.39.0"
+ },
+ "devDependencies": {
+ "axios": "^0.25",
+ "laravel-mix": "^6.0.6",
+ "lodash": "^4.17.19",
+ "sass": "^1.49.9",
+ "sass-loader": "^12.6.0"
}
}
diff --git a/app/admin/assets/scss/components/_buttons.scss b/app/admin/assets/scss/components/_buttons.scss
deleted file mode 100644
index c9ccf64a3e..0000000000
--- a/app/admin/assets/scss/components/_buttons.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-.btn {
- border-bottom-width: $btn-border-bottom-width;
- cursor: pointer;
-}
-.btn-edit {
- color: $primary;
- background-color: transparent;
-}
-.list-action .btn,
-.btn-action {
- border: 0;
- padding: $btn-action-padding;
-}
-@each $color, $value in $theme-colors {
- .btn-#{$color} {
- &:not([href]) {
- color: color-yiq($value);
- @include hover-focus {
- color: color-yiq(darken($value, 7.5%));
- }
-
- &.disabled,
- &:disabled {
- color: color-yiq($value);
- }
- }
- }
- .btn-outline-#{$color} {
- &:not([href]) {
- color: $value;
-
- &:hover {
- color: color-yiq($value);
- }
-
- &.disabled,
- &:disabled {
- color: $value;
- }
- }
- }
-}
diff --git a/app/admin/assets/scss/components/_input-group.scss b/app/admin/assets/scss/components/_input-group.scss
deleted file mode 100644
index 16a35070fc..0000000000
--- a/app/admin/assets/scss/components/_input-group.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-.input-group {
- > .form-control,
- > .custom-select {
- &:not(:last-child) { @include border-right-radius($input-border-radius); }
-
- &:not(:first-child) { @include border-left-radius($input-border-radius); }
- }
-}
-.input-group-prepend,
-.input-group-append {
- .btn {
- border-radius: $input-border-radius !important;
- }
-
- .btn + .btn,
- .btn + .input-group-text,
- .input-group-text + .input-group-text,
- .input-group-text + .btn {
- margin-left: $input-spacer;
- }
-}
\ No newline at end of file
diff --git a/app/admin/assets/scss/components/_select.scss b/app/admin/assets/scss/components/_select.scss
deleted file mode 100644
index ac161ae29d..0000000000
--- a/app/admin/assets/scss/components/_select.scss
+++ /dev/null
@@ -1,66 +0,0 @@
-.form-group .select2-container {
- width: 100% !important;
-}
-.input-group > .select2-container {
- width: 1px !important;
-}
-.select2-container--bootstrap .select2-selection {
- width: 100%;
- font-size: $input-font-size;
-}
-.select2-container--bootstrap .select2-selection--single .select2-selection__rendered {
- color: $input-color;
-}
-.select2-container--bootstrap .select2-selection--single {
- height: $input-height;
- padding: $input-padding-y $input-padding-x;
-}
-.input-sm + .select2-container--bootstrap .select2-selection--single {
- height: $input-height-sm;
- padding: $input-padding-y-sm $input-padding-x-sm;
- font-size: $font-size-sm;
-}
-.input-lg + .select2-container--bootstrap .select2-selection--single {
- height: $input-height-lg;
- padding: $input-padding-y-lg $input-padding-x-lg;
- font-size: $font-size-lg;
-}
-.select2-container--bootstrap .select2-selection--multiple {
- height: $input-height;
-}
-.select2-container--bootstrap .select2-selection,
-.select2-container--bootstrap .select2-search--dropdown .select2-search__field {
- border-color: $input-border-color;
- color: $input-color;
-}
-.select2-container--bootstrap .select2-dropdown,
-.select2-container--bootstrap.select2-container--focus .select2-selection,
-.select2-container--bootstrap.select2-container--open .select2-selection {
- border-color: $input-border-color;
- box-shadow: $input-focus-box-shadow;
-}
-.select2-container--bootstrap .select2-results__option--highlighted[aria-selected] {
- background-color: $gray-200;
- color: $input-color;
-}
-.select2-container--bootstrap .select2-results__option[aria-selected="true"] {
- background-color: $gray-400;
- color: $input-color;
-}
-.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b {
- border-color: $input-color transparent transparent;
-}
-.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice {
- color: $input-color;
- border-color: $input-border-color;
-}
-.select2-dropdown {
- font-size: $font-size-base;
-}
-.select2-results__options {
- padding: .3rem;
-}
-.select2-results__option {
- border-radius: $input-border-radius;
- margin-bottom: .3rem;
-}
diff --git a/app/admin/assets/scss/components/_tables.scss b/app/admin/assets/scss/components/_tables.scss
deleted file mode 100644
index 7d938c4da8..0000000000
--- a/app/admin/assets/scss/components/_tables.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-.list-table {
- .table {
- thead {
- position: relative;
- }
-
- th:first-child,
- td:first-child {
- padding-left: $page-padding-x;
- padding-right: 0;
- }
-
- th:last-child,
- td:last-child {
- padding-left: 0;
- padding-right: $page-padding-x;
- }
- }
-
- .bulk-actions {
- background: $gray-200;
- position: absolute;
- top: -3px;
- left: 0;
- right: 0;
- bottom: 1px;
- z-index: 10;
-
- .btn-select-all {
- &.active {
- font-weight: $font-weight-bold;
- }
- }
- }
-}
-.table-striped {
- thead th {
- background-color: $gray-200;
- border-bottom: 2px solid $gray-300;
- }
-}
diff --git a/app/admin/assets/scss/helpers/_mixins.scss b/app/admin/assets/scss/helpers/_mixins.scss
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/app/admin/assets/scss/helpers/_variables.scss b/app/admin/assets/scss/helpers/_variables.scss
deleted file mode 100644
index 69ee8cd395..0000000000
--- a/app/admin/assets/scss/helpers/_variables.scss
+++ /dev/null
@@ -1,106 +0,0 @@
-$white: #FFFFFF !default;
-$gray-100: #FCFDFF !default;
-$gray-200: #E8E9EF !default;
-$gray-300: #D2D4DF !default;
-$gray-400: #C0C2CE !default;
-$gray-500: #9194A6 !default;
-$gray-600: #6F7B9C !default;
-$gray-700: #48557B !default;
-$gray-800: #2E3B61 !default;
-$gray-900: #192957 !default;
-$black: #000329 !default;
-//
-// Colors
-//
-$primary: #2170C0 !default;
-$secondary: $gray-600 !default;
-$success: #28A745 !default;
-$info: #5A67D8 !default;
-$warning: #FD7E14 !default;
-$danger: #DC3545 !default;
-$light: $gray-100 !default;
-$dark: $gray-900 !default;
-//
-// Options
-//
-$images-path: '../../../admin/assets/images/';
-$enable-shadows: true !default;
-$body-bg: $gray-200 !default;
-$body-color: $gray-800 !default;
-//
-// Typography
-//
-$text-muted: $gray-500 !default;
-//
-// Fonts
-//
-$font-size-base: 0.875rem !default;
-$font-size-lg: $font-size-base * 1.25 !default;
-$font-size-sm: $font-size-base * .875 !default;
-//
-// Tables
-//
-$table-cell-padding: .45rem !default;
-$table-cell-padding-sm: .1rem !default;
-$table-head-bg: $gray-300 !default;
-$table-accent-bg: $gray-200 !default;
-$table-border-color: $gray-300 !default;
-//
-// Buttons + Forms
-//
-// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
-$input-btn-padding-y: .5rem !default;
-$input-btn-padding-x: .75rem !default;
-$input-spacer: 6px !default;
-$input-font-size: 0.9375rem !default;
-//
-// Buttons
-//
-$btn-spacer: 10px !default;
-$btn-border-bottom-width: 2px !default;
-$btn-hover-border-bottom-width: 1px !default;
-$btn-active-box-shadow: none !default;
-//
-// Forms
-//
-$input-disabled-bg: $gray-300 !default;
-$input-height-border: 3px !default;
-$form-fields-padding-y: 20px !default;
-$form-fields-padding-x: 20px !default;
-$form-nav-link-padding-y: .52rem !default;
-$form-nav-link-padding-x: 1.2rem !default;
-$custom-control-indicator-border-color: $gray-300 !default;
-$custom-control-indicator-disabled-bg: $gray-400 !default;
-//
-// Page
-//
-$page-padding-x: 20px !default;
-$page-padding-y: 30px !default;
-$page-top: 64px !default;
-$page-top-line-height: 48px !default;
-$page-bottom: 0 !default;
-$page-margin-left: 230px !default;
-$logo-font-size: 3rem !default;
-$logo-line-height: 32px !default;
-//
-// Main menu
-//
-$mainmenu-font-size: 24px !default;
-$mainmenu-icon-size: 16px !default;
-$mainmenu-dropdown-width: 300px !default;
-$mainmenu-menu-max-height: 70vh !default;
-$mainmenu-padding-x: 0.5rem !default;
-$mainmenu-padding-y: 1rem !default;
-//
-// Side nav
-//
-$sidenav-bg: $gray-900 !default;
-$sidenav-font-size: 15px !default;
-$sidenav-submenu-font-size: $font-size-base !default;
-$sidenav-font-weight: 500 !default;
-$sidenav-font-size-bold: 600 !default;
-$sidenav-line-height: 50px !default;
-$sidenav-line-height-sm: 42px !default;
-$sidenav-padding-x: 0 !default;
-$sidenav-padding-y: 1rem !default;
-$dropdown-item-padding-y: 0.5rem !default;
diff --git a/app/admin/assets/scss/utilities/_+import-utilities.scss b/app/admin/assets/scss/utilities/_+import-utilities.scss
deleted file mode 100644
index 839a0526ff..0000000000
--- a/app/admin/assets/scss/utilities/_+import-utilities.scss
+++ /dev/null
@@ -1,2 +0,0 @@
-@import "reboot";
-@import "utilities";
\ No newline at end of file
diff --git a/app/admin/assets/scss/utilities/_reboot.scss b/app/admin/assets/scss/utilities/_reboot.scss
deleted file mode 100644
index 5615664fbe..0000000000
--- a/app/admin/assets/scss/utilities/_reboot.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-a:not([href]):not([tabindex]):not([data-request]):not([role="button"]) {
- color: inherit;
- text-decoration: none;
-
- @include hover-focus {
- color: inherit;
- text-decoration: none;
- }
-
- &:focus {
- outline: 0;
- }
-}
-//.btn[data-request] {
-// color: $white;
-//
-// @include hover-focus {
-// color: $white;
-// }
-//}
\ No newline at end of file
diff --git a/app/admin/assets/scss/utilities/_utilities.scss b/app/admin/assets/scss/utilities/_utilities.scss
deleted file mode 100644
index edb6d0ce5f..0000000000
--- a/app/admin/assets/scss/utilities/_utilities.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-html {
- position: relative;
- font-size: 100%;
- -ms-text-size-adjust: 100%;
- -webkit-text-size-adjust: 100%;
- min-height: 100%;
- height: 100%;
-}
-
-body.page {
- height: 100%;
- overflow: hidden;
-}
-.page-x-spacer {
- padding-right: $page-padding-x;
- padding-left: $page-padding-x;
-}
-.page-y-spacer {
- padding-top: $page-padding-y;
- padding-bottom: $page-padding-y;
-}
diff --git a/app/admin/assets/scss/vendor/_+import_vendors.scss b/app/admin/assets/scss/vendor/_+import_vendors.scss
deleted file mode 100644
index 225e0ab4e6..0000000000
--- a/app/admin/assets/scss/vendor/_+import_vendors.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// FontAwesome
-@import "../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome";
-@import "../../node_modules/@fortawesome/fontawesome-free/scss/brands";
-@import "../../node_modules/@fortawesome/fontawesome-free/scss/solid";
-@import "../../node_modules/@fortawesome/fontawesome-free/scss/regular";
-//
-// Animate.css
-@import "animate";
-//
-// Select2
-@import "../../node_modules/select2/src/scss/core";
-@import "../../node_modules/select2-theme-bootstrap4/src/select2-bootstrap";
diff --git a/app/admin/assets/scss/vendor/_animate.scss b/app/admin/assets/scss/vendor/_animate.scss
deleted file mode 100644
index f3f106883d..0000000000
--- a/app/admin/assets/scss/vendor/_animate.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-@charset "UTF-8";
-
-/*!
- * animate.css -https://daneden.github.io/animate.css/
- * Version - 3.7.2
- * Licensed under the MIT license - http://opensource.org/licenses/MIT
- *
- * Copyright (c) 2019 Daniel Eden
- */
-
-@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (prefers-reduced-motion:reduce),(print){.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}}
\ No newline at end of file
diff --git a/app/admin/assets/scss/vendor/_bootstrap-components.scss b/app/admin/assets/scss/vendor/_bootstrap-components.scss
deleted file mode 100644
index 68a33b24c1..0000000000
--- a/app/admin/assets/scss/vendor/_bootstrap-components.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-@import "../../node_modules/bootstrap/scss/root";
-@import "../../node_modules/bootstrap/scss/reboot";
-@import "../../node_modules/bootstrap/scss/type";
-@import "../../node_modules/bootstrap/scss/images";
-@import "../../node_modules/bootstrap/scss/code";
-@import "../../node_modules/bootstrap/scss/grid";
-@import "../../node_modules/bootstrap/scss/tables";
-@import "../../node_modules/bootstrap/scss/forms";
-@import "../../node_modules/bootstrap/scss/buttons";
-@import "../../node_modules/bootstrap/scss/transitions";
-@import "../../node_modules/bootstrap/scss/dropdown";
-@import "../../node_modules/bootstrap/scss/button-group";
-@import "../../node_modules/bootstrap/scss/input-group";
-@import "../../node_modules/bootstrap/scss/custom-forms";
-@import "../../node_modules/bootstrap/scss/nav";
-@import "../../node_modules/bootstrap/scss/navbar";
-@import "../../node_modules/bootstrap/scss/card";
-@import "../../node_modules/bootstrap/scss/breadcrumb";
-@import "../../node_modules/bootstrap/scss/pagination";
-@import "../../node_modules/bootstrap/scss/badge";
-@import "../../node_modules/bootstrap/scss/jumbotron";
-@import "../../node_modules/bootstrap/scss/alert";
-@import "../../node_modules/bootstrap/scss/progress";
-@import "../../node_modules/bootstrap/scss/media";
-@import "../../node_modules/bootstrap/scss/list-group";
-@import "../../node_modules/bootstrap/scss/close";
-@import "../../node_modules/bootstrap/scss/modal";
-@import "../../node_modules/bootstrap/scss/tooltip";
-@import "../../node_modules/bootstrap/scss/popover";
-@import "../../node_modules/bootstrap/scss/carousel";
-@import "../../node_modules/bootstrap/scss/utilities";
-@import "../../node_modules/bootstrap/scss/print";
diff --git a/app/admin/assets/scss/vendor/_bootstrap-helpers.scss b/app/admin/assets/scss/vendor/_bootstrap-helpers.scss
deleted file mode 100644
index 93386f7399..0000000000
--- a/app/admin/assets/scss/vendor/_bootstrap-helpers.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-@import "../../node_modules/bootstrap/scss/functions";
-@import "../../node_modules/bootstrap/scss/variables";
-@import "../../node_modules/bootstrap/scss/mixins";
diff --git a/app/admin/assets/js/src/app.js b/app/admin/assets/src/js/app.js
similarity index 88%
rename from app/admin/assets/js/src/app.js
rename to app/admin/assets/src/js/app.js
index f55c8e8838..17b0488430 100644
--- a/app/admin/assets/js/src/app.js
+++ b/app/admin/assets/src/js/app.js
@@ -13,12 +13,7 @@
})
$(document).render(function () {
- $('a, span, button', document).tooltip({placement: 'bottom'});
-
- $.fn.select2.defaults.set('width', null);
- $.fn.select2.defaults.set('theme', 'bootstrap');
- $.fn.select2.defaults.set('minimumResultsForSearch', 10);
- $('select.form-control', document).select2();
+ $('a[title], span[title], button[title]', document).not('[data-bs-toggle]').tooltip({placement: 'bottom'});
$('.alert', document).alert();
});
diff --git a/app/system/assets/ui/js/flashmessage.js b/app/admin/assets/src/js/flashmessage.js
similarity index 89%
rename from app/system/assets/ui/js/flashmessage.js
rename to app/admin/assets/src/js/flashmessage.js
index de99f9be1b..3d632eb1f6 100644
--- a/app/system/assets/ui/js/flashmessage.js
+++ b/app/admin/assets/src/js/flashmessage.js
@@ -13,15 +13,17 @@
if ($element.length === 0) {
$element = $('
', {
- class: 'alert alert-' + options.class
+ class: 'alert alert-'+options.class
}).html(options.text)
}
$element.addClass('flash-message animated fadeInDown')
$element.attr('data-control', null)
- if (options.allowDismiss)
- $element.prepend('
')
+ if (options.allowDismiss) {
+ $element.addClass('alert-dismissible')
+ $element.append('
')
+ }
$element.on('click', 'button', remove)
if (options.interval > 0) $element.on('click', remove)
@@ -45,11 +47,9 @@
window.clearInterval(timer)
$element.addClass('fadeOutUp')
- $.support.transition && $element.hasClass('fadeOutUp')
- ? $element
- .one($.support.transition.end, removeElement)
- .emulateTransitionEnd(500)
- : removeElement()
+ $element.on('animationend', () => {
+ removeElement()
+ });
}
}
@@ -84,7 +84,7 @@
options = $.extend({}, $this.data(), $this.data('closeOnEsc') === true ? {
timer: (index + 1) * 3000
} : {})
- swal(options)
+ Swal.fire(options)
})
})
diff --git a/app/system/assets/ui/js/loader.bar.js b/app/admin/assets/src/js/loader.bar.js
similarity index 100%
rename from app/system/assets/ui/js/loader.bar.js
rename to app/admin/assets/src/js/loader.bar.js
diff --git a/app/system/assets/ui/js/loader.progress.js b/app/admin/assets/src/js/loader.progress.js
similarity index 97%
rename from app/system/assets/ui/js/loader.progress.js
rename to app/admin/assets/src/js/loader.progress.js
index 9fbf7feda0..f256db8bc7 100644
--- a/app/system/assets/ui/js/loader.progress.js
+++ b/app/admin/assets/src/js/loader.progress.js
@@ -39,7 +39,7 @@
this.hide()
var indicator = $('
')
- indicator.append($('
'))
+ indicator.append($('
'))
indicator.append($('
').text(this.options.text))
if (this.options.opaque !== undefined) {
indicator.addClass('is-opaque')
@@ -130,4 +130,4 @@
.on('ajaxFail ajaxDone', '[data-progress-indicator]', function() {
$(this).closest('.progress-indicator-container').progressIndicator('hide')
})
-}(window.jQuery);
\ No newline at end of file
+}(window.jQuery);
diff --git a/app/system/assets/ui/js/app.js b/app/admin/assets/src/js/request.js
similarity index 98%
rename from app/system/assets/ui/js/app.js
rename to app/admin/assets/src/js/request.js
index ae43002731..079e402030 100644
--- a/app/system/assets/ui/js/app.js
+++ b/app/admin/assets/src/js/request.js
@@ -1,7 +1,6 @@
-/* ========================================================================
- * TastyIgniter: app.js v3.0.0
- * https://tastyigniter.com/docs/javascript
- * ======================================================================== */
+/*
+ * The request API
+ */
if (window.jQuery === undefined)
throw new Error('TastyIgniter Javascript requires jQuery.');
diff --git a/app/system/assets/ui/js/toggler.js b/app/admin/assets/src/js/toggler.js
similarity index 100%
rename from app/system/assets/ui/js/toggler.js
rename to app/admin/assets/src/js/toggler.js
diff --git a/app/system/assets/ui/js/trigger.js b/app/admin/assets/src/js/trigger.js
similarity index 100%
rename from app/system/assets/ui/js/trigger.js
rename to app/admin/assets/src/js/trigger.js
diff --git a/app/system/assets/ui/js/vendor/moment.min.js b/app/admin/assets/src/js/vendor/moment.min.js
similarity index 100%
rename from app/system/assets/ui/js/vendor/moment.min.js
rename to app/admin/assets/src/js/vendor/moment.min.js
diff --git a/app/system/assets/ui/js/vendor/mustache.js b/app/admin/assets/src/js/vendor/mustache.js
similarity index 100%
rename from app/system/assets/ui/js/vendor/mustache.js
rename to app/admin/assets/src/js/vendor/mustache.js
diff --git a/app/system/assets/ui/js/vendor/popper.min.js.map b/app/admin/assets/src/js/vendor/popper.min.js.map
similarity index 100%
rename from app/system/assets/ui/js/vendor/popper.min.js.map
rename to app/admin/assets/src/js/vendor/popper.min.js.map
diff --git a/app/system/assets/ui/js/vendor/typeahead.js b/app/admin/assets/src/js/vendor/typeahead.js
similarity index 100%
rename from app/system/assets/ui/js/vendor/typeahead.js
rename to app/admin/assets/src/js/vendor/typeahead.js
diff --git a/app/system/assets/ui/js/vendor/waterfall.min.js b/app/admin/assets/src/js/vendor/waterfall.min.js
similarity index 100%
rename from app/system/assets/ui/js/vendor/waterfall.min.js
rename to app/admin/assets/src/js/vendor/waterfall.min.js
diff --git a/app/admin/assets/scss/admin.scss b/app/admin/assets/src/scss/admin.scss
similarity index 65%
rename from app/admin/assets/scss/admin.scss
rename to app/admin/assets/src/scss/admin.scss
index 355ce42ea4..6ceb0ca457 100644
--- a/app/admin/assets/scss/admin.scss
+++ b/app/admin/assets/src/scss/admin.scss
@@ -5,27 +5,24 @@
// Helpers
@import "helpers/+import-helpers";
//
-// UI Helpers
-@import "../../../system/assets/ui/scss/helpers/+import-helpers";
-//
// Bootstrap Helpers
@import "vendor/bootstrap-helpers";
//
-// Vendors
+// Helpers: Utilities
+@import "helpers/utilities";
+//
+// Vendors: Bootstrap, FontAwesome, SweetAlert
@import "vendor/+import_vendors";
//
// Bootstrap components
@import "vendor/bootstrap-components";
//
-// UI Components
-@import "../../../system/assets/ui/scss/components/+import-components";
+// Bootstrap components
+@import "utilities/replace";
//
// Components
@import "components/+import-components";
//
-// UI Utilities
-@import "../../../system/assets/ui/scss/utilities/+import-utilities";
-//
// Utilities
@import "utilities/+import-utilities";
diff --git a/app/admin/assets/scss/components/_+import-components.scss b/app/admin/assets/src/scss/components/_+import-components.scss
similarity index 60%
rename from app/admin/assets/scss/components/_+import-components.scss
rename to app/admin/assets/src/scss/components/_+import-components.scss
index d82b47a0aa..38c57185eb 100644
--- a/app/admin/assets/scss/components/_+import-components.scss
+++ b/app/admin/assets/src/scss/components/_+import-components.scss
@@ -1,3 +1,13 @@
+@import "icons";
+@import "accordion";
+@import "alert";
+@import "dropdown";
+@import "loader";
+@import "media";
+@import "pagination";
+@import "timeline";
+@import "cards";
+@import "markdown";
@import 'buttons';
@import "layout";
@import "login";
@@ -5,7 +15,6 @@
@import "forms";
@import "input-group";
@import "button-group";
-@import "select";
@import "sidenav";
@import "mainmenu";
@import "toolbar";
diff --git a/app/admin/assets/src/scss/components/_accordion.scss b/app/admin/assets/src/scss/components/_accordion.scss
new file mode 100644
index 0000000000..4353adf0f2
--- /dev/null
+++ b/app/admin/assets/src/scss/components/_accordion.scss
@@ -0,0 +1,5 @@
+.accordion-button {
+ &:not(.collapsed) {
+ font-weight: $font-weight-bold;
+ }
+}
diff --git a/app/system/assets/ui/scss/components/_alert.scss b/app/admin/assets/src/scss/components/_alert.scss
similarity index 55%
rename from app/system/assets/ui/scss/components/_alert.scss
rename to app/admin/assets/src/scss/components/_alert.scss
index 3a6a50ffb7..9eec40485c 100644
--- a/app/system/assets/ui/scss/components/_alert.scss
+++ b/app/admin/assets/src/scss/components/_alert.scss
@@ -33,9 +33,23 @@
margin-bottom: 0;
}
}
-.swal-button--confirm {
- @extend .btn-primary;
+.swal2-styled.swal2-confirm {
+ @each $color, $value in $theme-colors {
+ &.btn-#{$color} {
+ background-color: $value;
+ }
+ }
+}
+.swal2-styled.swal2-cancel {
+ @each $color, $value in $theme-colors {
+ &.btn-#{$color} {
+ background-color: $value;
+ }
+ }
+}
+.swal2-select {
+ @extend .form-select;
+}
+.swal2-select {
+ width: auto !important;
}
-.swal-button--cancel {
- @extend .btn-light;
-}
\ No newline at end of file
diff --git a/app/admin/assets/scss/components/_button-group.scss b/app/admin/assets/src/scss/components/_button-group.scss
similarity index 59%
rename from app/admin/assets/scss/components/_button-group.scss
rename to app/admin/assets/src/scss/components/_button-group.scss
index 4f26235880..98fb42f0e3 100644
--- a/app/admin/assets/scss/components/_button-group.scss
+++ b/app/admin/assets/src/scss/components/_button-group.scss
@@ -1,12 +1,12 @@
.btn-group {
> .btn:not(:last-child):not(.dropdown-toggle),
> .btn-group:not(:last-child) > .btn {
- @include border-right-radius($btn-border-radius);
+ @include border-end-radius($btn-border-radius);
}
> .btn:not(:first-child),
> .btn-group:not(:first-child) > .btn {
- @include border-left-radius($btn-border-radius);
+ @include border-start-radius($btn-border-radius);
}
}
.btn-group,
@@ -15,7 +15,7 @@
position: relative;
flex: 1 1 auto;
- @include hover() {
+ &:hover {
z-index: 0;
}
@@ -36,26 +36,41 @@
border: $input-border-width solid $input-border-color;
border-radius: $input-border-radius;
- .btn {
+ > .btn {
padding-top: calc(#{$input-padding-y-lg} - 5px);
padding-bottom: calc(#{$input-padding-y-lg} - 5px);
border-radius: $input-border-radius !important;
font-size: $input-font-size;
box-shadow: none;
border: 1px solid transparent;
+ color: inherit !important;
- &:focus,
- &.focus {
- background-color: transparent !important;
- box-shadow: none;
- border: 1px solid transparent;
+ &:disabled,
+ &.disabled {
+ background-color: transparent;
}
+ }
- &:active,
- &.active {
- background-color: $gray-200 !important;
- border: 1px solid $input-border-color !important;
- @include box-shadow($btn-box-shadow);
+ > .btn-check:focus + .btn,
+ > .btn:focus {
+ box-shadow: none;
+ }
+
+ > .btn-check:checked + .btn,
+ > .btn-check:active + .btn,
+ > .btn:active,
+ > .btn.active {
+ background-color: $gray-200 !important;
+ border-color: $input-border-color !important;
+
+ &:focus {
+ box-shadow: none;
}
}
+
+ > .btn-group:not(:first-child) > .btn,
+ > .btn:nth-child(n+3),
+ > :not(.btn-check) + .btn {
+ margin-left: 5px;
+ }
}
diff --git a/app/system/assets/ui/scss/components/_buttons.scss b/app/admin/assets/src/scss/components/_buttons.scss
similarity index 54%
rename from app/system/assets/ui/scss/components/_buttons.scss
rename to app/admin/assets/src/scss/components/_buttons.scss
index 399acdbf88..20dc5660cb 100644
--- a/app/system/assets/ui/scss/components/_buttons.scss
+++ b/app/admin/assets/src/scss/components/_buttons.scss
@@ -1,3 +1,16 @@
+.btn {
+ border-bottom-width: $btn-border-bottom-width;
+ cursor: pointer;
+}
+.btn-edit {
+ color: $primary;
+ background-color: transparent;
+}
+.list-action .btn,
+.btn-action {
+ border: 0;
+ padding: $btn-action-padding;
+}
.btn-light {
background-color: $light;
border-color: $gray-300;
@@ -7,13 +20,14 @@
border-color: $gray-400;
}
}
+.btn-secondary, .btn-default {
+ &:hover {
+ color: $white;
+ }
+}
.btn-light:not(:disabled):not(.disabled):active,
.btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle {
background-color: $gray-400;
border-color: $gray-400;
}
-.btn-group > .btn:not(:first-child),
-.btn-group > .btn-group:not(:first-child) {
- margin-left: 0;
-}
\ No newline at end of file
diff --git a/app/system/assets/ui/scss/components/_panels.scss b/app/admin/assets/src/scss/components/_cards.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_panels.scss
rename to app/admin/assets/src/scss/components/_cards.scss
diff --git a/app/admin/assets/src/scss/components/_dropdown.scss b/app/admin/assets/src/scss/components/_dropdown.scss
new file mode 100644
index 0000000000..589f5a8c2d
--- /dev/null
+++ b/app/admin/assets/src/scss/components/_dropdown.scss
@@ -0,0 +1,3 @@
+.dropdown-item {
+ border-radius: $border-radius;
+}
diff --git a/app/admin/assets/scss/components/_filterpanel.scss b/app/admin/assets/src/scss/components/_filterpanel.scss
similarity index 100%
rename from app/admin/assets/scss/components/_filterpanel.scss
rename to app/admin/assets/src/scss/components/_filterpanel.scss
diff --git a/app/admin/assets/scss/components/_footer.scss b/app/admin/assets/src/scss/components/_footer.scss
similarity index 100%
rename from app/admin/assets/scss/components/_footer.scss
rename to app/admin/assets/src/scss/components/_footer.scss
diff --git a/app/admin/assets/scss/components/_forms.scss b/app/admin/assets/src/scss/components/_forms.scss
similarity index 55%
rename from app/admin/assets/scss/components/_forms.scss
rename to app/admin/assets/src/scss/components/_forms.scss
index ede764080a..187b4d7644 100644
--- a/app/admin/assets/scss/components/_forms.scss
+++ b/app/admin/assets/src/scss/components/_forms.scss
@@ -1,3 +1,53 @@
+.input-group-btn, .input-group-addon {
+ @extend .input-group-append;
+}
+
+.form-control-static {
+ @extend .form-control-plaintext;
+ background-color: $input-disabled-bg;
+ @if $enable-rounded {
+ // Manually use the if/else instead of the mixin to account for iOS override
+ border-radius: $input-border-radius;
+ } @else {
+ // Otherwise undo the iOS default
+ border-radius: 0;
+ }
+ padding: $input-padding-y $input-padding-x;
+ overflow: auto;
+}
+
+.input-sm {
+ @extend .form-control-sm;
+}
+
+.input-lg {
+ @extend .form-control-lg;
+}
+
+//
+.control-label, .form-label {
+ color: $gray-800;
+ font-weight: $font-weight-semibold;
+}
+
+// Custom input file type
+.btn-file-input input[type=file] {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ cursor: pointer;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+
+// Input group
+//
+.input-group-icon {
+ @extend .input-group-text;
+}
.form-control {
&:disabled,
&[readonly] {
@@ -16,72 +66,51 @@
}
}
.form-fields {
- display: -ms-flexbox;
+ --bs-gutter-x: 1.45rem;
+ --bs-gutter-y: 0;
display: flex;
- -ms-flex-wrap: wrap;
flex-wrap: wrap;
- padding: $form-fields-padding-y;
- margin-bottom: $form-fields-padding-x;
- border-radius: $input-border-radius;
-}
-.hidden-field {
- margin: 0;
-}
-// Form groups
-//
-.form-group {
- &.span-full {
- clear: both;
- width: 100%;
- }
-
- &.span-left {
- float: left;
- padding-right: 10px;
- }
+ padding: calc(var(--bs-gutter-x) * 1.2) calc(var(--bs-gutter-x) * 0.3);
- &.span-right {
- float: right;
- padding-left: 10px;
+ > * {
+ padding-right: calc(var(--bs-gutter-x) * .5);
+ padding-left: calc(var(--bs-gutter-x) * .5);
+ margin-top: var(--bs-gutter-y);
}
- &.span-left,
- &.span-right {
- width: 50%;
+ > .span-left,
+ > .span-right {
+ flex: 0 0 auto;
+ width: 100%;
&.flex-width {
width: 25%;
}
}
- &.flex-width {
+ > .flex-width {
width: auto;
}
- &.flex-width .row > div {
+ > .flex-width .row > div {
width: 100%;
}
-}
-@include media-breakpoint-down(sm) {
- .form-group {
- &.span-left {
- padding-right: 0;
- }
- &.span-right {
- padding-left: 0;
- }
-
- &.span-left,
- &.span-right {
- width: 100%;
+ > .span-full {
+ width: 100%;
+ }
- &.flex-width {
- width: 100%;
- }
+ @include media-breakpoint-up(sm) {
+ > .span-left,
+ > .span-right {
+ flex: 0 0 auto;
+ width: 50%;
}
}
}
+.hidden-field {
+ margin: 0;
+}
// Tabs
//
.form-nav {
@@ -149,12 +178,9 @@
.field-custom-container {
padding-top: $input-padding-y;
padding-bottom: $input-padding-y;
- height: $input-height-inner;
+ height: add($input-height-inner, 0.25rem);
}
// Control label
-.control-label {
- color: $gray-800;
-}
.help-block {
@extend .form-text;
color: $gray-600;
diff --git a/app/system/assets/ui/scss/components/_icons.scss b/app/admin/assets/src/scss/components/_icons.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_icons.scss
rename to app/admin/assets/src/scss/components/_icons.scss
diff --git a/app/admin/assets/src/scss/components/_input-group.scss b/app/admin/assets/src/scss/components/_input-group.scss
new file mode 100644
index 0000000000..6976569d77
--- /dev/null
+++ b/app/admin/assets/src/scss/components/_input-group.scss
@@ -0,0 +1,16 @@
+.input-group {
+ > .form-control,
+ > .form-select {
+ &:not(:last-child) { @include border-end-radius($input-border-radius); }
+
+ &:not(:first-child) { @include border-start-radius($input-border-radius); }
+ }
+
+ .btn {
+ border-radius: $input-border-radius !important;
+ }
+
+ > .btn {
+ margin-left: $input-spacer !important;
+ }
+}
diff --git a/app/admin/assets/scss/components/_layout.scss b/app/admin/assets/src/scss/components/_layout.scss
similarity index 100%
rename from app/admin/assets/scss/components/_layout.scss
rename to app/admin/assets/src/scss/components/_layout.scss
diff --git a/app/admin/assets/src/scss/components/_loader.scss b/app/admin/assets/src/scss/components/_loader.scss
new file mode 100644
index 0000000000..4de78062ca
--- /dev/null
+++ b/app/admin/assets/src/scss/components/_loader.scss
@@ -0,0 +1,159 @@
+//
+// Loading indicator
+// --------------------------------------------------
+
+.loading-indicator,
+.progress-indicator {
+ color: $text-muted;
+ font-weight: $font-weight-bold;
+ text-align: left;
+ font-size: 16px;
+ z-index: $zindex-fixed;
+
+ //> span {
+ // position: absolute;
+ // top: 50%;
+ // margin-top: -20px;
+ // left: 0;
+ // display: block;
+ //}
+}
+
+.progress-indicator-container {
+ position: relative;
+ min-height: 42px;
+
+ .progress-indicator {
+ background: $gray-300;
+ padding: 10px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+
+ > div {
+ display: inline-block;
+ }
+
+ > .ti-loading {
+ margin-right: 10px;
+ }
+ }
+
+ &.in-progress {
+ .select2-container--focus .select2-selection {
+ box-shadow: none;
+ }
+
+ .btn:focus {
+ box-shadow: none;
+ }
+ }
+}
+
+html.cssanimations {
+ .progress-indicator > span {
+ animation: "spin 1s linear infinite";
+ }
+
+ .progress-indicator.is-opaque,
+ .progress-indicator-container.is-opaque .progress-indicator {
+ > span {
+ }
+ }
+}
+
+// Centered
+
+.progress-indicator.indicator-center,
+.progress-indicator-container.indicator-center .progress-indicator {
+ padding: 20px;
+
+ > span {
+ left: 50%;
+ margin-left: -20px;
+ margin-top: -20px;
+ }
+
+ > div {
+ text-align: center;
+ position: relative;
+ margin-top: 30px;
+ }
+}
+
+@mixin transition-delay($delay...) {
+ -moz-transition-delay: $delay;
+ -o-transition-delay: $delay;
+ -webkit-transition-delay: $delay;
+ transition-delay: $delay;
+}
+
+@mixin transform($transforms) {
+ -moz-transform: $transforms;
+ -o-transform: $transforms;
+ -ms-transform: $transforms;
+ -webkit-transform: $transforms;
+ transform: $transforms;
+}
+
+//
+// Bar loading indicator
+// --------------------------------------------------
+
+.bar-loading-indicator {
+ height: 4px;
+ background: transparent;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ overflow: hidden;
+ z-index: $zindex-fixed+100;
+
+ .bar, .bar-loaded {
+ height: 4px;
+ display: block;
+ background: $primary;
+ position: absolute;
+ @include box-shadow(#{"inset 0 1px 1px -1px #FFF, inset 0 -1px 1px -1px #FFF"});
+ }
+
+ .bar {
+ width: 100%;
+ animation: "infinite-loader 60 s linear";
+ -webkit-animation: "infinite-loader 60 s linear";
+ }
+
+ .bar-loaded {
+ width: 0;
+ opacity: 0;
+ }
+
+ &.loaded {
+ opacity: 0;
+ @include transition(opacity .4s linear);
+ @include transition-delay(.3s);
+
+ .bar-loaded {
+ opacity: 1;
+ @include transition(width .3s linear);
+ width: 100% !important;
+ }
+ }
+
+ &.hide {
+ display: none;
+ }
+}
+.ti-loading {
+ &.spinner-border {
+ opacity: .5;
+ }
+
+ &.fa-3x {
+ width: 3rem;
+ height: 3rem;
+ }
+}
diff --git a/app/admin/assets/scss/components/_login.scss b/app/admin/assets/src/scss/components/_login.scss
similarity index 100%
rename from app/admin/assets/scss/components/_login.scss
rename to app/admin/assets/src/scss/components/_login.scss
diff --git a/app/admin/assets/scss/components/_logos.scss b/app/admin/assets/src/scss/components/_logos.scss
similarity index 100%
rename from app/admin/assets/scss/components/_logos.scss
rename to app/admin/assets/src/scss/components/_logos.scss
diff --git a/app/admin/assets/scss/components/_mainmenu.scss b/app/admin/assets/src/scss/components/_mainmenu.scss
similarity index 99%
rename from app/admin/assets/scss/components/_mainmenu.scss
rename to app/admin/assets/src/scss/components/_mainmenu.scss
index 6f1850a890..1c1ab35868 100644
--- a/app/admin/assets/scss/components/_mainmenu.scss
+++ b/app/admin/assets/src/scss/components/_mainmenu.scss
@@ -97,10 +97,10 @@
min-width: $mainmenu-dropdown-width;
box-shadow: $box-shadow;
border: $border-width solid $border-color;
+ max-height: 70vh;
+ overflow-y: auto;
.dropdown-item {
- border-radius: 3px;
-
.fa {
margin-right: 14px;
}
diff --git a/app/system/assets/ui/scss/components/_markdown.scss b/app/admin/assets/src/scss/components/_markdown.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_markdown.scss
rename to app/admin/assets/src/scss/components/_markdown.scss
diff --git a/app/admin/assets/scss/components/_marketplace.scss b/app/admin/assets/src/scss/components/_marketplace.scss
similarity index 98%
rename from app/admin/assets/scss/components/_marketplace.scss
rename to app/admin/assets/src/scss/components/_marketplace.scss
index de353c286a..0621da0c08 100644
--- a/app/admin/assets/scss/components/_marketplace.scss
+++ b/app/admin/assets/src/scss/components/_marketplace.scss
@@ -90,9 +90,6 @@
#item-modal .modal-dialog {
margin: 80px auto;
}
-.panel-item-modal {
- margin-bottom: 0;
-}
.update-item .description {
max-height: 120px;
overflow: auto;
diff --git a/app/system/assets/ui/scss/components/_media.scss b/app/admin/assets/src/scss/components/_media.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_media.scss
rename to app/admin/assets/src/scss/components/_media.scss
diff --git a/app/admin/assets/scss/components/_message.scss b/app/admin/assets/src/scss/components/_message.scss
similarity index 100%
rename from app/admin/assets/scss/components/_message.scss
rename to app/admin/assets/src/scss/components/_message.scss
diff --git a/app/system/assets/ui/scss/components/_pagination.scss b/app/admin/assets/src/scss/components/_pagination.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_pagination.scss
rename to app/admin/assets/src/scss/components/_pagination.scss
diff --git a/app/admin/assets/scss/components/_sidenav.scss b/app/admin/assets/src/scss/components/_sidenav.scss
similarity index 100%
rename from app/admin/assets/scss/components/_sidenav.scss
rename to app/admin/assets/src/scss/components/_sidenav.scss
diff --git a/app/system/assets/ui/scss/components/_tables.scss b/app/admin/assets/src/scss/components/_tables.scss
similarity index 57%
rename from app/system/assets/ui/scss/components/_tables.scss
rename to app/admin/assets/src/scss/components/_tables.scss
index eee915f2b2..a02040b3df 100644
--- a/app/system/assets/ui/scss/components/_tables.scss
+++ b/app/admin/assets/src/scss/components/_tables.scss
@@ -1,9 +1,13 @@
.table {
+ > :not(caption) > * > * {
+ box-shadow: none;
+ }
+
.sort-col {
cursor: pointer;
display: block;
position: relative;
- color: $table-head-color;
+ color: $table-hover-color;
text-decoration: none;
.fa {
@@ -34,8 +38,11 @@
@extend .fa-sort-amount-desc
}
}
-}
+ > :not(:first-child) {
+ border-top: 2px solid $table-border-color;
+ }
+}
.table-striped {
thead th {
background-color: $table-head-bg;
@@ -65,10 +72,54 @@
font-size: $font-size-sm;
text-transform: uppercase;
line-height: 2;
- color: $table-head-color;
+ color: $table-hover-color;
}
.table .list-action,
.table .list-setup {
width: 1px;
}
+.list-table {
+ .table {
+ thead {
+ position: relative;
+ }
+
+ th:first-child,
+ td:first-child {
+ padding-left: $page-padding-x;
+ padding-right: 0;
+ }
+
+ th:last-child,
+ td:last-child {
+ padding-left: 0;
+ padding-right: $page-padding-x;
+ }
+ }
+
+ .bulk-actions {
+ background: $gray-200;
+ position: absolute;
+ top: 1px;
+ left: 0;
+ right: 0;
+ z-index: 10;
+
+ td {
+ border-bottom: 0;
+ }
+
+ .btn-select-all {
+ &.active {
+ font-weight: $font-weight-bold;
+ }
+ }
+ }
+}
+.table-striped {
+ thead th {
+ background-color: $gray-200;
+ border-bottom: 2px solid $gray-300;
+ }
+}
diff --git a/app/system/assets/ui/scss/components/_timeline.scss b/app/admin/assets/src/scss/components/_timeline.scss
similarity index 100%
rename from app/system/assets/ui/scss/components/_timeline.scss
rename to app/admin/assets/src/scss/components/_timeline.scss
diff --git a/app/admin/assets/scss/components/_toolbar.scss b/app/admin/assets/src/scss/components/_toolbar.scss
similarity index 84%
rename from app/admin/assets/scss/components/_toolbar.scss
rename to app/admin/assets/src/scss/components/_toolbar.scss
index 5c432bd631..888ce433d4 100644
--- a/app/admin/assets/scss/components/_toolbar.scss
+++ b/app/admin/assets/src/scss/components/_toolbar.scss
@@ -77,14 +77,16 @@
.btn-primary {
color: #FFFFFF;
- @include hover() {
+
+ &:hover {
color: #FFFFFF;
}
}
.btn-outline-primary {
color: $primary;
- @include hover() {
+
+ &:hover {
color: #FFFFFF;
}
}
@@ -92,14 +94,14 @@
@each $color, $value in $theme-colors {
@if not ($color == "primary") {
.btn-#{$color} {
- @include button-variant($secondary, $secondary, darken($value, 7.5%), darken($value, 10%), darken($value, 10%), darken($value, 12.5%));
+ @include button-variant($secondary, $secondary, $white, darken($value, 10%), darken($value, 10%), color-contrast(darken($value, 12.5%)));
}
}
}
@each $color, $value in $theme-colors {
@if not ($color == "primary") {
.btn-outline-#{$color} {
- @include button-outline-variant($secondary, color-yiq($value), $value, $value);
+ @include button-outline-variant($secondary, color-contrast(darken($value, 12.5%)), $value, $value);
}
}
}
diff --git a/app/admin/assets/scss/helpers/_+import-helpers.scss b/app/admin/assets/src/scss/helpers/_+import-helpers.scss
similarity index 53%
rename from app/admin/assets/scss/helpers/_+import-helpers.scss
rename to app/admin/assets/src/scss/helpers/_+import-helpers.scss
index e9336edb8b..8cc02d619b 100644
--- a/app/admin/assets/scss/helpers/_+import-helpers.scss
+++ b/app/admin/assets/src/scss/helpers/_+import-helpers.scss
@@ -1,2 +1,2 @@
@import "variables";
-@import "mixins";
\ No newline at end of file
+@import "mixins";
diff --git a/app/admin/assets/src/scss/helpers/_mixins.scss b/app/admin/assets/src/scss/helpers/_mixins.scss
new file mode 100644
index 0000000000..132f848379
--- /dev/null
+++ b/app/admin/assets/src/scss/helpers/_mixins.scss
@@ -0,0 +1,137 @@
+// --------------------------------------------------
+// Flexbox SASS mixins
+// The spec: http://www.w3.org/TR/css3-flexbox
+// --------------------------------------------------
+
+// Flexbox display
+@mixin flexbox() {
+ display: -webkit-box;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: -webkit-flex;
+ display: flex;
+}
+
+// The 'flex' shorthand
+// - applies to: flex items
+//
, initial, auto, or none
+@mixin flex($values) {
+ -webkit-box-flex: $values;
+ -moz-box-flex: $values;
+ -webkit-flex: $values;
+ -ms-flex: $values;
+ flex: $values;
+}
+
+// Flex Flow Direction
+// - applies to: flex containers
+// row | row-reverse | column | column-reverse
+@mixin flex-direction($direction) {
+ -webkit-flex-direction: $direction;
+ -moz-flex-direction: $direction;
+ -ms-flex-direction: $direction;
+ flex-direction: $direction;
+}
+
+// Flex Line Wrapping
+// - applies to: flex containers
+// nowrap | wrap | wrap-reverse
+@mixin flex-wrap($wrap) {
+ -webkit-flex-wrap: $wrap;
+ -moz-flex-wrap: $wrap;
+ -ms-flex-wrap: $wrap;
+ flex-wrap: $wrap;
+}
+
+// Flex Direction and Wrap
+// - applies to: flex containers
+// ||
+@mixin flex-flow($flow) {
+ -webkit-flex-flow: $flow;
+ -moz-flex-flow: $flow;
+ -ms-flex-flow: $flow;
+ flex-flow: $flow;
+}
+
+// Display Order
+// - applies to: flex items
+//
+@mixin order($val) {
+ -webkit-box-ordinal-group: $val;
+ -moz-box-ordinal-group: $val;
+ -ms-flex-order: $val;
+ -webkit-order: $val;
+ order: $val;
+}
+
+// Flex grow factor
+// - applies to: flex items
+//
+@mixin flex-grow($grow) {
+ -webkit-flex-grow: $grow;
+ -moz-flex-grow: $grow;
+ -ms-flex-grow: $grow;
+ flex-grow: $grow;
+}
+
+// Flex shrink
+// - applies to: flex item shrink factor
+//
+@mixin flex-shrink($shrink) {
+ -webkit-flex-shrink: $shrink;
+ -moz-flex-shrink: $shrink;
+ -ms-flex-shrink: $shrink;
+ flex-shrink: $shrink;
+}
+
+// Flex basis
+// - the initial main size of the flex item
+// - applies to: flex itemsnitial main size of the flex item
+//
+@mixin flex-basis($width) {
+ -webkit-flex-basis: $width;
+ -moz-flex-basis: $width;
+ -ms-flex-basis: $width;
+ flex-basis: $width;
+}
+
+// Axis Alignment
+// - applies to: flex containers
+// flex-start | flex-end | center | space-between | space-around
+@mixin justify-content($justify) {
+ -webkit-justify-content: $justify;
+ -moz-justify-content: $justify;
+ -ms-justify-content: $justify;
+ justify-content: $justify;
+ -ms-flex-pack: $justify;
+}
+
+// Packing Flex Lines
+// - applies to: multi-line flex containers
+// flex-start | flex-end | center | space-between | space-around | stretch
+@mixin align-content($align) {
+ -webkit-align-content: $align;
+ -moz-align-content: $align;
+ -ms-align-content: $align;
+ align-content: $align;
+}
+
+// Cross-axis Alignment
+// - applies to: flex containers
+// flex-start | flex-end | center | baseline | stretch
+@mixin align-items($align) {
+ -webkit-align-items: $align;
+ -moz-align-items: $align;
+ -ms-align-items: $align;
+ align-items: $align;
+}
+
+// Cross-axis Alignment
+// - applies to: flex items
+// auto | flex-start | flex-end | center | baseline | stretch
+@mixin align-self($align) {
+ -webkit-align-self: $align;
+ -moz-align-self: $align;
+ -ms-align-self: $align;
+ align-self: $align;
+}
diff --git a/app/admin/assets/src/scss/helpers/_utilities.scss b/app/admin/assets/src/scss/helpers/_utilities.scss
new file mode 100644
index 0000000000..fdcc3bf620
--- /dev/null
+++ b/app/admin/assets/src/scss/helpers/_utilities.scss
@@ -0,0 +1,81 @@
+$utilities: map-merge($utilities, (
+ "shadow": map-merge(
+ map-get($utilities, "shadow"),
+ (state: hover),
+ ),
+ "width": map-merge(
+ map-get($utilities, "width"),
+ (responsive: true),
+ ),
+ "margin-left": (
+ responsive: true,
+ property: margin-left,
+ class: ml,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-right": (
+ responsive: true,
+ property: margin-right,
+ class: mr,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "padding-left": (
+ responsive: true,
+ property: padding-left,
+ class: pl,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "padding-right": (
+ responsive: true,
+ property: padding-right,
+ class: pr,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "max-width": map-merge(
+ map-get($utilities, "max-width"),
+ (responsive: true, values: (
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%,
+ auto: auto
+ )),
+ ),
+ "max-height": map-merge(
+ map-get($utilities, "max-height"),
+ (responsive: true, values: (
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%,
+ auto: auto
+ )),
+ ),
+ "viewport-width": map-merge(
+ map-get($utilities, "viewport-width"),
+ (responsive: true, values: (
+ 25: 25vh,
+ 50: 50vh,
+ 75: 75vh,
+ 100: 100vh,
+ auto: auto
+ )),
+ ),
+ "viewport-height": map-merge(
+ map-get($utilities, "viewport-height"),
+ (responsive: true, values: (
+ 25: 25vh,
+ 50: 50vh,
+ 75: 75vh,
+ 100: 100vh,
+ auto: auto
+ )),
+ ),
+ "cursor": (
+ property: cursor,
+ class: cursor,
+ responsive: true,
+ values: auto pointer grab no-drop,
+ ),
+));
+
diff --git a/app/admin/assets/src/scss/helpers/_variables.scss b/app/admin/assets/src/scss/helpers/_variables.scss
new file mode 100644
index 0000000000..12fdab7617
--- /dev/null
+++ b/app/admin/assets/src/scss/helpers/_variables.scss
@@ -0,0 +1,207 @@
+$white: #FFFFFF !default;
+$gray-100: #FCFDFF !default;
+$gray-200: #E8E9EF !default;
+$gray-300: #D2D4DF !default;
+$gray-400: #C0C2CE !default;
+$gray-500: #9194A6 !default;
+$gray-600: #6F7B9C !default;
+$gray-700: #48557B !default;
+$gray-800: #2E3B61 !default;
+$gray-900: #192957 !default;
+$black: #000329 !default;
+//
+// Colors
+//
+$primary: #2170C0 !default;
+$secondary: $gray-700 !default;
+$success: #28A745 !default;
+$info: #5A67D8 !default;
+$warning: #FD7E14 !default;
+$danger: #DC3545 !default;
+$light: $gray-100 !default;
+$dark: $gray-900 !default;
+
+$theme-colors: () !default;
+$theme-colors: map-merge((
+ "primary": $primary,
+ "default": $secondary,
+ "secondary": $secondary,
+ "success": $success,
+ "info": $info,
+ "warning": $warning,
+ "danger": $danger,
+ "light": $light,
+ "dark": $dark
+), $theme-colors);
+//
+// Options
+//
+$enable-shadows: true !default;
+$enable-negative-margins: true !default;
+$images-path: '../../../admin/assets/images/';
+$icon-font-path: '../../../admin/assets/fonts/';
+$fa-font-path: $icon-font-path+'FontAwesome';
+// Body
+//
+$body-bg: $gray-200 !default;
+$body-color: $gray-800 !default;
+
+$link-hover-decoration: none !default;
+//
+// Typography
+//
+$text-muted: $gray-500 !default;
+$line-height-base: 1.5 !default;
+$text-muted: $gray-600 !default;
+$h5-font-size: 15px !default;
+
+$label-padding-y: .5rem !default;
+$label-padding-x: .75rem !default;
+//
+// Fonts
+//
+$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
+$font-family-monospace: -apple-system, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+
+$font-weight-semibold: 500 !default;
+$font-weight-bold: 600 !default;
+$font-size-xs: 0.8125rem !default;
+$font-size-base: 0.875rem !default;
+$font-size-lg: $font-size-base * 1.25 !default;
+$font-size-sm: $font-size-base * .875 !default;
+//
+// Tables
+//
+$table-cell-padding: .45rem !default;
+$table-cell-padding-sm: .1rem !default;
+$table-head-bg: $gray-300 !default;
+$table-accent-bg: $gray-200 !default;
+$table-border-color: $gray-300 !default;
+$table-hover-bg: $gray-300 !default;
+//
+// Buttons + Forms
+//
+// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
+$input-btn-padding-y: .5rem !default;
+$input-btn-padding-x: .75rem !default;
+$input-spacer: 6px !default;
+$input-font-size: 0.9375rem !default;
+//
+// Buttons
+//
+$btn-border-radius: 3px !default;
+$btn-font-weight: 600 !default;
+$btn-action-padding: 4px 8px !default;
+$btn-spacer: 10px !default;
+$btn-border-bottom-width: 2px !default;
+$btn-hover-border-bottom-width: 1px !default;
+$btn-active-box-shadow: none !default;
+//
+// Forms
+//
+$input-bg: $white !default;
+$input-disabled-bg: $gray-300 !default;
+$input-color: $dark !default;
+$input-border-color: $gray-300 !default;
+$input-border-radius: 3px !default;
+$input-box-shadow: none !default;
+$custom-control-indicator-size: 1.5rem !default;
+$input-disabled-bg: $gray-300 !default;
+$input-height-border: 3px !default;
+$form-check-input-width: 1.25em;
+$form-fields-padding: 1.25rem .725rem !default;
+$form-fields-padding-x: 20px !default;
+$form-nav-link-padding-y: .52rem !default;
+$form-nav-link-padding-x: 1.2rem !default;
+$custom-control-indicator-border-color: $gray-300 !default;
+$custom-control-indicator-disabled-bg: $gray-400 !default;
+
+// Navs
+//
+$nav-tabs-border-radius: .625rem !default;
+// Dropdowns
+//
+// Dropdown menu container and contents.
+$dropdown-padding-x: .5rem !default;
+
+// Cards
+$card-border-color: $gray-300 !default;
+$card-cap-bg: $gray-300 !default;
+$card-bg: $gray-200 !default;
+$card-spacer-y: .625rem !default;
+$card-spacer-x: 0.9375rem !default;
+
+// Accordion
+$accordion-button-active-bg: transparent !default;
+$accordion-button-active-color: inherit !default;
+
+// Popover
+$popover-bg: $gray-200 !default;
+
+// Dropdowns
+$dropdown-bg: $gray-200 !default;
+$dropdown-border-color: rgba($black, .15) !default;
+$dropdown-divider-bg: $gray-300 !default;
+
+$dropdown-link-color: $gray-900 !default;
+$dropdown-link-hover-color: darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg: $gray-300 !default;
+
+$dropdown-link-disabled-color: $gray-600 !default;
+
+$dropdown-header-color: $gray-600 !default;
+
+// Alert
+$alert-bg-scale: -20% !default;
+$alert-border-scale: -20% !default;
+$alert-color-scale: 80% !default;
+// List group
+$list-group-bg: $gray-100 !default;
+$list-group-hover-bg: $gray-200 !default;
+$list-group-action-color: $body-color !default;
+$list-group-border-color: $input-border-color !default;
+
+// Modals
+$modal-content-bg: $gray-200 !default;
+$modal-header-border-color: $gray-300 !default;
+$modal-xl: 1140px !default;
+$modal-lg: 800px !default;
+$modal-md: 600px !default;
+$modal-sm: 400px !default;
+$modal-backdrop-opacity: .7 !default;
+
+// Badges
+$badge-color: inherit !default;
+//
+// Page
+//
+$page-padding-x: 20px !default;
+$page-padding-y: 30px !default;
+$page-top: 64px !default;
+$page-top-line-height: 48px !default;
+$page-bottom: 0 !default;
+$page-margin-left: 230px !default;
+$logo-font-size: 3rem !default;
+$logo-line-height: 32px !default;
+//
+// Main menu
+//
+$mainmenu-font-size: 24px !default;
+$mainmenu-icon-size: 16px !default;
+$mainmenu-dropdown-width: 300px !default;
+$mainmenu-menu-max-height: 70vh !default;
+$mainmenu-padding-x: 0.5rem !default;
+$mainmenu-padding-y: 1rem !default;
+//
+// Side nav
+//
+$sidenav-bg: $gray-900 !default;
+$sidenav-font-size: 15px !default;
+$sidenav-submenu-font-size: $font-size-base !default;
+$sidenav-font-weight: 500 !default;
+$sidenav-font-size-bold: 600 !default;
+$sidenav-line-height: 50px !default;
+$sidenav-line-height-sm: 42px !default;
+$sidenav-padding-x: 0 !default;
+$sidenav-padding-y: 1rem !default;
+$dropdown-item-padding-y: 0.5rem !default;
diff --git a/app/admin/assets/src/scss/utilities/_+import-utilities.scss b/app/admin/assets/src/scss/utilities/_+import-utilities.scss
new file mode 100644
index 0000000000..6e159385c1
--- /dev/null
+++ b/app/admin/assets/src/scss/utilities/_+import-utilities.scss
@@ -0,0 +1,2 @@
+@import "reboot";
+@import "utilities";
diff --git a/app/admin/assets/src/scss/utilities/_reboot.scss b/app/admin/assets/src/scss/utilities/_reboot.scss
new file mode 100644
index 0000000000..5a9a6f49d0
--- /dev/null
+++ b/app/admin/assets/src/scss/utilities/_reboot.scss
@@ -0,0 +1,17 @@
+a {
+ text-decoration: none;
+}
+a:not([href]):not([tabindex]):not([data-handler]):not([data-request]):not([role="button"]) {
+ color: inherit;
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ color: inherit;
+ text-decoration: none;
+ }
+
+ &:focus {
+ outline: 0;
+ }
+}
diff --git a/app/system/assets/ui/scss/utilities/_replace.scss b/app/admin/assets/src/scss/utilities/_replace.scss
similarity index 67%
rename from app/system/assets/ui/scss/utilities/_replace.scss
rename to app/admin/assets/src/scss/utilities/_replace.scss
index 99a7773325..d7a03fa5b9 100644
--- a/app/system/assets/ui/scss/utilities/_replace.scss
+++ b/app/admin/assets/src/scss/utilities/_replace.scss
@@ -7,14 +7,14 @@
@extend .list-inline-item;
}
.navbar-btn,
-.nav navbar > li {
+.nav .navbar > li {
@extend .nav-item;
}
-.nav navbar > li > a {
+.nav .navbar > li > a {
@extend .nav-link;
}
.navbar-right {
- @extend .ml-auto;
+ @extend .ms-auto;
}
.navbar-fixed-top {
@extend .fixed-top;
@@ -66,11 +66,11 @@
.item {
@extend .carousel-item;
}
-.pull-right {
- @extend .float-right;
+.pull-right, .float-right {
+ @extend .float-end;
}
-.pull-left {
- @extend .float-left;
+.pull-left, .float-left {
+ @extend .float-start;
}
.center-block {
@extend .mx-auto;
@@ -113,6 +113,43 @@
}
@each $color, $value in $theme-colors {
.label-#{$color} {
- @extend .badge-#{$color};
+ @extend .bg-#{$color};
}
}
+.badge-pill {
+ @extend .rounded-pill;
+}
+.form-group {
+ margin-bottom: $spacer;
+}
+.form-row {
+ @extend .row;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.border-right {
+ @extend .border-end;
+}
+.border-left {
+ @extend .border-start;
+}
+.text-right {
+ @extend .text-end;
+}
+.text-left {
+ @extend .text-start;
+}
+.font-weight-normal {
+ @extend .fw-normal;
+}
+.font-weight-bold {
+ @extend .fw-bold;
+}
+.input-group-addon, .input-group-append, .input-group-prepend {
+ @extend .input-group-text;
+}
+.no-gutters {
+ @extend .g-0;
+}
diff --git a/app/system/assets/ui/scss/utilities/_utilities.scss b/app/admin/assets/src/scss/utilities/_utilities.scss
similarity index 82%
rename from app/system/assets/ui/scss/utilities/_utilities.scss
rename to app/admin/assets/src/scss/utilities/_utilities.scss
index 8c4257a1b7..4adec2382f 100644
--- a/app/system/assets/ui/scss/utilities/_utilities.scss
+++ b/app/admin/assets/src/scss/utilities/_utilities.scss
@@ -1,3 +1,24 @@
+html {
+ position: relative;
+ font-size: 100%;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ min-height: 100%;
+ height: 100%;
+}
+
+body.page {
+ height: 100%;
+ overflow: hidden;
+}
+.page-x-spacer {
+ padding-right: $page-padding-x;
+ padding-left: $page-padding-x;
+}
+.page-y-spacer {
+ padding-top: $page-padding-y;
+ padding-bottom: $page-padding-y;
+}
html, html a {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@@ -114,4 +135,4 @@ a[data-request] {
.sortable-placeholder {
border: 1px solid $gray-800;
margin: 10px auto;
-}
\ No newline at end of file
+}
diff --git a/app/admin/assets/src/scss/vendor/_+import_vendors.scss b/app/admin/assets/src/scss/vendor/_+import_vendors.scss
new file mode 100644
index 0000000000..192f00922d
--- /dev/null
+++ b/app/admin/assets/src/scss/vendor/_+import_vendors.scss
@@ -0,0 +1,12 @@
+//
+// FontAwesome
+@import "../../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome";
+@import "../../../node_modules/@fortawesome/fontawesome-free/scss/brands";
+@import "../../../node_modules/@fortawesome/fontawesome-free/scss/solid";
+@import "../../../node_modules/@fortawesome/fontawesome-free/scss/regular";
+//
+// Animate.css
+@import "animate";
+//
+// Sweetalert2
+@import "../../../node_modules/sweetalert2/src/sweetalert2";
diff --git a/app/admin/assets/src/scss/vendor/_animate.scss b/app/admin/assets/src/scss/vendor/_animate.scss
new file mode 100644
index 0000000000..3f4ad6f26f
--- /dev/null
+++ b/app/admin/assets/src/scss/vendor/_animate.scss
@@ -0,0 +1,7 @@
+@charset "UTF-8";/*!
+ * animate.css - https://animate.style/
+ * Version - 4.1.1
+ * Licensed under the MIT license - http://opensource.org/licenses/MIT
+ *
+ * Copyright (c) 2020 Animate.css
+ */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animated.repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animated.repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}
\ No newline at end of file
diff --git a/app/admin/assets/src/scss/vendor/_bootstrap-components.scss b/app/admin/assets/src/scss/vendor/_bootstrap-components.scss
new file mode 100644
index 0000000000..9a765d1c79
--- /dev/null
+++ b/app/admin/assets/src/scss/vendor/_bootstrap-components.scss
@@ -0,0 +1,38 @@
+@import "../../../node_modules/bootstrap/scss/root";
+@import "../../../node_modules/bootstrap/scss/reboot";
+@import "../../../node_modules/bootstrap/scss/type";
+@import "../../../node_modules/bootstrap/scss/images";
+@import "../../../node_modules/bootstrap/scss/containers";
+@import "../../../node_modules/bootstrap/scss/grid";
+@import "../../../node_modules/bootstrap/scss/tables";
+@import "../../../node_modules/bootstrap/scss/forms";
+@import "../../../node_modules/bootstrap/scss/buttons";
+@import "../../../node_modules/bootstrap/scss/transitions";
+@import "../../../node_modules/bootstrap/scss/dropdown";
+@import "../../../node_modules/bootstrap/scss/button-group";
+@import "../../../node_modules/bootstrap/scss/nav";
+@import "../../../node_modules/bootstrap/scss/navbar";
+@import "../../../node_modules/bootstrap/scss/card";
+@import "../../../node_modules/bootstrap/scss/accordion";
+@import "../../../node_modules/bootstrap/scss/breadcrumb";
+@import "../../../node_modules/bootstrap/scss/pagination";
+@import "../../../node_modules/bootstrap/scss/badge";
+@import "../../../node_modules/bootstrap/scss/alert";
+@import "../../../node_modules/bootstrap/scss/progress";
+@import "../../../node_modules/bootstrap/scss/list-group";
+@import "../../../node_modules/bootstrap/scss/close";
+@import "../../../node_modules/bootstrap/scss/toasts";
+@import "../../../node_modules/bootstrap/scss/modal";
+@import "../../../node_modules/bootstrap/scss/tooltip";
+@import "../../../node_modules/bootstrap/scss/popover";
+@import "../../../node_modules/bootstrap/scss/carousel";
+@import "../../../node_modules/bootstrap/scss/spinners";
+@import "../../../node_modules/bootstrap/scss/offcanvas";
+@import "../../../node_modules/bootstrap/scss/placeholders";
+
+// Helpers
+@import "../../../node_modules/bootstrap/scss/helpers";
+
+// Utilities
+@import "../../../node_modules/bootstrap/scss/utilities/api";
+// scss-docs-end import-stack
diff --git a/app/admin/assets/src/scss/vendor/_bootstrap-helpers.scss b/app/admin/assets/src/scss/vendor/_bootstrap-helpers.scss
new file mode 100644
index 0000000000..258ebc4527
--- /dev/null
+++ b/app/admin/assets/src/scss/vendor/_bootstrap-helpers.scss
@@ -0,0 +1,4 @@
+@import "../../../node_modules/bootstrap/scss/functions";
+@import "../../../node_modules/bootstrap/scss/variables";
+@import "../../../node_modules/bootstrap/scss/mixins";
+@import "../../../node_modules/bootstrap/scss/utilities";
diff --git a/app/admin/assets/webpack.mix.js b/app/admin/assets/webpack.mix.js
index e742ab95f2..847bcef037 100644
--- a/app/admin/assets/webpack.mix.js
+++ b/app/admin/assets/webpack.mix.js
@@ -15,74 +15,198 @@ mix.setPublicPath('./').options({
|
*/
+//
+// Build Admin SCSS
+//
+mix.sass('src/scss/admin.scss', 'css')
+
+//
+// Combine Admin UI JS
+//
+mix.scripts(
+ [
+ 'node_modules/jquery/dist/jquery.min.js',
+ 'node_modules/@popperjs/core/dist/umd/popper.min.js',
+ 'node_modules/bootstrap/dist/js/bootstrap.min.js',
+ 'node_modules/sweetalert2/dist/sweetalert2.min.js',
+ 'node_modules/js-cookie/src/js.cookie.js',
+ 'node_modules/metismenu/dist/metisMenu.min.js',
+ 'src/js/vendor/waterfall.min.js',
+ 'src/js/request.js',
+ 'src/js/loader.bar.js',
+ 'src/js/loader.progress.js',
+ 'src/js/flashmessage.js',
+ 'src/js/toggler.js',
+ 'src/js/trigger.js',
+ 'src/js/app.js',
+ ],
+ 'js/admin.js'
+)
+
+// We only want to copy these files when building for production
+if (process.env.NODE_ENV !== 'production') return
+
//
// Copy fonts from node_modules
//
mix.copyDirectory(
'node_modules/@fortawesome/fontawesome-free/webfonts',
- '../../system/assets/ui/fonts/FontAwesome'
-)
-.copy(
- 'node_modules/animate.css/animate.min.css',
- '../../admin/assets/scss/vendor/_animate.scss'
-)
-.copy(
+ '../../admin/assets/fonts/FontAwesome'
+).copy(
+ 'node_modules/animate.css/animate.compat.css',
+ '../../admin/assets/src/scss/vendor/_animate.scss'
+);
+
+mix.copy(
+ 'node_modules/chart.js/dist/chart.min.js',
+ '../dashboardwidgets/charts/assets/vendor/chartjs/Chart.min.js'
+).copy(
+ 'node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.min.js',
+ '../dashboardwidgets/charts/assets/vendor/chartjs/chartjs-adapter-moment.min.js'
+).copy(
+ 'node_modules/daterangepicker/daterangepicker.js',
+ '../dashboardwidgets/charts/assets/vendor/daterange/daterangepicker.js'
+).copy(
+ 'node_modules/daterangepicker/daterangepicker.css',
+ '../dashboardwidgets/charts/assets/vendor/daterange/daterangepicker.css'
+);
+
+mix.copy(
+ 'node_modules/codemirror/lib/codemirror.css',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/codemirror.css'
+).copy(
+ 'node_modules/codemirror/lib/codemirror.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/codemirror.js'
+).copy(
+ 'node_modules/codemirror/theme/material.css',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/material.css'
+).copy(
+ 'node_modules/codemirror/mode/clike/clike.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/clike/clike.js'
+).copy(
+ 'node_modules/codemirror/mode/css/css.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/css/css.js'
+).copy(
+ 'node_modules/codemirror/mode/htmlembedded/htmlembedded.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/htmlembedded/htmlembedded.js'
+).copy(
+ 'node_modules/codemirror/mode/htmlmixed/htmlmixed.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/htmlmixed/htmlmixed.js'
+).copy(
+ 'node_modules/codemirror/mode/javascript/javascript.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/javascript/javascript.js'
+).copy(
+ 'node_modules/codemirror/mode/php/php.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/php/php.js'
+).copy(
+ 'node_modules/codemirror/mode/xml/xml.js',
+ '../formwidgets/codeeditor/assets/vendor/codemirror/xml/xml.js'
+);
+
+mix.copy(
'node_modules/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css',
'../formwidgets/colorpicker/assets/vendor/colorpicker/css/bootstrap-colorpicker.min.css'
-)
-.copy(
+).copy(
+ 'node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js',
+ '../formwidgets/colorpicker/assets/vendor/colorpicker/js/bootstrap-colorpicker.min.js'
+);
+
+mix.copy(
+ 'node_modules/clockpicker/dist/bootstrap-clockpicker.min.css',
+ '../formwidgets/datepicker/assets/vendor/clockpicker/bootstrap-clockpicker.min.css'
+).copy(
+ 'node_modules/clockpicker/dist/bootstrap-clockpicker.min.js',
+ '../formwidgets/datepicker/assets/vendor/clockpicker/bootstrap-clockpicker.min.js'
+);
+
+mix.copy(
+ 'node_modules/tempusdominus-bootstrap-4/build/css/tempusdominus-bootstrap-4.min.css',
+ '../formwidgets/datepicker/assets/vendor/datetimepicker/tempusdominus-bootstrap-4.min.css'
+).copy(
+ 'node_modules/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.min.js',
+ '../formwidgets/datepicker/assets/vendor/datetimepicker/tempusdominus-bootstrap-4.min.js'
+);
+
+mix.copy(
+ 'node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css',
+ '../formwidgets/datepicker/assets/vendor/datepicker/bootstrap-datepicker.min.css'
+).copy(
+ 'node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js',
+ '../formwidgets/datepicker/assets/vendor/datepicker/bootstrap-datepicker.min.js'
+).copyDirectory(
+ 'node_modules/bootstrap-datepicker/dist/locales',
+ '../formwidgets/datepicker/assets/vendor/datepicker/locales'
+);
+
+mix.copy(
+ 'node_modules/easymde/dist/easymde.min.css',
+ '../formwidgets/markdowneditor/assets/vendor/easymde/easymde.min.css'
+).copy(
+ 'node_modules/easymde/dist/easymde.min.js',
+ '../formwidgets/markdowneditor/assets/vendor/easymde/easymde.min.js'
+);
+
+mix.copy(
'node_modules/sortablejs/Sortable.min.js',
'../formwidgets/repeater/assets/vendor/sortablejs/Sortable.min.js'
-)
-.copy(
+).copy(
'node_modules/jquery-sortablejs/jquery-sortable.js',
'../formwidgets/repeater/assets/vendor/sortablejs/jquery-sortable.js'
-)
-.copy(
- 'node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js',
- '../formwidgets/colorpicker/assets/vendor/colorpicker/js/bootstrap-colorpicker.min.js'
-)
-.copy(
- 'node_modules/metismenu/dist/metisMenu.min.js.map',
- 'js/metisMenu.min.js.map'
);
-//
-// Build Admin SCSS
-//
-// mix.sass('scss/admin.scss', 'css')
+mix.copy(
+ 'node_modules/summernote/dist/summernote-bs5.min.css',
+ '../formwidgets/richeditor/assets/vendor/summernote/summernote-bs5.min.css'
+).copy(
+ 'node_modules/summernote/dist/summernote-bs5.min.js',
+ '../formwidgets/richeditor/assets/vendor/summernote/summernote-bs5.min.js'
+).copy(
+ 'node_modules/summernote/dist/summernote-bs5.js.map',
+ '../formwidgets/richeditor/assets/vendor/summernote/summernote-bs5.js.map'
+).copyDirectory(
+ 'node_modules/summernote/dist/font',
+ '../formwidgets/richeditor/assets/vendor/summernote/font'
+).copyDirectory(
+ 'node_modules/summernote/dist/lang',
+ '../formwidgets/richeditor/assets/vendor/summernote/lang'
+);
-//
-// Combine UI JS
-//
-// mix.scripts(
-// [
-// 'node_modules/jquery/dist/jquery.min.js',
-// 'node_modules/popper.js/dist/umd/popper.min.js',
-// 'node_modules/bootstrap/dist/js/bootstrap.min.js',
-// 'node_modules/sweetalert/dist/sweetalert.min.js',
-// '../../system/assets/ui/js/vendor/waterfall.min.js',
-// '../../system/assets/ui/js/vendor/transition.js',
-// '../../system/assets/ui/js/app.js',
-// '../../system/assets/ui/js/loader.bar.js',
-// '../../system/assets/ui/js/loader.progress.js',
-// '../../system/assets/ui/js/flashmessage.js',
-// '../../system/assets/ui/js/toggler.js',
-// '../../system/assets/ui/js/trigger.js',
-// ],
-// '../../system/assets/ui/flame.js'
-// )
+mix.copy(
+ 'node_modules/fullcalendar/main.min.css',
+ '../widgets/calendar/assets/vendor/fullcalendar/main.min.css'
+).copy(
+ 'node_modules/fullcalendar/main.min.js',
+ '../widgets/calendar/assets/vendor/fullcalendar/main.min.js'
+).copy(
+ 'node_modules/fullcalendar/locales-all.min.js',
+ '../widgets/calendar/assets/vendor/fullcalendar/locales-all.min.js'
+);
-//
-// Combine Admin Vendor JS
-//
-// mix.scripts(
-// [
-// '../../system/assets/ui/flame.js',
-// 'node_modules/js-cookie/src/js.cookie.js',
-// 'node_modules/select2/dist/js/select2.min.js',
-// 'node_modules/metismenu/dist/metisMenu.min.js',
-// 'js/src/app.js',
-// ],
-// 'js/admin.js'
-// )
\ No newline at end of file
+mix.copy(
+ 'node_modules/bootstrap-multiselect/dist/css/bootstrap-multiselect.css',
+ '../widgets/form/assets/vendor/bootstrap-multiselect/bootstrap-multiselect.css'
+).copy(
+ 'node_modules/bootstrap-multiselect/dist/js/bootstrap-multiselect.js',
+ '../widgets/form/assets/vendor/bootstrap-multiselect/bootstrap-multiselect.js'
+);
+
+mix.copy(
+ 'node_modules/inputmask/dist/jquery.inputmask.min.js',
+ '../widgets/form/assets/vendor/inputmask/jquery.inputmask.min.js'
+);
+
+mix.copy(
+ 'node_modules/bootstrap-table/dist/bootstrap-table.min.css',
+ '../widgets/table/assets/vendor/bootstrap-table/bootstrap-table.min.css'
+).copy(
+ 'node_modules/bootstrap-table/dist/bootstrap-table.min.js',
+ '../widgets/table/assets/vendor/bootstrap-table/bootstrap-table.min.js'
+);
+
+mix.copy(
+ 'node_modules/dropzone/dist/dropzone.css',
+ '../../main/widgets/mediamanager/assets/vendor/dropzone/dropzone.min.css'
+).copy(
+ 'node_modules/dropzone/dist/dropzone-min.js',
+ '../../main/widgets/mediamanager/assets/vendor/dropzone/dropzone.min.js'
+);
diff --git a/app/admin/classes/AdminController.php b/app/admin/classes/AdminController.php
index 1cba0cc43d..8deb3c6023 100644
--- a/app/admin/classes/AdminController.php
+++ b/app/admin/classes/AdminController.php
@@ -20,7 +20,6 @@
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;
-use Illuminate\Support\Facades\View;
use Main\Widgets\MediaManager;
use System\Classes\Controller;
use System\Classes\ErrorHandler;
@@ -55,7 +54,7 @@ class AdminController extends BaseController
/**
* @var bool Prevents the automatic view display.
*/
- public $suppressView = FALSE;
+ public $suppressView = false;
/**
* @var string Page method name being called.
@@ -175,8 +174,13 @@ public function initialize()
$manager->bindToController();
}
+ // Top menu widget is available on all admin pages
+ $this->makeMainMenuWidget();
+
// @deprecated This event will be deprecated soon, use controller.beforeRemap
$this->fireEvent('controller.afterConstructor', [$this]);
+
+ return $this;
}
public function remap($action, $params)
@@ -202,20 +206,21 @@ public function remap($action, $params)
if ($this->requiredPermissions && !$this->getUser()->hasAnyPermission($this->requiredPermissions)) {
return Response::make(Request::ajax()
? lang('admin::lang.alert_user_restricted')
- : View::make('admin::access_denied'), 403
+ : $this->makeView('access_denied'), 403
);
}
}
- // Top menu widget is available on all admin pages
- $this->makeMainMenuWidget();
-
if ($event = $this->fireSystemEvent('admin.controller.beforeResponse', [$action, $params])) {
return $event;
}
+ if ($action === '404') {
+ return Response::make($this->makeView('404'), 404);
+ }
+
// Execute post handler and AJAX event
- if (($handlerResponse = $this->processHandlers()) && $handlerResponse !== TRUE) {
+ if (($handlerResponse = $this->processHandlers()) && $handlerResponse !== true) {
return $handlerResponse;
}
@@ -232,10 +237,10 @@ public function remap($action, $params)
public function checkAction($action)
{
if (!$methodExists = $this->methodExists($action))
- return FALSE;
+ return false;
if (in_array(strtolower($action), array_map('strtolower', $this->hiddenActions)))
- return FALSE;
+ return false;
if (method_exists($this, $action)) {
$methodInfo = new \ReflectionMethod($this, $action);
@@ -252,7 +257,7 @@ public function pageAction()
return;
}
- $this->suppressView = TRUE;
+ $this->suppressView = true;
$this->execPageAction($this->action, $this->params);
}
@@ -325,7 +330,7 @@ public function getHandler()
protected function processHandlers()
{
if (!$handler = $this->getHandler())
- return FALSE;
+ return false;
try {
$this->validateHandler($handler);
@@ -442,7 +447,7 @@ public function redirectIntended($path, $status = 302, $headers = [], $secure =
return Admin::redirectIntended($path, $status, $headers, $secure);
}
- public function redirectBack($status = 302, $headers = [], $fallback = FALSE)
+ public function redirectBack($status = 302, $headers = [], $fallback = false)
{
return Redirect::back($status, $headers, Admin::url($fallback ?: 'dashboard'));
}
@@ -465,10 +470,10 @@ protected function runHandler($handler, $params)
throw new Exception(sprintf(lang('admin::lang.alert_widget_not_bound_to_controller'), $widgetName));
}
- if (($widget = $this->widgets[$widgetName]) && method_exists($widget, $handlerName)) {
+ if (($widget = $this->widgets[$widgetName]) && $widget->methodExists($handlerName)) {
$result = call_user_func_array([$widget, $handlerName], array_values($params));
- return $result ?: TRUE;
+ return $result ?: true;
}
}
// Process page specific handler (index_onSomething)
@@ -478,17 +483,17 @@ protected function runHandler($handler, $params)
if ($this->methodExists($pageHandler)) {
$result = call_user_func_array([$this, $pageHandler], array_values($params));
- return $result ?: TRUE;
+ return $result ?: true;
}
// Process page global handler (onSomething)
if ($this->methodExists($handler)) {
$result = call_user_func_array([$this, $handler], array_values($params));
- return $result ?: TRUE;
+ return $result ?: true;
}
- $this->suppressView = TRUE;
+ $this->suppressView = true;
$this->execPageAction($this->action, $this->params);
@@ -496,12 +501,12 @@ protected function runHandler($handler, $params)
if ($widget->methodExists($handler)) {
$result = call_user_func_array([$widget, $handler], array_values($params));
- return $result ?: TRUE;
+ return $result ?: true;
}
}
}
- return FALSE;
+ return false;
}
/**
diff --git a/app/admin/classes/Allocator.php b/app/admin/classes/Allocator.php
index 321dd7f625..9606ac73ff 100644
--- a/app/admin/classes/Allocator.php
+++ b/app/admin/classes/Allocator.php
@@ -21,7 +21,7 @@ public static function allocate()
public static function isEnabled()
{
- return (bool)params('allocator_is_enabled', FALSE);
+ return (bool)params('allocator_is_enabled', false);
}
public static function addSlot($slot)
@@ -31,7 +31,7 @@ public static function addSlot($slot)
$slot = [$slot];
foreach ($slot as $item) {
- $slots[$item] = TRUE;
+ $slots[$item] = true;
}
params()->set('allocator_slots', $slots);
diff --git a/app/admin/classes/BaseFormWidget.php b/app/admin/classes/BaseFormWidget.php
index fab718c5b9..d1f97624a8 100644
--- a/app/admin/classes/BaseFormWidget.php
+++ b/app/admin/classes/BaseFormWidget.php
@@ -32,12 +32,12 @@ class BaseFormWidget extends BaseWidget
/**
* @var bool Render this form with uneditable preview data.
*/
- public $previewMode = FALSE;
+ public $previewMode = false;
/**
* @var bool Determines if this form field should display comments and labels.
*/
- public $showLabels = TRUE;
+ public $showLabels = true;
//
// Object properties
diff --git a/app/admin/classes/BasePaymentGateway.php b/app/admin/classes/BasePaymentGateway.php
index 0455280870..1be4faedde 100644
--- a/app/admin/classes/BasePaymentGateway.php
+++ b/app/admin/classes/BasePaymentGateway.php
@@ -153,7 +153,7 @@ public function makeEntryPointUrl($code)
*/
public function isApplicable($total, $host)
{
- return TRUE;
+ return true;
}
/**
@@ -190,7 +190,7 @@ public function getFormattedApplicableFee($host = null)
*/
public function completesPaymentOnClient()
{
- return FALSE;
+ return false;
}
/**
@@ -229,7 +229,7 @@ public function getHostObject()
*/
public function supportsPaymentProfiles()
{
- return FALSE;
+ return false;
}
/**
diff --git a/app/admin/classes/FilterScope.php b/app/admin/classes/FilterScope.php
index 0bcf981d90..b0614b8e56 100644
--- a/app/admin/classes/FilterScope.php
+++ b/app/admin/classes/FilterScope.php
@@ -58,7 +58,7 @@ class FilterScope
/**
* @var bool Specify if the scope is disabled or not.
*/
- public $disabled = FALSE;
+ public $disabled = false;
/**
* @var string Specifies a default value for supported scopes.
diff --git a/app/admin/classes/FormField.php b/app/admin/classes/FormField.php
index 1cc05df7ee..dbd946472c 100644
--- a/app/admin/classes/FormField.php
+++ b/app/admin/classes/FormField.php
@@ -92,27 +92,27 @@ class FormField
/**
* @var bool Specifies if this field is mandatory.
*/
- public $required = FALSE;
+ public $required = false;
/**
* @var bool Specify if the field is read-only or not.
*/
- public $readOnly = FALSE;
+ public $readOnly = false;
/**
* @var bool Specify if the field is disabled or not.
*/
- public $disabled = FALSE;
+ public $disabled = false;
/**
* @var bool Specify if the field is hidden. Hiddens fields are not included in postbacks.
*/
- public $hidden = FALSE;
+ public $hidden = false;
/**
* @var bool Specifies if this field stretch to fit the page height.
*/
- public $stretch = FALSE;
+ public $stretch = false;
/**
* @var string Specifies a comment to accompany the field
@@ -127,7 +127,7 @@ class FormField
/**
* @var string Specifies if the comment is in HTML format.
*/
- public $commentHtml = FALSE;
+ public $commentHtml = false;
/**
* @var string Specifies a message to display when there is no value supplied (placeholder).
@@ -418,7 +418,7 @@ public function attributes($items, $position = 'field')
public function hasAttribute($name, $position = 'field')
{
if (!isset($this->attributes[$position])) {
- return FALSE;
+ return false;
}
return array_key_exists($name, $this->attributes[$position]);
@@ -433,7 +433,7 @@ public function hasAttribute($name, $position = 'field')
*
* @return string
*/
- public function getAttributes($position = 'field', $htmlBuild = TRUE)
+ public function getAttributes($position = 'field', $htmlBuild = true)
{
$result = array_get($this->attributes, $position, []);
$result = $this->filterAttributes($result, $position);
diff --git a/app/admin/classes/FormTabs.php b/app/admin/classes/FormTabs.php
index d108dfa7fe..40b51ab080 100644
--- a/app/admin/classes/FormTabs.php
+++ b/app/admin/classes/FormTabs.php
@@ -41,7 +41,7 @@ class FormTabs implements IteratorAggregate, ArrayAccess
/**
* @var bool If set to TRUE, fields will not be displayed in tabs.
*/
- public $suppressTabs = FALSE;
+ public $suppressTabs = false;
/**
* @var string Specifies a CSS class to attach to the tab container.
@@ -64,7 +64,7 @@ public function __construct($section, $config = [])
$this->config = $this->evalConfig($config);
if ($this->section == self::SECTION_OUTSIDE) {
- $this->suppressTabs = TRUE;
+ $this->suppressTabs = true;
}
}
@@ -131,12 +131,12 @@ public function removeField($name)
unset($this->fields[$tab]);
}
- return TRUE;
+ return true;
}
}
}
- return FALSE;
+ return false;
}
/**
diff --git a/app/admin/classes/ListColumn.php b/app/admin/classes/ListColumn.php
index 2e909ea2c7..e37b8a57ac 100644
--- a/app/admin/classes/ListColumn.php
+++ b/app/admin/classes/ListColumn.php
@@ -28,22 +28,22 @@ class ListColumn
/**
* @var bool Specifies if this column can be searched.
*/
- public $searchable = FALSE;
+ public $searchable = false;
/**
* @var bool Specifies if this column is hidden by default.
*/
- public $invisible = FALSE;
+ public $invisible = false;
/**
* @var bool Specifies if this column can be sorted.
*/
- public $sortable = TRUE;
+ public $sortable = true;
/**
* @var bool Specifies if this column can be edited.
*/
- public $editable = FALSE;
+ public $editable = false;
/**
* @var string Model attribute to use for the display value, this will
diff --git a/app/admin/classes/MenuItem.php b/app/admin/classes/MenuItem.php
index 766a55a458..b3ed7fa9fe 100644
--- a/app/admin/classes/MenuItem.php
+++ b/app/admin/classes/MenuItem.php
@@ -48,7 +48,7 @@ class MenuItem
/**
* @var bool Specify if the item is disabled or not.
*/
- public $disabled = FALSE;
+ public $disabled = false;
/**
* @var array Contains a list of attributes specified in the item configuration.
@@ -205,7 +205,7 @@ protected function evalConfig($config)
*
* @return array|string
*/
- public function getAttributes($htmlBuild = TRUE)
+ public function getAttributes($htmlBuild = true)
{
$attributes = $this->attributes;
diff --git a/app/admin/classes/Navigation.php b/app/admin/classes/Navigation.php
index 7acbd0f9e6..43d6034ae8 100644
--- a/app/admin/classes/Navigation.php
+++ b/app/admin/classes/Navigation.php
@@ -17,7 +17,7 @@ class Navigation
protected $mainItems;
- protected $navItemsLoaded = FALSE;
+ protected $navItemsLoaded = false;
protected $navContextItemCode;
@@ -77,12 +77,12 @@ public function getVisibleNavItems()
public function isActiveNavItem($code)
{
if ($code == $this->navContextParentCode)
- return TRUE;
+ return true;
if ($code == $this->navContextItemCode)
- return TRUE;
+ return true;
- return FALSE;
+ return false;
}
public function getMainItems()
@@ -181,14 +181,14 @@ public function loadItems()
$this->fireSystemEvent('admin.navigation.extendItems');
- $this->navItemsLoaded = TRUE;
+ $this->navItemsLoaded = true;
}
public function filterPermittedNavItems($items)
{
return collect($items)->filter(function ($item) {
if (!$permission = array_get($item, 'permission'))
- return TRUE;
+ return true;
return AdminAuth::user()->hasPermission($permission);
})->toArray();
diff --git a/app/admin/classes/OnboardingSteps.php b/app/admin/classes/OnboardingSteps.php
index 14a7ac3ab5..b3c0cba479 100755
--- a/app/admin/classes/OnboardingSteps.php
+++ b/app/admin/classes/OnboardingSteps.php
@@ -85,7 +85,7 @@ public function nextIncompleteStep()
protected function stepIsCompleted($callable)
{
- return is_callable($callable) ? $callable() : FALSE;
+ return is_callable($callable) ? $callable() : false;
}
//
diff --git a/app/admin/classes/PaymentGateways.php b/app/admin/classes/PaymentGateways.php
index e2a2886529..73638b6459 100644
--- a/app/admin/classes/PaymentGateways.php
+++ b/app/admin/classes/PaymentGateways.php
@@ -199,7 +199,7 @@ public static function createPartials()
$partialPath = $theme->getPath().'/_partials/'.$partialName.'.blade.php';
if (!File::isDirectory(dirname($partialPath)))
- File::makeDirectory(dirname($partialPath), null, TRUE);
+ File::makeDirectory(dirname($partialPath), null, true);
if (!array_key_exists($partialName, $partials)) {
File::put($partialPath, self::getFileContent($class));
diff --git a/app/admin/classes/PermissionManager.php b/app/admin/classes/PermissionManager.php
index 6c386f3b6d..5801751b0c 100644
--- a/app/admin/classes/PermissionManager.php
+++ b/app/admin/classes/PermissionManager.php
@@ -82,21 +82,21 @@ public function listGroupedPermissions()
public function checkPermission($permissions, $checkPermissions, $checkAll)
{
- $matched = FALSE;
+ $matched = false;
foreach ($checkPermissions as $permission) {
if ($this->checkPermissionStartsWith($permission, $permissions)
|| $this->checkPermissionEndsWith($permission, $permissions)
|| $this->checkPermissionMatches($permission, $permissions)
- ) $matched = TRUE;
+ ) $matched = true;
- if ($checkAll === FALSE && $matched === TRUE)
- return TRUE;
+ if ($checkAll === false && $matched === true)
+ return true;
- if ($checkAll === TRUE && $matched === FALSE)
- return FALSE;
+ if ($checkAll === true && $matched === false)
+ return false;
}
- return !($checkAll === FALSE);
+ return !($checkAll === false);
}
protected function checkPermissionStartsWith($permission, $permissions)
@@ -109,7 +109,7 @@ protected function checkPermissionStartsWith($permission, $permissions)
if ($checkPermission != $groupPermission
&& starts_with($groupPermission, $checkPermission)
&& $permitted == 1
- ) return TRUE;
+ ) return true;
}
}
}
@@ -124,7 +124,7 @@ protected function checkPermissionEndsWith($permission, $permissions)
if ($checkPermission != $groupPermission
&& ends_with($groupPermission, $checkPermission)
&& $permitted == 1
- ) return TRUE;
+ ) return true;
}
}
}
@@ -139,11 +139,11 @@ protected function checkPermissionMatches($permission, $permissions)
if ($checkMergedPermission != $permission
&& starts_with($permission, $checkMergedPermission)
&& $permitted == 1
- ) return TRUE;
+ ) return true;
}
// Match permissions explicitly.
elseif ($permission == $groupPermission && $permitted == 1) {
- return TRUE;
+ return true;
}
}
}
diff --git a/app/admin/classes/ScheduleItem.php b/app/admin/classes/ScheduleItem.php
index d6d2c0cf1b..331e64dc7b 100644
--- a/app/admin/classes/ScheduleItem.php
+++ b/app/admin/classes/ScheduleItem.php
@@ -91,14 +91,14 @@ public function getFormatted()
protected function timesheet($timesheet)
{
if (is_string($timesheet))
- $timesheet = @json_decode($timesheet, TRUE) ?: [];
+ $timesheet = @json_decode($timesheet, true) ?: [];
$result = [];
foreach (Working_hours_model::$weekDays as $key => $weekDay) {
$result[$key] = array_get($timesheet, $key, [
'day' => $key,
'hours' => [['open' => '00:00', 'close' => '23:59']],
- 'status' => TRUE,
+ 'status' => true,
]);
}
diff --git a/app/admin/classes/ToolbarButton.php b/app/admin/classes/ToolbarButton.php
index 5882bd1c73..6b50d71b14 100644
--- a/app/admin/classes/ToolbarButton.php
+++ b/app/admin/classes/ToolbarButton.php
@@ -75,7 +75,7 @@ public function displayAs($type, $config)
*
* @return array|string
*/
- public function getAttributes($htmlBuild = TRUE)
+ public function getAttributes($htmlBuild = true)
{
$config = array_except($this->config, [
'label', 'context', 'permission', 'partial',
diff --git a/app/admin/classes/User.php b/app/admin/classes/User.php
index 69e6929e35..92a9a5c253 100644
--- a/app/admin/classes/User.php
+++ b/app/admin/classes/User.php
@@ -13,7 +13,7 @@ class User extends Manager
protected $model = 'Admin\Models\Users_model';
- protected $isSuperUser = FALSE;
+ protected $isSuperUser = false;
public function isLogged()
{
@@ -50,7 +50,7 @@ public function extendUserQuery($query)
$query
->with(['staff', 'staff.role', 'staff.groups', 'staff.locations'])
->whereHas('staff', function ($query) {
- $query->where('staff_status', TRUE);
+ $query->where('staff_status', true);
});
}
@@ -83,7 +83,7 @@ public function getStaffEmail()
return $this->staff()->staff_email;
}
- public function register(array $attributes, $activate = FALSE)
+ public function register(array $attributes, $activate = false)
{
$model = $this->createModel();
@@ -92,11 +92,11 @@ public function register(array $attributes, $activate = FALSE)
$staff->staff_name = $attributes['staff_name'];
$staff->language_id = $attributes['language_id'] ?? null;
$staff->staff_role_id = $attributes['staff_role_id'] ?? null;
- $staff->staff_status = $attributes['staff_status'] ?? TRUE;
+ $staff->staff_status = $attributes['staff_status'] ?? true;
$staff->user = [
'username' => $attributes['username'],
'password' => $attributes['password'],
- 'super_user' => $attributes['super_user'] ?? FALSE,
+ 'super_user' => $attributes['super_user'] ?? false,
'activate' => $activate,
];
diff --git a/app/admin/classes/UserPanel.php b/app/admin/classes/UserPanel.php
index a5f79d3d0d..42bb58ab9e 100644
--- a/app/admin/classes/UserPanel.php
+++ b/app/admin/classes/UserPanel.php
@@ -32,6 +32,16 @@ public static function listMenuLinks($menu, $item, $user)
return self::$menuLinksCache;
$items = collect([
+ 'userState' => [
+ 'priority' => 10,
+ 'label' => 'admin::lang.text_set_status',
+ 'iconCssClass' => 'fa fa-circle fa-fw text-'.UserState::forUser()->getStatusColorName(),
+ 'attributes' => [
+ 'data-bs-toggle' => 'modal',
+ 'data-bs-target' => '#editStaffStatusModal',
+ 'role' => 'button',
+ ],
+ ],
'account' => [
'label' => 'admin::lang.text_edit_details',
'iconCssClass' => 'fa fa-user fa-fw',
@@ -71,13 +81,26 @@ public static function listMenuLinks($menu, $item, $user)
})
->filter(function ($item) use ($instance) {
if (!$permission = array_get($item, 'permission'))
- return TRUE;
+ return true;
return $instance->user->hasPermission($permission);
})
->sortBy('priority');
}
+ public static function listLocations($menu, $item, $user)
+ {
+ $instance = self::forUser();
+
+ return AdminLocation::listLocations()->map(function ($location) use ($instance) {
+ return (object)[
+ 'id' => $location->location_id,
+ 'name' => $location->location_name,
+ 'active' => $location->location_id === optional($instance->location)->location_id,
+ ];
+ });
+ }
+
public function getUserName()
{
return $this->user->staff->staff_name;
@@ -107,15 +130,4 @@ public function getRoleName()
{
return optional($this->user->staff->role)->name;
}
-
- public function listLocations()
- {
- return AdminLocation::listLocations()->map(function ($location) {
- return (object)[
- 'id' => $location->location_id,
- 'name' => $location->location_name,
- 'active' => $location->location_id === optional($this->location)->location_id,
- ];
- });
- }
}
diff --git a/app/admin/classes/UserState.php b/app/admin/classes/UserState.php
index f91841e92f..95841be76c 100644
--- a/app/admin/classes/UserState.php
+++ b/app/admin/classes/UserState.php
@@ -5,6 +5,7 @@
use Admin\Facades\AdminAuth;
use Admin\Models\User_preferences_model;
use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
/**
* Admin User State
@@ -25,7 +26,7 @@ class UserState
protected $defaultStateConfig = [
'status' => 1,
- 'isAway' => FALSE,
+ 'isAway' => false,
'awayMessage' => null,
'updatedAt' => null,
'clearAfterMinutes' => 0,
@@ -100,24 +101,34 @@ public static function getClearAfterMinutesDropdownOptions()
];
}
+ public static function clearExpiredStatus()
+ {
+ DB::table(User_preferences_model::make()->getTable())
+ ->where('item', static::USER_PREFERENCE_KEY)
+ ->where('value->status', static::CUSTOM_STATUS)
+ ->where('value->clearAfterMinutes', '!=', 0)
+ ->get()
+ ->each(function ($preference) {
+ $state = json_decode($preference->value);
+ if (!$state->clearAfterMinutes)
+ return true;
+
+ $clearAfterAt = make_carbon($state->updatedAt)
+ ->addMinutes($state->clearAfterMinutes);
+
+ if (Carbon::now()->lessThan($clearAfterAt))
+ return true;
+
+ DB::table(User_preferences_model::make()->getTable())
+ ->where('id', $preference->id)
+ ->update(['value' => json_encode((new static)->defaultStateConfig)]);
+ });
+ }
+
//
//
//
- public function clearExpiredStatus()
- {
- if (!$this->isAway())
- return;
-
- if (!$clearAfterAt = $this->getClearAfterAt())
- return;
-
- if (Carbon::now()->lessThan($clearAfterAt))
- return;
-
- $this->updateState();
- }
-
public function updateState(array $state = [])
{
$state = array_merge($this->defaultStateConfig, $state);
diff --git a/app/admin/controllers/Locations.php b/app/admin/controllers/Locations.php
index ec0b0d4727..71f9f88ac3 100644
--- a/app/admin/controllers/Locations.php
+++ b/app/admin/controllers/Locations.php
@@ -4,6 +4,7 @@
use Admin\Facades\AdminLocation;
use Admin\Facades\AdminMenu;
+use Admin\Models\LocationOption;
use Admin\Models\Locations_model;
use Exception;
use Igniter\Flame\Geolite\Facades\Geocoder;
@@ -128,6 +129,22 @@ public function formExtendQuery($query)
$query->whereIn('location_id', $ids);
}
+ public function formExtendFields($form)
+ {
+ if ($form->model->exists && $form->context != 'create') {
+ $form->addTabFields(LocationOption::getFieldsConfig());
+ }
+ }
+
+ public function getAccordionFields($fields)
+ {
+ return collect($fields)->mapToGroups(function ($field) {
+ $key = array_get($field->config, 'accordion');
+
+ return [$key => $field];
+ })->all();
+ }
+
public function formAfterSave($model)
{
if (post('Location.options.auto_lat_lng')) {
diff --git a/app/admin/controllers/Login.php b/app/admin/controllers/Login.php
index 320660b358..9ea0f26763 100644
--- a/app/admin/controllers/Login.php
+++ b/app/admin/controllers/Login.php
@@ -14,7 +14,7 @@ class Login extends \Admin\Classes\AdminController
{
use ValidatesForm;
- protected $requireAuthentication = FALSE;
+ protected $requireAuthentication = false;
public $bodyClass = 'page-login';
@@ -72,7 +72,7 @@ public function onLogin()
'password' => array_get($data, 'password'),
];
- if (!AdminAuth::authenticate($credentials, TRUE, TRUE))
+ if (!AdminAuth::authenticate($credentials, true, true))
throw new ValidationException(['username' => lang('admin::lang.login.alert_username_not_found')]);
session()->regenerate();
diff --git a/app/admin/controllers/Logout.php b/app/admin/controllers/Logout.php
index 3b99f01a01..eb880fb262 100644
--- a/app/admin/controllers/Logout.php
+++ b/app/admin/controllers/Logout.php
@@ -6,7 +6,7 @@
class Logout extends \Admin\Classes\AdminController
{
- protected $requireAuthentication = FALSE;
+ protected $requireAuthentication = false;
public function index()
{
diff --git a/app/admin/controllers/Menus.php b/app/admin/controllers/Menus.php
index eff70fe013..926bbfcebe 100644
--- a/app/admin/controllers/Menus.php
+++ b/app/admin/controllers/Menus.php
@@ -80,7 +80,7 @@ public function edit_onChooseMenuOption($context, $recordId)
return [
'#notification' => $this->makePartial('flash'),
'#'.$formField->getId('group') => $this->widgets['form']->renderField($formField, [
- 'useContainer' => FALSE,
+ 'useContainer' => false,
]),
];
}
diff --git a/app/admin/controllers/Orders.php b/app/admin/controllers/Orders.php
index 533d974abe..0f3f653fbd 100644
--- a/app/admin/controllers/Orders.php
+++ b/app/admin/controllers/Orders.php
@@ -106,7 +106,7 @@ public function invoice($context, $recordId = null)
$this->vars['model'] = $model;
- $this->suppressLayout = TRUE;
+ $this->suppressLayout = true;
}
public function formExtendQuery($query)
diff --git a/app/admin/controllers/Payments.php b/app/admin/controllers/Payments.php
index 821c8dd927..da8cefa580 100644
--- a/app/admin/controllers/Payments.php
+++ b/app/admin/controllers/Payments.php
@@ -128,7 +128,7 @@ public function formExtendFields($form)
if ($form->context != 'create') {
$field = $form->getField('code');
- $field->disabled = TRUE;
+ $field->disabled = true;
}
}
diff --git a/app/admin/controllers/StaffGroups.php b/app/admin/controllers/StaffGroups.php
index 9e402326e3..623f2492e0 100644
--- a/app/admin/controllers/StaffGroups.php
+++ b/app/admin/controllers/StaffGroups.php
@@ -54,7 +54,7 @@ public function __construct()
{
parent::__construct();
- AdminMenu::setContext('staffs', 'users');
+ AdminMenu::setContext('staffs', 'system');
}
public function formAfterSave()
diff --git a/app/admin/controllers/StaffRoles.php b/app/admin/controllers/StaffRoles.php
index fc6defc0d3..6425e6ffd0 100644
--- a/app/admin/controllers/StaffRoles.php
+++ b/app/admin/controllers/StaffRoles.php
@@ -53,6 +53,6 @@ public function __construct()
{
parent::__construct();
- AdminMenu::setContext('staffs', 'users');
+ AdminMenu::setContext('staffs', 'system');
}
}
diff --git a/app/admin/controllers/Staffs.php b/app/admin/controllers/Staffs.php
index 5f24f56b9c..0b9aac4596 100644
--- a/app/admin/controllers/Staffs.php
+++ b/app/admin/controllers/Staffs.php
@@ -60,16 +60,20 @@ public function __construct()
$this->requiredPermissions = null;
}
- AdminMenu::setContext('staffs', 'users');
+ AdminMenu::setContext('staffs', 'system');
}
public function account()
{
+ $this->asExtension('LocationAwareController')->setConfig(['applyScopeOnFormQuery' => false]);
+
return $this->asExtension('FormController')->edit('account', $this->getUser()->getKey());
}
public function account_onSave()
{
+ $this->asExtension('LocationAwareController')->setConfig(['applyScopeOnFormQuery' => false]);
+
$result = $this->asExtension('FormController')->edit_onSave('account', $this->currentUser->user_id);
$usernameChanged = $this->currentUser->username != post('Staff[user][username]');
@@ -77,7 +81,7 @@ public function account_onSave()
$languageChanged = $this->currentUser->language != post('Staff[language_id]');
if ($usernameChanged || $passwordChanged || $languageChanged) {
$this->currentUser->reload()->reloadRelations();
- AdminAuth::login($this->currentUser, TRUE);
+ AdminAuth::login($this->currentUser, true);
}
return $result;
diff --git a/app/admin/dashboardwidgets/Charts.php b/app/admin/dashboardwidgets/Charts.php
index c51704edbe..b410d96fc8 100644
--- a/app/admin/dashboardwidgets/Charts.php
+++ b/app/admin/dashboardwidgets/Charts.php
@@ -23,7 +23,7 @@ class Charts extends BaseDashboardWidget
protected $datasetOptions = [
'label' => null,
'data' => [],
- 'fill' => TRUE,
+ 'fill' => true,
'backgroundColor' => null,
'borderColor' => null,
];
diff --git a/app/admin/dashboardwidgets/charts/assets/js/charts.js b/app/admin/dashboardwidgets/charts/assets/js/charts.js
index 3a4329672d..ba00e768f1 100644
--- a/app/admin/dashboardwidgets/charts/assets/js/charts.js
+++ b/app/admin/dashboardwidgets/charts/assets/js/charts.js
@@ -32,17 +32,17 @@
options: {
maintainAspectRatio: false,
scales: {
- yAxes: [{
+ y: {
+ beginAtZero: true,
ticks: {
- beginAtZero: true,
callback: function (value) {
if (value % 1 === 0) {
return value;
}
}
}
- }],
- xAxes: [{
+ },
+ x: {
type: 'time',
time: {
unit: 'day'
@@ -50,7 +50,7 @@
gridLines: {
display: false
}
- }]
+ }
}
}
}
@@ -153,4 +153,4 @@
$(document).render(function () {
$('[data-control="chart"]').chartControl()
})
-}(window.jQuery)
\ No newline at end of file
+}(window.jQuery)
diff --git a/app/admin/dashboardwidgets/charts/assets/vendor/chartjs/Chart.min.js b/app/admin/dashboardwidgets/charts/assets/vendor/chartjs/Chart.min.js
index 653e7cfa93..30fe92435b 100644
--- a/app/admin/dashboardwidgets/charts/assets/vendor/chartjs/Chart.min.js
+++ b/app/admin/dashboardwidgets/charts/assets/vendor/chartjs/Chart.min.js
@@ -1,10 +1 @@
-/*!
- * Chart.js
- * http://chartjs.org/
- * Version: 2.7.3
- *
- * Copyright 2018 Chart.js Contributors
- * Released under the MIT license
- * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
- */
-!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function o(r,s,l){function u(e,t){if(!s[e]){if(!r[e]){var i="function"==typeof require&&require;if(!t&&i)return i(e,!0);if(d)return d(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[e]={exports:{}};r[e][0].call(a.exports,function(t){return u(r[e][1][t]||t)},a,a.exports,o,r,s,l)}return s[e].exports}for(var d="function"==typeof require&&require,t=0;t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(l){var u=l.data;return u.labels.length&&u.datasets.length?u.labels.map(function(t,e){var i=l.getDatasetMeta(0),n=u.datasets[0],a=i.data[e],o=a&&a.custom||{},r=A.valueAtIndexOrDefault,s=l.options.elements.arc;return{text:t,fillStyle:o.backgroundColor?o.backgroundColor:r(n.backgroundColor,e,s.backgroundColor),strokeStyle:o.borderColor?o.borderColor:r(n.borderColor,e,s.borderColor),lineWidth:o.borderWidth?o.borderWidth:r(n.borderWidth,e,s.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:f<-Math.PI?1:0))+h,p=Math.cos(f),m=Math.sin(f),v=Math.cos(g),b=Math.sin(g),x=f<=0&&0<=g||f<=2*Math.PI&&2*Math.PI<=g,y=f<=.5*Math.PI&&.5*Math.PI<=g||f<=2.5*Math.PI&&2.5*Math.PI<=g,k=f<=-Math.PI&&-Math.PI<=g||f<=Math.PI&&Math.PI<=g,M=f<=.5*-Math.PI&&.5*-Math.PI<=g||f<=1.5*Math.PI&&1.5*Math.PI<=g,w=c/100,C=k?-1:Math.min(p*(p<0?1:w),v*(v<0?1:w)),S=M?-1:Math.min(m*(m<0?1:w),b*(b<0?1:w)),_=x?1:Math.max(p*(0');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(s){var l=s.data;return l.labels.length&&l.datasets.length?l.labels.map(function(t,e){var i=s.getDatasetMeta(0),n=l.datasets[0],a=i.data[e].custom||{},o=k.valueAtIndexOrDefault,r=s.options.elements.arc;return{text:t,fillStyle:a.backgroundColor?a.backgroundColor:o(n.backgroundColor,e,r.backgroundColor),strokeStyle:a.borderColor?a.borderColor:o(n.borderColor,e,r.borderColor),lineWidth:a.borderWidth?a.borderWidth:o(n.borderWidth,e,r.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}}},{26:26,46:46}],24:[function(t,e,i){"use strict";var s=t(22),l=t(23),c=t(26),h=t(46),a=t(29),o=t(31),f=t(49),g=t(32),p=t(34),n=t(36);e.exports=function(u){function d(t){return"top"===t||"bottom"===t}u.types={},u.instances={},u.controllers={},h.extend(u.prototype,{construct:function(t,e){var i,n,a=this;(n=(i=(i=e)||{}).data=i.data||{}).datasets=n.datasets||[],n.labels=n.labels||[],i.options=h.configMerge(c.global,c[i.type],i.options||{}),e=i;var o=f.acquireContext(t,e),r=o&&o.canvas,s=r&&r.height,l=r&&r.width;a.id=h.uid(),a.ctx=o,a.canvas=r,a.config=e,a.width=l,a.height=s,a.aspectRatio=s?l/s:null,a.options=e.options,a._bufferedRender=!1,(a.chart=a).controller=a,u.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),o&&r?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return g.notify(t,"beforeInit"),h.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),g.notify(t,"afterInit"),t},clear:function(){return h.canvas.clear(this),this},stop:function(){return l.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(h.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:h.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",h.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};g.notify(e,"resize",[s]),e.options.onResize&&e.options.onResize(e,s),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;h.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),h.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var r=this,t=r.options,s=r.scales||{},e=[],l=Object.keys(s).reduce(function(t,e){return t[e]=!1,t},{});t.scales&&(e=e.concat((t.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(t.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),t.scale&&e.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),h.each(e,function(t){var e=t.options,i=e.id,n=h.valueOrDefault(e.type,t.dtype);d(e.position)!==d(t.dposition)&&(e.position=t.dposition),l[i]=!0;var a=null;if(i in s&&s[i].type===n)(a=s[i]).options=e,a.ctx=r.ctx,a.chart=r;else{var o=p.getScaleConstructor(n);if(!o)return;a=new o({id:i,type:n,options:e,ctx:r.ctx,chart:r}),s[a.id]=a}a.mergeTicksOptions(),t.isDefault&&(r.scale=a)}),h.each(l,function(t,e){t||delete s[e]}),r.scales=s,p.addScalesToLayout(this)},buildOrUpdateControllers:function(){var o=this,r=[],s=[];return h.each(o.data.datasets,function(t,e){var i=o.getDatasetMeta(e),n=t.type||o.config.type;if(i.type&&i.type!==n&&(o.destroyDatasetMeta(e),i=o.getDatasetMeta(e)),i.type=n,r.push(i.type),i.controller)i.controller.updateIndex(e),i.controller.linkScales();else{var a=u.controllers[i.type];if(void 0===a)throw new Error('"'+i.type+'" is not a chart type.');i.controller=new a(o,e),s.push(i.controller)}},o),s},resetElements:function(){var i=this;h.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.reset()},i)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,h.each(e.scales,function(t){o.removeBox(e,t)}),i=h.configMerge(u.defaults.global,u.defaults[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),g._invalidate(n),!1!==g.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();h.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&h.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],g.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==g.notify(this,"beforeLayout")&&(o.update(this,this.width,this.height),g.notify(this,"afterScaleUpdate"),g.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==g.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?g.merge(e[t][a],[l.getScaleDefaults(o),r]):g.merge(e[t][a],r)}else g._merger(t,e,i,n)}})},g.where=function(t,e){if(g.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return g.each(t,function(t){e(t)&&i.push(t)}),i},g.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},g.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},g.niceNum=function(t,e){var i=Math.floor(g.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},g.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},g.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;n=s&&0i.length){for(var l=0;le&&(e=t.length)}),e},g.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},g.getHoverColor=function(t){return t instanceof CanvasPattern?t:g.color(t).saturate(.5).darken(.1).rgbString()}}},{26:26,3:3,34:34,46:46}],29:[function(t,e,i){"use strict";var n=t(46);function s(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function l(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;nt.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=k(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=n.display,l=t.isHorizontal(),u=w(a),d=n.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?d:0,e.height=l?s&&r.drawTicks?d:0:t.maxHeight,o.display&&s){var c=C(o)+H.options.toPadding(o.padding).height;l?e.height+=c:e.width+=c}if(a.display&&s){var h=H.longestText(t.ctx,u.font,i,t.longestTextCache),f=H.numberOfLabelLines(i),g=.5*u.size,p=t.options.ticks.padding;if(l){t.longestLabelWidth=h;var m=H.toRadians(t.labelRotation),v=Math.cos(m),b=Math.sin(m)*h+u.size*f+g*(f-1)+g;e.height=Math.min(t.maxHeight,e.height+b+p),t.ctx.font=u.font;var x=M(t.ctx,i[0],u.font),y=M(t.ctx,i[i.length-1],u.font);0!==t.labelRotation?(t.paddingLeft="bottom"===n.position?v*x+3:v*g+3,t.paddingRight="bottom"===n.position?v*g+3:v*y+3):(t.paddingLeft=x/2+3,t.paddingRight=y/2+3)}else a.mirror?h=0:h+=p+g,e.width=Math.min(t.maxWidth,e.width+h),t.paddingTop=u.size/2,t.paddingBottom=u.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(H.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:H.noop,getPixelForValue:H.noop,getValueForPixel:H.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:0o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+s.autoSkipPadding)*l/(o.width-(o.paddingLeft+o.paddingRight)))),a&&al.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;n="center"===c?(i=function(t){return t<=h},function(t){return h=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,I=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;n+=s*u,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*d,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*c,n+=l?(l-1)*e.footerSpacing:0;var h=0,f=function(t){a=Math.max(a,i.measureText(t).width+h)};return i.font=R.fontString(u,e._titleFontStyle,e._titleFontFamily),R.each(e.title,f),i.font=R.fontString(d,e._bodyFontStyle,e._bodyFontFamily),R.each(e.beforeBody.concat(e.afterBody),f),h=e.displayColors?d+2:0,R.each(o,function(t){R.each(t.before,f),R.each(t.lines,f),R.each(t.after,f)}),h=0,i.font=R.fontString(c,e._footerFontStyle,e._footerFontFamily),R.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,C)),n=C,a=I,o=D,r=k._chart,s=n.x,l=n.y,u=n.caretSize,d=n.caretPadding,c=n.cornerRadius,h=o.xAlign,f=o.yAlign,g=u+d,p=c+d,"right"===h?s-=a.width:"center"===h&&((s-=a.width/2)+a.width>r.width&&(s=r.width-a.width),s<0&&(s=0)),"top"===f?l+=g:l-="bottom"===f?a.height+g:a.height/2,"center"===f?"left"===h?s+=g:"right"===h&&(s-=g):"left"===h?s-=p:"right"===h&&(s+=p),P={x:s,y:l}}else C.opacity=0;return C.xAlign=D.xAlign,C.yAlign=D.yAlign,C.x=P.x,C.y=P.y,C.width=I.width,C.height=I.height,C.caretX=A.x,C.caretY=A.y,k._model=C,t&&M.custom&&M.custom.call(k,C),k},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,l="left"===c?(a=(n=f)-u,o=n,r=s+u,s-u):(a=(n=f+p)+u,o=n,r=s-u,s+u);else if(o=(n="left"===c?(a=f+d+u)-u:"right"===c?(a=f+p-d-u)-u:(a=i.caretX)-u,a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i,n){var a=e.title;if(a.length){i.textAlign=e._titleAlign,i.textBaseline="top";var o,r,s=e.titleFontSize,l=e.titleSpacing;for(i.fillStyle=h(e.titleFontColor,n),i.font=R.fontString(s,e._titleFontStyle,e._titleFontFamily),o=0,r=a.length;o=i.innerRadius&&o<=i.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,i){"use strict";var n=t(26),a=t(27),d=t(46),c=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:c.defaultColor,borderWidth:3,borderColor:c.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=c.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||l.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||l.borderDash),o.lineDashOffset=a.borderDashOffset||l.borderDashOffset,o.lineJoin=a.borderJoinStyle||l.borderJoinStyle,o.lineWidth=a.borderWidth||l.borderWidth,o.strokeStyle=a.borderColor||c.defaultColor,o.beginPath(),u=-1,t=0;t=t.left&&1.01*t.right>=i.x&&i.y>=t.top&&1.01*t.bottom>=i.y)&&(n.strokeStyle=e.borderColor||c,n.lineWidth=d.valueOrDefault(e.borderWidth,u.global.elements.point.borderWidth),n.fillStyle=e.backgroundColor||c,d.canvas.drawPoint(n,a,r,s,l,o))}})},{26:26,27:27,46:46}],40:[function(t,e,i){"use strict";var n=t(26),a=t(27);function l(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(l(t)){var r=o.width/2;e=o.x-r,i=o.x+r,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var s=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-s,a=o.y+s}return{left:e,top:n,right:i,bottom:a}}n._set("global",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,o,r,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(r=l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=t=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return l(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return e=l(this)?(t=i.x,(i.y+i.base)/2):(t=(i.x+i.base)/2,i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,i){"use strict";var n=t(43);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2-1e-7,n/2-1e-7);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.arcTo(e+n,i,e+n,i+r,r),t.lineTo(e+n,i+a-r),t.arcTo(e+n,i+a,e+n-r,i+a,r),t.lineTo(e+r,i+a),t.arcTo(e,i+a,e,i+a-r,r),t.lineTo(e,i+r),t.arcTo(e,i,e+r,i,r),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,u,d,c;if(o=o||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.save(),t.translate(n,a),t.rotate(o*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,i,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":c=1/Math.SQRT2*i,t.rect(-c,-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=-h,g=-h,p=Math.SQRT2*i;this.roundedRect(t,f,g,p,p,.425*i);break;case"rectRot":c=1/Math.SQRT2*i,t.moveTo(-c,0),t.lineTo(0,c),t.lineTo(c,0),t.lineTo(0,-c),t.closePath();break;case"cross":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0);break;case"crossRot":l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-i,0),t.lineTo(i,0);break;case"dash":t.moveTo(0,0),t.lineTo(i,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments)}},{43:43}],43:[function(t,e,i){"use strict";var n,d={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return d.valueOrDefault(d.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(d.isArray(t))if(o=t.length,n)for(a=o-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;a