aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/core/assets/userfrosting
diff options
context:
space:
mode:
authormarvin-borner@live.com2018-04-16 21:09:05 +0200
committermarvin-borner@live.com2018-04-16 21:09:05 +0200
commitcf14306c2b3f82a81f8d56669a71633b4d4b5fce (patch)
tree86700651aa180026e89a66064b0364b1e4346f3f /main/app/sprinkles/core/assets/userfrosting
parent619b01b3615458c4ed78bfaeabb6b1a47cc8ad8b (diff)
Main merge to user management system - files are now at /main/public/
Diffstat (limited to 'main/app/sprinkles/core/assets/userfrosting')
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css1770
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/AdminLTE.css5894
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css61
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css23
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/uf-collection.css15
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/uf-jqueryvalidation.css10
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/css/userfrosting.css204
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/README.md7
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-144x144.pngbin0 -> 20991 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-192x192.pngbin0 -> 29935 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-256x256.pngbin0 -> 42828 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-36x36.pngbin0 -> 3150 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-384x384.pngbin0 -> 69092 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-48x48.pngbin0 -> 4736 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-512x512.pngbin0 -> 96438 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-72x72.pngbin0 -> 8367 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-96x96.pngbin0 -> 12470 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114-precomposed.pngbin0 -> 14098 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114.pngbin0 -> 12666 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120-precomposed.pngbin0 -> 15188 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120.pngbin0 -> 13650 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144-precomposed.pngbin0 -> 19338 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144.pngbin0 -> 17393 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152-precomposed.pngbin0 -> 20475 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152.pngbin0 -> 18420 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180-precomposed.pngbin0 -> 25283 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180.pngbin0 -> 22957 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57-precomposed.pngbin0 -> 5279 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57.pngbin0 -> 4660 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60-precomposed.pngbin0 -> 5706 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60.pngbin0 -> 5017 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72-precomposed.pngbin0 -> 7498 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72.pngbin0 -> 6615 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76-precomposed.pngbin0 -> 8080 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76.pngbin0 -> 7180 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-precomposed.pngbin0 -> 25283 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon.pngbin0 -> 22957 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/favicon-16x16.pngbin0 -> 1374 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/favicon-32x32.pngbin0 -> 2678 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/favicon.icobin0 -> 15086 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml12
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/manifest.json51
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/mstile-144x144.pngbin0 -> 20296 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/mstile-150x150.pngbin0 -> 18368 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x150.pngbin0 -> 19511 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x310.pngbin0 -> 46338 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/mstile-70x70.pngbin0 -> 12070 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg246
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/images/cupcake.pngbin0 -> 19738 bytes
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/images/logo.svg514
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js117
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js763
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/attrchange.js124
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js57
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js119
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/query-string.js65
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js271
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-alerts.js289
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js13
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-collection.js345
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-copy.js50
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-form.js297
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-init.js26
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js49
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-modal.js192
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-table.js704
-rwxr-xr-xmain/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js53
67 files changed, 12341 insertions, 0 deletions
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css
new file mode 100755
index 0000000..53577c4
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css
@@ -0,0 +1,1770 @@
+/*
+ * Skin: Blue
+ * ----------
+ */
+.skin-blue .main-header .navbar {
+ background-color: #3c8dbc;
+}
+.skin-blue .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-blue .main-header .navbar .nav > li > a:hover,
+.skin-blue .main-header .navbar .nav > li > a:active,
+.skin-blue .main-header .navbar .nav > li > a:focus,
+.skin-blue .main-header .navbar .nav .open > a,
+.skin-blue .main-header .navbar .nav .open > a:hover,
+.skin-blue .main-header .navbar .nav .open > a:focus,
+.skin-blue .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-blue .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-blue .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-blue .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-blue .main-header .navbar .sidebar-toggle:hover {
+ background-color: #367fa9;
+}
+@media (max-width: 767px) {
+ .skin-blue .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-blue .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-blue .main-header .navbar .dropdown-menu li a:hover {
+ background: #367fa9;
+ }
+}
+.skin-blue .main-header .logo {
+ background-color: #367fa9;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-blue .main-header .logo:hover {
+ background-color: #357ca5;
+}
+.skin-blue .main-header li.user-header {
+ background-color: #3c8dbc;
+}
+.skin-blue .content-header {
+ background: transparent;
+}
+.skin-blue .wrapper,
+.skin-blue .main-sidebar,
+.skin-blue .left-side {
+ background-color: #222d32;
+}
+.skin-blue .user-panel > .info,
+.skin-blue .user-panel > .info > a {
+ color: #fff;
+}
+.skin-blue .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-blue .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-blue .sidebar-menu > li:hover > a,
+.skin-blue .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #3c8dbc;
+}
+.skin-blue .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-blue .sidebar a {
+ color: #b8c7ce;
+}
+.skin-blue .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-blue .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-blue .treeview-menu > li.active > a,
+.skin-blue .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-blue .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-blue .sidebar-form input[type="text"],
+.skin-blue .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-blue .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-blue .sidebar-form input[type="text"]:focus,
+.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-blue .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+.skin-blue.layout-top-nav .main-header > .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-blue.layout-top-nav .main-header > .logo:hover {
+ background-color: #3b8ab8;
+}
+/*
+ * Skin: Blue
+ * ----------
+ */
+.skin-blue-light .main-header .navbar {
+ background-color: #3c8dbc;
+}
+.skin-blue-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-blue-light .main-header .navbar .nav > li > a:hover,
+.skin-blue-light .main-header .navbar .nav > li > a:active,
+.skin-blue-light .main-header .navbar .nav > li > a:focus,
+.skin-blue-light .main-header .navbar .nav .open > a,
+.skin-blue-light .main-header .navbar .nav .open > a:hover,
+.skin-blue-light .main-header .navbar .nav .open > a:focus,
+.skin-blue-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-blue-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-blue-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #367fa9;
+}
+@media (max-width: 767px) {
+ .skin-blue-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-blue-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #367fa9;
+ }
+}
+.skin-blue-light .main-header .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-blue-light .main-header .logo:hover {
+ background-color: #3b8ab8;
+}
+.skin-blue-light .main-header li.user-header {
+ background-color: #3c8dbc;
+}
+.skin-blue-light .content-header {
+ background: transparent;
+}
+.skin-blue-light .wrapper,
+.skin-blue-light .main-sidebar,
+.skin-blue-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-blue-light .content-wrapper,
+.skin-blue-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-blue-light .user-panel > .info,
+.skin-blue-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-blue-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-blue-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-blue-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-blue-light .sidebar-menu > li:hover > a,
+.skin-blue-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-blue-light .sidebar-menu > li.active {
+ border-left-color: #3c8dbc;
+}
+.skin-blue-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-blue-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-blue-light .sidebar a {
+ color: #444444;
+}
+.skin-blue-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-blue-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-blue-light .treeview-menu > li.active > a,
+.skin-blue-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-blue-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-blue-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-blue-light .sidebar-form input[type="text"],
+.skin-blue-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-blue-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-blue-light .sidebar-form input[type="text"]:focus,
+.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-blue-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+.skin-blue-light .main-footer {
+ border-top-color: #d2d6de;
+}
+.skin-blue.layout-top-nav .main-header > .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-blue.layout-top-nav .main-header > .logo:hover {
+ background-color: #3b8ab8;
+}
+/*
+ * Skin: Black
+ * -----------
+ */
+/* skin-black navbar */
+.skin-black .main-header {
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+}
+.skin-black .main-header .navbar-toggle {
+ color: #333;
+}
+.skin-black .main-header .navbar-brand {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+.skin-black .main-header .navbar {
+ background-color: #ffffff;
+}
+.skin-black .main-header .navbar .nav > li > a {
+ color: #333333;
+}
+.skin-black .main-header .navbar .nav > li > a:hover,
+.skin-black .main-header .navbar .nav > li > a:active,
+.skin-black .main-header .navbar .nav > li > a:focus,
+.skin-black .main-header .navbar .nav .open > a,
+.skin-black .main-header .navbar .nav .open > a:hover,
+.skin-black .main-header .navbar .nav .open > a:focus,
+.skin-black .main-header .navbar .nav > .active > a {
+ background: #ffffff;
+ color: #999999;
+}
+.skin-black .main-header .navbar .sidebar-toggle {
+ color: #333333;
+}
+.skin-black .main-header .navbar .sidebar-toggle:hover {
+ color: #999999;
+ background: #ffffff;
+}
+.skin-black .main-header .navbar > .sidebar-toggle {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+.skin-black .main-header .navbar .navbar-nav > li > a {
+ border-right: 1px solid #eee;
+}
+.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
+.skin-black .main-header .navbar .navbar-right > li > a {
+ border-left: 1px solid #eee;
+ border-right-width: 0;
+}
+.skin-black .main-header > .logo {
+ background-color: #ffffff;
+ color: #333333;
+ border-bottom: 0 solid transparent;
+ border-right: 1px solid #eee;
+}
+.skin-black .main-header > .logo:hover {
+ background-color: #fcfcfc;
+}
+@media (max-width: 767px) {
+ .skin-black .main-header > .logo {
+ background-color: #222222;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+ border-right: none;
+ }
+ .skin-black .main-header > .logo:hover {
+ background-color: #1f1f1f;
+ }
+}
+.skin-black .main-header li.user-header {
+ background-color: #222;
+}
+.skin-black .content-header {
+ background: transparent;
+ box-shadow: none;
+}
+.skin-black .wrapper,
+.skin-black .main-sidebar,
+.skin-black .left-side {
+ background-color: #222d32;
+}
+.skin-black .user-panel > .info,
+.skin-black .user-panel > .info > a {
+ color: #fff;
+}
+.skin-black .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-black .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-black .sidebar-menu > li:hover > a,
+.skin-black .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #ffffff;
+}
+.skin-black .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-black .sidebar a {
+ color: #b8c7ce;
+}
+.skin-black .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-black .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-black .treeview-menu > li.active > a,
+.skin-black .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-black .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-black .sidebar-form input[type="text"],
+.skin-black .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-black .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-black .sidebar-form input[type="text"]:focus,
+.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-black .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+.skin-black .pace .pace-progress {
+ background: #222;
+}
+.skin-black .pace .pace-activity {
+ border-top-color: #222;
+ border-left-color: #222;
+}
+/*
+ * Skin: Black
+ * -----------
+ */
+/* skin-black navbar */
+.skin-black-light .main-header {
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+}
+.skin-black-light .main-header .navbar-toggle {
+ color: #333;
+}
+.skin-black-light .main-header .navbar-brand {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+.skin-black-light .main-header .navbar {
+ background-color: #ffffff;
+}
+.skin-black-light .main-header .navbar .nav > li > a {
+ color: #333333;
+}
+.skin-black-light .main-header .navbar .nav > li > a:hover,
+.skin-black-light .main-header .navbar .nav > li > a:active,
+.skin-black-light .main-header .navbar .nav > li > a:focus,
+.skin-black-light .main-header .navbar .nav .open > a,
+.skin-black-light .main-header .navbar .nav .open > a:hover,
+.skin-black-light .main-header .navbar .nav .open > a:focus,
+.skin-black-light .main-header .navbar .nav > .active > a {
+ background: #ffffff;
+ color: #999999;
+}
+.skin-black-light .main-header .navbar .sidebar-toggle {
+ color: #333333;
+}
+.skin-black-light .main-header .navbar .sidebar-toggle:hover {
+ color: #999999;
+ background: #ffffff;
+}
+.skin-black-light .main-header .navbar > .sidebar-toggle {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+.skin-black-light .main-header .navbar .navbar-nav > li > a {
+ border-right: 1px solid #eee;
+}
+.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
+.skin-black-light .main-header .navbar .navbar-right > li > a {
+ border-left: 1px solid #eee;
+ border-right-width: 0;
+}
+.skin-black-light .main-header > .logo {
+ background-color: #ffffff;
+ color: #333333;
+ border-bottom: 0 solid transparent;
+ border-right: 1px solid #eee;
+}
+.skin-black-light .main-header > .logo:hover {
+ background-color: #fcfcfc;
+}
+@media (max-width: 767px) {
+ .skin-black-light .main-header > .logo {
+ background-color: #222222;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+ border-right: none;
+ }
+ .skin-black-light .main-header > .logo:hover {
+ background-color: #1f1f1f;
+ }
+}
+.skin-black-light .main-header li.user-header {
+ background-color: #222;
+}
+.skin-black-light .content-header {
+ background: transparent;
+ box-shadow: none;
+}
+.skin-black-light .wrapper,
+.skin-black-light .main-sidebar,
+.skin-black-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-black-light .content-wrapper,
+.skin-black-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-black-light .user-panel > .info,
+.skin-black-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-black-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-black-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-black-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-black-light .sidebar-menu > li:hover > a,
+.skin-black-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-black-light .sidebar-menu > li.active {
+ border-left-color: #ffffff;
+}
+.skin-black-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-black-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-black-light .sidebar a {
+ color: #444444;
+}
+.skin-black-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-black-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-black-light .treeview-menu > li.active > a,
+.skin-black-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-black-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-black-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-black-light .sidebar-form input[type="text"],
+.skin-black-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-black-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-black-light .sidebar-form input[type="text"]:focus,
+.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-black-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+/*
+ * Skin: Green
+ * -----------
+ */
+.skin-green .main-header .navbar {
+ background-color: #00a65a;
+}
+.skin-green .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-green .main-header .navbar .nav > li > a:hover,
+.skin-green .main-header .navbar .nav > li > a:active,
+.skin-green .main-header .navbar .nav > li > a:focus,
+.skin-green .main-header .navbar .nav .open > a,
+.skin-green .main-header .navbar .nav .open > a:hover,
+.skin-green .main-header .navbar .nav .open > a:focus,
+.skin-green .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-green .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-green .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-green .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-green .main-header .navbar .sidebar-toggle:hover {
+ background-color: #008d4c;
+}
+@media (max-width: 767px) {
+ .skin-green .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-green .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-green .main-header .navbar .dropdown-menu li a:hover {
+ background: #008d4c;
+ }
+}
+.skin-green .main-header .logo {
+ background-color: #008d4c;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-green .main-header .logo:hover {
+ background-color: #008749;
+}
+.skin-green .main-header li.user-header {
+ background-color: #00a65a;
+}
+.skin-green .content-header {
+ background: transparent;
+}
+.skin-green .wrapper,
+.skin-green .main-sidebar,
+.skin-green .left-side {
+ background-color: #222d32;
+}
+.skin-green .user-panel > .info,
+.skin-green .user-panel > .info > a {
+ color: #fff;
+}
+.skin-green .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-green .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-green .sidebar-menu > li:hover > a,
+.skin-green .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #00a65a;
+}
+.skin-green .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-green .sidebar a {
+ color: #b8c7ce;
+}
+.skin-green .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-green .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-green .treeview-menu > li.active > a,
+.skin-green .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-green .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-green .sidebar-form input[type="text"],
+.skin-green .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-green .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-green .sidebar-form input[type="text"]:focus,
+.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-green .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+/*
+ * Skin: Green
+ * -----------
+ */
+.skin-green-light .main-header .navbar {
+ background-color: #00a65a;
+}
+.skin-green-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-green-light .main-header .navbar .nav > li > a:hover,
+.skin-green-light .main-header .navbar .nav > li > a:active,
+.skin-green-light .main-header .navbar .nav > li > a:focus,
+.skin-green-light .main-header .navbar .nav .open > a,
+.skin-green-light .main-header .navbar .nav .open > a:hover,
+.skin-green-light .main-header .navbar .nav .open > a:focus,
+.skin-green-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-green-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-green-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-green-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-green-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #008d4c;
+}
+@media (max-width: 767px) {
+ .skin-green-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-green-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-green-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #008d4c;
+ }
+}
+.skin-green-light .main-header .logo {
+ background-color: #00a65a;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-green-light .main-header .logo:hover {
+ background-color: #00a157;
+}
+.skin-green-light .main-header li.user-header {
+ background-color: #00a65a;
+}
+.skin-green-light .content-header {
+ background: transparent;
+}
+.skin-green-light .wrapper,
+.skin-green-light .main-sidebar,
+.skin-green-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-green-light .content-wrapper,
+.skin-green-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-green-light .user-panel > .info,
+.skin-green-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-green-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-green-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-green-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-green-light .sidebar-menu > li:hover > a,
+.skin-green-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-green-light .sidebar-menu > li.active {
+ border-left-color: #00a65a;
+}
+.skin-green-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-green-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-green-light .sidebar a {
+ color: #444444;
+}
+.skin-green-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-green-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-green-light .treeview-menu > li.active > a,
+.skin-green-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-green-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-green-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-green-light .sidebar-form input[type="text"],
+.skin-green-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-green-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-green-light .sidebar-form input[type="text"]:focus,
+.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-green-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+/*
+ * Skin: Red
+ * ---------
+ */
+.skin-red .main-header .navbar {
+ background-color: #dd4b39;
+}
+.skin-red .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-red .main-header .navbar .nav > li > a:hover,
+.skin-red .main-header .navbar .nav > li > a:active,
+.skin-red .main-header .navbar .nav > li > a:focus,
+.skin-red .main-header .navbar .nav .open > a,
+.skin-red .main-header .navbar .nav .open > a:hover,
+.skin-red .main-header .navbar .nav .open > a:focus,
+.skin-red .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-red .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-red .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-red .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-red .main-header .navbar .sidebar-toggle:hover {
+ background-color: #d73925;
+}
+@media (max-width: 767px) {
+ .skin-red .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-red .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-red .main-header .navbar .dropdown-menu li a:hover {
+ background: #d73925;
+ }
+}
+.skin-red .main-header .logo {
+ background-color: #d73925;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-red .main-header .logo:hover {
+ background-color: #d33724;
+}
+.skin-red .main-header li.user-header {
+ background-color: #dd4b39;
+}
+.skin-red .content-header {
+ background: transparent;
+}
+.skin-red .wrapper,
+.skin-red .main-sidebar,
+.skin-red .left-side {
+ background-color: #222d32;
+}
+.skin-red .user-panel > .info,
+.skin-red .user-panel > .info > a {
+ color: #fff;
+}
+.skin-red .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-red .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-red .sidebar-menu > li:hover > a,
+.skin-red .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #dd4b39;
+}
+.skin-red .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-red .sidebar a {
+ color: #b8c7ce;
+}
+.skin-red .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-red .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-red .treeview-menu > li.active > a,
+.skin-red .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-red .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-red .sidebar-form input[type="text"],
+.skin-red .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-red .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-red .sidebar-form input[type="text"]:focus,
+.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-red .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+/*
+ * Skin: Red
+ * ---------
+ */
+.skin-red-light .main-header .navbar {
+ background-color: #dd4b39;
+}
+.skin-red-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-red-light .main-header .navbar .nav > li > a:hover,
+.skin-red-light .main-header .navbar .nav > li > a:active,
+.skin-red-light .main-header .navbar .nav > li > a:focus,
+.skin-red-light .main-header .navbar .nav .open > a,
+.skin-red-light .main-header .navbar .nav .open > a:hover,
+.skin-red-light .main-header .navbar .nav .open > a:focus,
+.skin-red-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-red-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-red-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-red-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-red-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #d73925;
+}
+@media (max-width: 767px) {
+ .skin-red-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-red-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-red-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #d73925;
+ }
+}
+.skin-red-light .main-header .logo {
+ background-color: #dd4b39;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-red-light .main-header .logo:hover {
+ background-color: #dc4735;
+}
+.skin-red-light .main-header li.user-header {
+ background-color: #dd4b39;
+}
+.skin-red-light .content-header {
+ background: transparent;
+}
+.skin-red-light .wrapper,
+.skin-red-light .main-sidebar,
+.skin-red-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-red-light .content-wrapper,
+.skin-red-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-red-light .user-panel > .info,
+.skin-red-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-red-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-red-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-red-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-red-light .sidebar-menu > li:hover > a,
+.skin-red-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-red-light .sidebar-menu > li.active {
+ border-left-color: #dd4b39;
+}
+.skin-red-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-red-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-red-light .sidebar a {
+ color: #444444;
+}
+.skin-red-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-red-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-red-light .treeview-menu > li.active > a,
+.skin-red-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-red-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-red-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-red-light .sidebar-form input[type="text"],
+.skin-red-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-red-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-red-light .sidebar-form input[type="text"]:focus,
+.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-red-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+/*
+ * Skin: Yellow
+ * ------------
+ */
+.skin-yellow .main-header .navbar {
+ background-color: #f39c12;
+}
+.skin-yellow .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-yellow .main-header .navbar .nav > li > a:hover,
+.skin-yellow .main-header .navbar .nav > li > a:active,
+.skin-yellow .main-header .navbar .nav > li > a:focus,
+.skin-yellow .main-header .navbar .nav .open > a,
+.skin-yellow .main-header .navbar .nav .open > a:hover,
+.skin-yellow .main-header .navbar .nav .open > a:focus,
+.skin-yellow .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-yellow .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-yellow .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-yellow .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-yellow .main-header .navbar .sidebar-toggle:hover {
+ background-color: #e08e0b;
+}
+@media (max-width: 767px) {
+ .skin-yellow .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-yellow .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-yellow .main-header .navbar .dropdown-menu li a:hover {
+ background: #e08e0b;
+ }
+}
+.skin-yellow .main-header .logo {
+ background-color: #e08e0b;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-yellow .main-header .logo:hover {
+ background-color: #db8b0b;
+}
+.skin-yellow .main-header li.user-header {
+ background-color: #f39c12;
+}
+.skin-yellow .content-header {
+ background: transparent;
+}
+.skin-yellow .wrapper,
+.skin-yellow .main-sidebar,
+.skin-yellow .left-side {
+ background-color: #222d32;
+}
+.skin-yellow .user-panel > .info,
+.skin-yellow .user-panel > .info > a {
+ color: #fff;
+}
+.skin-yellow .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-yellow .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-yellow .sidebar-menu > li:hover > a,
+.skin-yellow .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #f39c12;
+}
+.skin-yellow .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-yellow .sidebar a {
+ color: #b8c7ce;
+}
+.skin-yellow .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-yellow .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-yellow .treeview-menu > li.active > a,
+.skin-yellow .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-yellow .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-yellow .sidebar-form input[type="text"],
+.skin-yellow .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-yellow .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-yellow .sidebar-form input[type="text"]:focus,
+.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-yellow .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+/*
+ * Skin: Yellow
+ * ------------
+ */
+.skin-yellow-light .main-header .navbar {
+ background-color: #f39c12;
+}
+.skin-yellow-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-yellow-light .main-header .navbar .nav > li > a:hover,
+.skin-yellow-light .main-header .navbar .nav > li > a:active,
+.skin-yellow-light .main-header .navbar .nav > li > a:focus,
+.skin-yellow-light .main-header .navbar .nav .open > a,
+.skin-yellow-light .main-header .navbar .nav .open > a:hover,
+.skin-yellow-light .main-header .navbar .nav .open > a:focus,
+.skin-yellow-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-yellow-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-yellow-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #e08e0b;
+}
+@media (max-width: 767px) {
+ .skin-yellow-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-yellow-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #e08e0b;
+ }
+}
+.skin-yellow-light .main-header .logo {
+ background-color: #f39c12;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-yellow-light .main-header .logo:hover {
+ background-color: #f39a0d;
+}
+.skin-yellow-light .main-header li.user-header {
+ background-color: #f39c12;
+}
+.skin-yellow-light .content-header {
+ background: transparent;
+}
+.skin-yellow-light .wrapper,
+.skin-yellow-light .main-sidebar,
+.skin-yellow-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-yellow-light .content-wrapper,
+.skin-yellow-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-yellow-light .user-panel > .info,
+.skin-yellow-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-yellow-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-yellow-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-yellow-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-yellow-light .sidebar-menu > li:hover > a,
+.skin-yellow-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-yellow-light .sidebar-menu > li.active {
+ border-left-color: #f39c12;
+}
+.skin-yellow-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-yellow-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-yellow-light .sidebar a {
+ color: #444444;
+}
+.skin-yellow-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-yellow-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-yellow-light .treeview-menu > li.active > a,
+.skin-yellow-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-yellow-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-yellow-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-yellow-light .sidebar-form input[type="text"],
+.skin-yellow-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-yellow-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-yellow-light .sidebar-form input[type="text"]:focus,
+.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-yellow-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+/*
+ * Skin: Purple
+ * ------------
+ */
+.skin-purple .main-header .navbar {
+ background-color: #605ca8;
+}
+.skin-purple .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-purple .main-header .navbar .nav > li > a:hover,
+.skin-purple .main-header .navbar .nav > li > a:active,
+.skin-purple .main-header .navbar .nav > li > a:focus,
+.skin-purple .main-header .navbar .nav .open > a,
+.skin-purple .main-header .navbar .nav .open > a:hover,
+.skin-purple .main-header .navbar .nav .open > a:focus,
+.skin-purple .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-purple .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-purple .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-purple .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-purple .main-header .navbar .sidebar-toggle:hover {
+ background-color: #555299;
+}
+@media (max-width: 767px) {
+ .skin-purple .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-purple .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-purple .main-header .navbar .dropdown-menu li a:hover {
+ background: #555299;
+ }
+}
+.skin-purple .main-header .logo {
+ background-color: #555299;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-purple .main-header .logo:hover {
+ background-color: #545096;
+}
+.skin-purple .main-header li.user-header {
+ background-color: #605ca8;
+}
+.skin-purple .content-header {
+ background: transparent;
+}
+.skin-purple .wrapper,
+.skin-purple .main-sidebar,
+.skin-purple .left-side {
+ background-color: #222d32;
+}
+.skin-purple .user-panel > .info,
+.skin-purple .user-panel > .info > a {
+ color: #fff;
+}
+.skin-purple .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+.skin-purple .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+.skin-purple .sidebar-menu > li:hover > a,
+.skin-purple .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #605ca8;
+}
+.skin-purple .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+.skin-purple .sidebar a {
+ color: #b8c7ce;
+}
+.skin-purple .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-purple .treeview-menu > li > a {
+ color: #8aa4af;
+}
+.skin-purple .treeview-menu > li.active > a,
+.skin-purple .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+.skin-purple .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+.skin-purple .sidebar-form input[type="text"],
+.skin-purple .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-purple .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-purple .sidebar-form input[type="text"]:focus,
+.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-purple .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+/*
+ * Skin: Purple
+ * ------------
+ */
+.skin-purple-light .main-header .navbar {
+ background-color: #605ca8;
+}
+.skin-purple-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+.skin-purple-light .main-header .navbar .nav > li > a:hover,
+.skin-purple-light .main-header .navbar .nav > li > a:active,
+.skin-purple-light .main-header .navbar .nav > li > a:focus,
+.skin-purple-light .main-header .navbar .nav .open > a,
+.skin-purple-light .main-header .navbar .nav .open > a:hover,
+.skin-purple-light .main-header .navbar .nav .open > a:focus,
+.skin-purple-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+.skin-purple-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+.skin-purple-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #555299;
+}
+@media (max-width: 767px) {
+ .skin-purple-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ .skin-purple-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+ .skin-purple-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #555299;
+ }
+}
+.skin-purple-light .main-header .logo {
+ background-color: #605ca8;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+.skin-purple-light .main-header .logo:hover {
+ background-color: #5d59a6;
+}
+.skin-purple-light .main-header li.user-header {
+ background-color: #605ca8;
+}
+.skin-purple-light .content-header {
+ background: transparent;
+}
+.skin-purple-light .wrapper,
+.skin-purple-light .main-sidebar,
+.skin-purple-light .left-side {
+ background-color: #f9fafc;
+}
+.skin-purple-light .content-wrapper,
+.skin-purple-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+.skin-purple-light .user-panel > .info,
+.skin-purple-light .user-panel > .info > a {
+ color: #444444;
+}
+.skin-purple-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+.skin-purple-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+.skin-purple-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+.skin-purple-light .sidebar-menu > li:hover > a,
+.skin-purple-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+.skin-purple-light .sidebar-menu > li.active {
+ border-left-color: #605ca8;
+}
+.skin-purple-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-purple-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+.skin-purple-light .sidebar a {
+ color: #444444;
+}
+.skin-purple-light .sidebar a:hover {
+ text-decoration: none;
+}
+.skin-purple-light .treeview-menu > li > a {
+ color: #777777;
+}
+.skin-purple-light .treeview-menu > li.active > a,
+.skin-purple-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+.skin-purple-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+.skin-purple-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+.skin-purple-light .sidebar-form input[type="text"],
+.skin-purple-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+.skin-purple-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+.skin-purple-light .sidebar-form input[type="text"]:focus,
+.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+.skin-purple-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+@media (min-width: 768px) {
+ .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE.css b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE.css
new file mode 100755
index 0000000..38fe523
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE.css
@@ -0,0 +1,5894 @@
+@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);
+
+/*!
+ * AdminLTE v2.3.6
+ * Author: Almsaeed Studio
+ * Website: Almsaeed Studio <http://almsaeedstudio.com>
+ * License: Open source - MIT
+ * Please visit http://opensource.org/licenses/MIT for more information
+!*/
+/*
+ * Core: General Layout Style
+ * -------------------------
+ */
+html,
+body {
+ min-height: 100%;
+}
+
+.layout-boxed html,
+.layout-boxed body {
+ height: 100%;
+}
+
+body {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+/* Layout */
+.wrapper {
+ min-height: 100%;
+ position: relative;
+ overflow: hidden;
+}
+
+.wrapper:before,
+.wrapper:after {
+ content: " ";
+ display: table;
+}
+
+.wrapper:after {
+ clear: both;
+}
+
+.layout-boxed .wrapper {
+ max-width: 1250px;
+ margin: 0 auto;
+ min-height: 100%;
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
+ position: relative;
+}
+
+.layout-boxed {
+ background: url('../img/boxed-bg.jpg') repeat fixed;
+}
+
+/*
+ * Content Wrapper - contains the main content
+ * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ```
+ */
+.content-wrapper,
+.right-side,
+.main-footer {
+ -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ margin-left: 230px;
+ z-index: 820;
+}
+
+.layout-top-nav .content-wrapper,
+.layout-top-nav .right-side,
+.layout-top-nav .main-footer {
+ margin-left: 0;
+}
+
+@media (max-width: 767px) {
+ .content-wrapper,
+ .right-side,
+ .main-footer {
+ margin-left: 0;
+ }
+}
+
+@media (min-width: 768px) {
+ .sidebar-collapse .content-wrapper,
+ .sidebar-collapse .right-side,
+ .sidebar-collapse .main-footer {
+ margin-left: 0;
+ }
+}
+
+@media (max-width: 767px) {
+ .sidebar-open .content-wrapper,
+ .sidebar-open .right-side,
+ .sidebar-open .main-footer {
+ -webkit-transform: translate(230px, 0);
+ -ms-transform: translate(230px, 0);
+ -o-transform: translate(230px, 0);
+ transform: translate(230px, 0);
+ }
+}
+
+.content-wrapper,
+.right-side {
+ min-height: 100%;
+ background-color: #ecf0f5;
+ z-index: 800;
+}
+
+.main-footer {
+ background: #fff;
+ padding: 15px;
+ color: #444;
+ border-top: 1px solid #d2d6de;
+}
+
+/* Fixed layout */
+.fixed .main-header,
+.fixed .main-sidebar,
+.fixed .left-side {
+ position: fixed;
+}
+
+.fixed .main-header {
+ top: 0;
+ right: 0;
+ left: 0;
+}
+
+.fixed .content-wrapper,
+.fixed .right-side {
+ padding-top: 50px;
+}
+
+@media (max-width: 767px) {
+ .fixed .content-wrapper,
+ .fixed .right-side {
+ padding-top: 100px;
+ }
+}
+
+.fixed.layout-boxed .wrapper {
+ max-width: 100%;
+}
+
+body.hold-transition .content-wrapper,
+body.hold-transition .right-side,
+body.hold-transition .main-footer,
+body.hold-transition .main-sidebar,
+body.hold-transition .left-side,
+body.hold-transition .main-header .navbar,
+body.hold-transition .main-header .logo {
+ /* Fix for IE */
+ -webkit-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+
+/* Content */
+.content {
+ min-height: 250px;
+ padding: 15px;
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+/* H1 - H6 font */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: 'Source Sans Pro', sans-serif;
+}
+
+/* General Links */
+a {
+ color: #3c8dbc;
+}
+
+a:hover,
+a:active,
+a:focus {
+ outline: none;
+ text-decoration: none;
+ color: #72afd2;
+}
+
+/* Page Header */
+.page-header {
+ margin: 10px 0 20px 0;
+ font-size: 22px;
+}
+
+.page-header > small {
+ color: #666;
+ display: block;
+ margin-top: 5px;
+}
+
+/*
+ * Component: Main Header
+ * ----------------------
+ */
+.main-header {
+ position: relative;
+ max-height: 100px;
+ z-index: 1030;
+}
+
+.main-header .navbar {
+ -webkit-transition: margin-left 0.3s ease-in-out;
+ -o-transition: margin-left 0.3s ease-in-out;
+ transition: margin-left 0.3s ease-in-out;
+ margin-bottom: 0;
+ margin-left: 230px;
+ border: none;
+ min-height: 50px;
+ border-radius: 0;
+}
+
+.layout-top-nav .main-header .navbar {
+ margin-left: 0;
+}
+
+.main-header #navbar-search-input.form-control {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: transparent;
+}
+
+.main-header #navbar-search-input.form-control:focus,
+.main-header #navbar-search-input.form-control:active {
+ border-color: rgba(0, 0, 0, 0.1);
+ background: rgba(255, 255, 255, 0.9);
+}
+
+.main-header #navbar-search-input.form-control::-moz-placeholder {
+ color: #ccc;
+ opacity: 1;
+}
+
+.main-header #navbar-search-input.form-control:-ms-input-placeholder {
+ color: #ccc;
+}
+
+.main-header #navbar-search-input.form-control::-webkit-input-placeholder {
+ color: #ccc;
+}
+
+.main-header .navbar-custom-menu,
+.main-header .navbar-right {
+ float: right;
+}
+
+@media (max-width: 991px) {
+ .main-header .navbar-custom-menu a,
+ .main-header .navbar-right a {
+ color: inherit;
+ background: transparent;
+ }
+}
+
+@media (max-width: 767px) {
+ .main-header .navbar-right {
+ float: none;
+ }
+
+ .navbar-collapse .main-header .navbar-right {
+ margin: 7.5px -15px;
+ }
+
+ .main-header .navbar-right > li {
+ color: inherit;
+ border: 0;
+ }
+}
+
+.main-header .sidebar-toggle {
+ float: left;
+ background-color: transparent;
+ background-image: none;
+ padding: 15px 15px;
+ font-family: fontAwesome;
+}
+
+.main-header .sidebar-toggle:before {
+ content: "\f0c9";
+}
+
+.main-header .sidebar-toggle:hover {
+ color: #fff;
+}
+
+.main-header .sidebar-toggle:focus,
+.main-header .sidebar-toggle:active {
+ background: transparent;
+}
+
+.main-header .sidebar-toggle .icon-bar {
+ display: none;
+}
+
+.main-header .navbar .nav > li.user > a > .fa,
+.main-header .navbar .nav > li.user > a > .glyphicon,
+.main-header .navbar .nav > li.user > a > .ion {
+ margin-right: 5px;
+}
+
+.main-header .navbar .nav > li > a > .label {
+ position: absolute;
+ top: 9px;
+ right: 7px;
+ text-align: center;
+ font-size: 9px;
+ padding: 2px 3px;
+ line-height: .9;
+}
+
+.main-header .logo {
+ -webkit-transition: width 0.3s ease-in-out;
+ -o-transition: width 0.3s ease-in-out;
+ transition: width 0.3s ease-in-out;
+ display: block;
+ float: left;
+ height: 50px;
+ font-size: 20px;
+ line-height: 50px;
+ text-align: center;
+ width: 230px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ padding: 0 15px;
+ font-weight: 300;
+ overflow: hidden;
+}
+
+.main-header .logo .logo-lg {
+ display: block;
+}
+
+.main-header .logo .logo-mini {
+ display: none;
+}
+
+.main-header .navbar-brand {
+ color: #fff;
+}
+
+.content-header {
+ position: relative;
+ padding: 15px 15px 0 15px;
+}
+
+.content-header > h1 {
+ margin: 0;
+ font-size: 24px;
+}
+
+.content-header > h1 > small {
+ font-size: 15px;
+ display: inline-block;
+ padding-left: 4px;
+ font-weight: 300;
+}
+
+.content-header > .breadcrumb {
+ float: right;
+ background: transparent;
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 12px;
+ padding: 7px 5px;
+ position: absolute;
+ top: 15px;
+ right: 10px;
+ border-radius: 2px;
+}
+
+.content-header > .breadcrumb > li > a {
+ color: #444;
+ text-decoration: none;
+ display: inline-block;
+}
+
+.content-header > .breadcrumb > li > a > .fa,
+.content-header > .breadcrumb > li > a > .glyphicon,
+.content-header > .breadcrumb > li > a > .ion {
+ margin-right: 5px;
+}
+
+.content-header > .breadcrumb > li + li:before {
+ content: '>\00a0';
+}
+
+@media (max-width: 991px) {
+ .content-header > .breadcrumb {
+ position: relative;
+ margin-top: 5px;
+ top: 0;
+ right: 0;
+ float: none;
+ background: #d2d6de;
+ padding-left: 10px;
+ }
+
+ .content-header > .breadcrumb li:before {
+ color: #97a0b3;
+ }
+}
+
+.navbar-toggle {
+ color: #fff;
+ border: 0;
+ margin: 0;
+ padding: 15px 15px;
+}
+
+@media (max-width: 991px) {
+ .navbar-custom-menu .navbar-nav > li {
+ float: left;
+ }
+
+ .navbar-custom-menu .navbar-nav {
+ margin: 0;
+ float: left;
+ }
+
+ .navbar-custom-menu .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ line-height: 20px;
+ }
+}
+
+@media (max-width: 767px) {
+ .main-header {
+ position: relative;
+ }
+
+ .main-header .logo,
+ .main-header .navbar {
+ width: 100%;
+ float: none;
+ }
+
+ .main-header .navbar {
+ margin: 0;
+ }
+
+ .main-header .navbar-custom-menu {
+ float: right;
+ }
+}
+
+@media (max-width: 991px) {
+ .navbar-collapse.pull-left {
+ float: none !important;
+ }
+
+ .navbar-collapse.pull-left + .navbar-custom-menu {
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 40px;
+ }
+}
+
+/*
+ * Component: Sidebar
+ * ------------------
+ */
+.main-sidebar,
+.left-side {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding-top: 50px;
+ min-height: 100%;
+ width: 230px;
+ z-index: 810;
+ -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;
+}
+
+@media (max-width: 767px) {
+ .main-sidebar,
+ .left-side {
+ padding-top: 100px;
+ }
+}
+
+@media (max-width: 767px) {
+ .main-sidebar,
+ .left-side {
+ -webkit-transform: translate(-230px, 0);
+ -ms-transform: translate(-230px, 0);
+ -o-transform: translate(-230px, 0);
+ transform: translate(-230px, 0);
+ }
+}
+
+@media (min-width: 768px) {
+ .sidebar-collapse .main-sidebar,
+ .sidebar-collapse .left-side {
+ -webkit-transform: translate(-230px, 0);
+ -ms-transform: translate(-230px, 0);
+ -o-transform: translate(-230px, 0);
+ transform: translate(-230px, 0);
+ }
+}
+
+@media (max-width: 767px) {
+ .sidebar-open .main-sidebar,
+ .sidebar-open .left-side {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+.sidebar {
+ padding-bottom: 10px;
+}
+
+.sidebar-form input:focus {
+ border-color: transparent;
+}
+
+.user-panel {
+ position: relative;
+ width: 100%;
+ padding: 10px;
+ overflow: hidden;
+}
+
+.user-panel:before,
+.user-panel:after {
+ content: " ";
+ display: table;
+}
+
+.user-panel:after {
+ clear: both;
+}
+
+.user-panel > .image > img {
+ width: 100%;
+ max-width: 45px;
+ height: auto;
+}
+
+.user-panel > .info {
+ padding: 5px 5px 5px 15px;
+ line-height: 1;
+ position: absolute;
+ left: 55px;
+}
+
+.user-panel > .info > p {
+ font-weight: 600;
+ margin-bottom: 9px;
+}
+
+.user-panel > .info > a {
+ text-decoration: none;
+ padding-right: 5px;
+ margin-top: 3px;
+ font-size: 11px;
+}
+
+.user-panel > .info > a > .fa,
+.user-panel > .info > a > .ion,
+.user-panel > .info > a > .glyphicon {
+ margin-right: 3px;
+}
+
+.sidebar-menu {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.sidebar-menu > li {
+ position: relative;
+ margin: 0;
+ padding: 0;
+}
+
+.sidebar-menu > li > a {
+ padding: 12px 5px 12px 15px;
+ display: block;
+}
+
+.sidebar-menu > li > a > .fa,
+.sidebar-menu > li > a > .glyphicon,
+.sidebar-menu > li > a > .ion {
+ width: 20px;
+}
+
+.sidebar-menu > li .label,
+.sidebar-menu > li .badge {
+ margin-right: 5px;
+}
+
+.sidebar-menu > li .badge {
+ margin-top: 3px;
+}
+
+.sidebar-menu li.header {
+ padding: 10px 25px 10px 15px;
+ font-size: 12px;
+}
+
+.sidebar-menu li > a > .fa-angle-left,
+.sidebar-menu li > a > .pull-right-container > .fa-angle-left {
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin-right: 10px;
+}
+
+.sidebar-menu li.active > a > .fa-angle-left,
+.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left {
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+
+.sidebar-menu li.active > .treeview-menu {
+ display: block;
+}
+
+.sidebar-menu .treeview-menu {
+ display: none;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ padding-left: 5px;
+}
+
+.sidebar-menu .treeview-menu .treeview-menu {
+ padding-left: 20px;
+}
+
+.sidebar-menu .treeview-menu > li {
+ margin: 0;
+}
+
+.sidebar-menu .treeview-menu > li > a {
+ padding: 5px 5px 5px 15px;
+ display: block;
+ font-size: 14px;
+}
+
+.sidebar-menu .treeview-menu > li > a > .fa,
+.sidebar-menu .treeview-menu > li > a > .glyphicon,
+.sidebar-menu .treeview-menu > li > a > .ion {
+ width: 20px;
+}
+
+.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,
+.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,
+.sidebar-menu .treeview-menu > li > a > .fa-angle-left,
+.sidebar-menu .treeview-menu > li > a > .fa-angle-down {
+ width: auto;
+}
+
+/*
+ * Component: Sidebar Mini
+ */
+@media (min-width: 768px) {
+ .sidebar-mini.sidebar-collapse .content-wrapper,
+ .sidebar-mini.sidebar-collapse .right-side,
+ .sidebar-mini.sidebar-collapse .main-footer {
+ margin-left: 50px !important;
+ z-index: 840;
+ }
+
+ .sidebar-mini.sidebar-collapse .main-sidebar {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ width: 50px !important;
+ z-index: 850;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li {
+ position: relative;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a {
+ margin-right: 0;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span {
+ border-top-right-radius: 4px;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span {
+ border-bottom-right-radius: 4px;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ padding-top: 5px;
+ padding-bottom: 5px;
+ border-bottom-right-radius: 4px;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
+ display: block !important;
+ position: absolute;
+ width: 180px;
+ left: 50px;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span {
+ top: 0;
+ margin-left: -3px;
+ padding: 12px 5px 12px 20px;
+ background-color: inherit;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container {
+ float: right;
+ width: auto !important;
+ left: 200px !important;
+ top: 10px !important;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) {
+ display: none;
+ }
+
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
+ top: 44px;
+ margin-left: 0;
+ }
+
+ .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,
+ .sidebar-mini.sidebar-collapse .sidebar-form,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,
+ .sidebar-mini.sidebar-collapse .sidebar-menu li.header {
+ display: none !important;
+ -webkit-transform: translateZ(0);
+ }
+
+ .sidebar-mini.sidebar-collapse .main-header .logo {
+ width: 50px;
+ }
+
+ .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini {
+ display: block;
+ margin-left: -15px;
+ margin-right: -15px;
+ font-size: 18px;
+ }
+
+ .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg {
+ display: none;
+ }
+
+ .sidebar-mini.sidebar-collapse .main-header .navbar {
+ margin-left: 50px;
+ }
+}
+
+.sidebar-menu,
+.main-sidebar .user-panel,
+.sidebar-menu > li.header {
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.sidebar-menu:hover {
+ overflow: visible;
+}
+
+.sidebar-form,
+.sidebar-menu > li.header {
+ overflow: hidden;
+ text-overflow: clip;
+}
+
+.sidebar-menu li > a {
+ position: relative;
+}
+
+.sidebar-menu li > a > .pull-right-container {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -7px;
+}
+
+/*
+ * Component: Control sidebar. By default, this is the right sidebar.
+ */
+.control-sidebar-bg {
+ position: fixed;
+ z-index: 1000;
+ bottom: 0;
+}
+
+.control-sidebar-bg,
+.control-sidebar {
+ top: 0;
+ right: -230px;
+ width: 230px;
+ -webkit-transition: right 0.3s ease-in-out;
+ -o-transition: right 0.3s ease-in-out;
+ transition: right 0.3s ease-in-out;
+}
+
+.control-sidebar {
+ position: absolute;
+ padding-top: 50px;
+ z-index: 1010;
+}
+
+@media (max-width: 768px) {
+ .control-sidebar {
+ padding-top: 100px;
+ }
+}
+
+.control-sidebar > .tab-content {
+ padding: 10px 15px;
+}
+
+.control-sidebar.control-sidebar-open,
+.control-sidebar.control-sidebar-open + .control-sidebar-bg {
+ right: 0;
+}
+
+.control-sidebar-open .control-sidebar-bg,
+.control-sidebar-open .control-sidebar {
+ right: 0;
+}
+
+@media (min-width: 768px) {
+ .control-sidebar-open .content-wrapper,
+ .control-sidebar-open .right-side,
+ .control-sidebar-open .main-footer {
+ margin-right: 230px;
+ }
+}
+
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a,
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus {
+ border-left-width: 0;
+}
+
+.nav-tabs.control-sidebar-tabs > li > a {
+ border-radius: 0;
+}
+
+.nav-tabs.control-sidebar-tabs > li > a,
+.nav-tabs.control-sidebar-tabs > li > a:hover {
+ border-top: none;
+ border-right: none;
+ border-left: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+}
+
+.nav-tabs.control-sidebar-tabs > li > a .icon {
+ font-size: 16px;
+}
+
+.nav-tabs.control-sidebar-tabs > li.active > a,
+.nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.nav-tabs.control-sidebar-tabs > li.active > a:active {
+ border-top: none;
+ border-right: none;
+ border-bottom: none;
+}
+
+@media (max-width: 768px) {
+ .nav-tabs.control-sidebar-tabs {
+ display: table;
+ }
+
+ .nav-tabs.control-sidebar-tabs > li {
+ display: table-cell;
+ }
+}
+
+.control-sidebar-heading {
+ font-weight: 400;
+ font-size: 16px;
+ padding: 10px 0;
+ margin-bottom: 10px;
+}
+
+.control-sidebar-subheading {
+ display: block;
+ font-weight: 400;
+ font-size: 14px;
+}
+
+.control-sidebar-menu {
+ list-style: none;
+ padding: 0;
+ margin: 0 -15px;
+}
+
+.control-sidebar-menu > li > a {
+ display: block;
+ padding: 10px 15px;
+}
+
+.control-sidebar-menu > li > a:before,
+.control-sidebar-menu > li > a:after {
+ content: " ";
+ display: table;
+}
+
+.control-sidebar-menu > li > a:after {
+ clear: both;
+}
+
+.control-sidebar-menu > li > a > .control-sidebar-subheading {
+ margin-top: 0;
+}
+
+.control-sidebar-menu .menu-icon {
+ float: left;
+ width: 35px;
+ height: 35px;
+ border-radius: 50%;
+ text-align: center;
+ line-height: 35px;
+}
+
+.control-sidebar-menu .menu-info {
+ margin-left: 45px;
+ margin-top: 3px;
+}
+
+.control-sidebar-menu .menu-info > .control-sidebar-subheading {
+ margin: 0;
+}
+
+.control-sidebar-menu .menu-info > p {
+ margin: 0;
+ font-size: 11px;
+}
+
+.control-sidebar-menu .progress {
+ margin: 0;
+}
+
+.control-sidebar-dark {
+ color: #b8c7ce;
+}
+
+.control-sidebar-dark,
+.control-sidebar-dark + .control-sidebar-bg {
+ background: #222d32;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs {
+ border-bottom: #1c2529;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a {
+ background: #181f23;
+ color: #b8c7ce;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus {
+ border-left-color: #141a1d;
+ border-bottom-color: #141a1d;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active {
+ background: #1c2529;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover {
+ color: #fff;
+}
+
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active {
+ background: #222d32;
+ color: #fff;
+}
+
+.control-sidebar-dark .control-sidebar-heading,
+.control-sidebar-dark .control-sidebar-subheading {
+ color: #fff;
+}
+
+.control-sidebar-dark .control-sidebar-menu > li > a:hover {
+ background: #1e282c;
+}
+
+.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p {
+ color: #b8c7ce;
+}
+
+.control-sidebar-light {
+ color: #5e5e5e;
+}
+
+.control-sidebar-light,
+.control-sidebar-light + .control-sidebar-bg {
+ background: #f9fafc;
+ border-left: 1px solid #d2d6de;
+}
+
+.control-sidebar-light .nav-tabs.control-sidebar-tabs {
+ border-bottom: #d2d6de;
+}
+
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a {
+ background: #e8ecf4;
+ color: #444444;
+}
+
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus {
+ border-left-color: #d2d6de;
+ border-bottom-color: #d2d6de;
+}
+
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active {
+ background: #eff1f7;
+}
+
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active {
+ background: #f9fafc;
+ color: #111;
+}
+
+.control-sidebar-light .control-sidebar-heading,
+.control-sidebar-light .control-sidebar-subheading {
+ color: #111;
+}
+
+.control-sidebar-light .control-sidebar-menu {
+ margin-left: -14px;
+}
+
+.control-sidebar-light .control-sidebar-menu > li > a:hover {
+ background: #f4f4f5;
+}
+
+.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p {
+ color: #5e5e5e;
+}
+
+/*
+ * Component: Dropdown menus
+ * -------------------------
+ */
+/*Dropdowns in general*/
+.dropdown-menu {
+ box-shadow: none;
+ border-color: #eee;
+}
+
+.dropdown-menu > li > a {
+ color: #777;
+}
+
+.dropdown-menu > li > a > .glyphicon,
+.dropdown-menu > li > a > .fa,
+.dropdown-menu > li > a > .ion {
+ margin-right: 10px;
+}
+
+.dropdown-menu > li > a:hover {
+ background-color: #e1e3e9;
+ color: #333;
+}
+
+.dropdown-menu > .divider {
+ background-color: #eee;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu,
+.navbar-nav > .messages-menu > .dropdown-menu,
+.navbar-nav > .tasks-menu > .dropdown-menu {
+ width: 280px;
+ padding: 0 0 0 0;
+ margin: 0;
+ top: 100%;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li,
+.navbar-nav > .messages-menu > .dropdown-menu > li,
+.navbar-nav > .tasks-menu > .dropdown-menu > li {
+ position: relative;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li.header,
+.navbar-nav > .messages-menu > .dropdown-menu > li.header,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.header {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #ffffff;
+ padding: 7px 10px;
+ border-bottom: 1px solid #f4f4f4;
+ color: #444444;
+ font-size: 14px;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
+.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+ font-size: 12px;
+ background-color: #fff;
+ padding: 7px 10px;
+ border-bottom: 1px solid #eeeeee;
+ color: #444 !important;
+ text-align: center;
+}
+
+@media (max-width: 991px) {
+ .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
+ .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
+ .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
+ background: #fff !important;
+ color: #444 !important;
+ }
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,
+.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover {
+ text-decoration: none;
+ font-weight: normal;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu {
+ max-height: 200px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ overflow-x: hidden;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
+ display: block;
+ white-space: nowrap;
+ /* Prevent text from breaking */
+ border-bottom: 1px solid #f4f4f4;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover {
+ background: #f4f4f4;
+ text-decoration: none;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a {
+ color: #444444;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 10px;
+}
+
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion {
+ width: 20px;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a {
+ margin: 0;
+ padding: 10px 10px;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img {
+ margin: auto 10px auto auto;
+ width: 40px;
+ height: 40px;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 {
+ padding: 0;
+ margin: 0 0 0 45px;
+ color: #444444;
+ font-size: 15px;
+ position: relative;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small {
+ color: #999999;
+ font-size: 10px;
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p {
+ margin: 0 0 0 45px;
+ font-size: 12px;
+ color: #888888;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ content: " ";
+ display: table;
+}
+
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ clear: both;
+}
+
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
+ padding: 10px;
+}
+
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 {
+ font-size: 14px;
+ padding: 0;
+ margin: 0 0 10px 0;
+ color: #666666;
+}
+
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress {
+ padding: 0;
+ margin: 0;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+ padding: 1px 0 0 0;
+ border-top-width: 0;
+ width: 280px;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu,
+.navbar-nav > .user-menu > .dropdown-menu > .user-body {
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header {
+ height: 175px;
+ padding: 10px;
+ text-align: center;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img {
+ z-index: 5;
+ height: 90px;
+ width: 90px;
+ border: 3px solid;
+ border-color: transparent;
+ border-color: rgba(255, 255, 255, 0.2);
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p {
+ z-index: 5;
+ color: #fff;
+ color: rgba(255, 255, 255, 0.8);
+ font-size: 17px;
+ margin-top: 10px;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small {
+ display: block;
+ font-size: 12px;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-body {
+ padding: 15px;
+ border-bottom: 1px solid #f4f4f4;
+ border-top: 1px solid #dddddd;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ content: " ";
+ display: table;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ clear: both;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-body a {
+ color: #444 !important;
+}
+
+@media (max-width: 991px) {
+ .navbar-nav > .user-menu > .dropdown-menu > .user-body a {
+ background: #fff !important;
+ color: #444 !important;
+ }
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer {
+ background-color: #f9f9f9;
+ padding: 10px;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ content: " ";
+ display: table;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ clear: both;
+}
+
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default {
+ color: #666666;
+}
+
+@media (max-width: 991px) {
+ .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover {
+ background-color: #f9f9f9;
+ }
+}
+
+.navbar-nav > .user-menu .user-image {
+ float: left;
+ width: 25px;
+ height: 25px;
+ border-radius: 50%;
+ margin-right: 10px;
+ margin-top: -2px;
+}
+
+@media (max-width: 767px) {
+ .navbar-nav > .user-menu .user-image {
+ float: none;
+ margin-right: 0;
+ margin-top: -8px;
+ line-height: 10px;
+ }
+}
+
+/* Add fade animation to dropdown menus by appending
+ the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/
+.open:not(.dropup) > .animated-dropdown-menu {
+ backface-visibility: visible !important;
+ -webkit-animation: flipInX 0.7s both;
+ -o-animation: flipInX 0.7s both;
+ animation: flipInX 0.7s both;
+}
+
+@keyframes flipInX {
+ 0% {
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transition-timing-function: ease-in;
+ opacity: 0;
+ }
+ 40% {
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transition-timing-function: ease-in;
+ }
+ 60% {
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+ 80% {
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+ 100% {
+ transform: perspective(400px);
+ }
+}
+
+@-webkit-keyframes flipInX {
+ 0% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ -webkit-transition-timing-function: ease-in;
+ opacity: 0;
+ }
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ -webkit-transition-timing-function: ease-in;
+ }
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+ 100% {
+ -webkit-transform: perspective(400px);
+ }
+}
+
+/* Fix dropdown menu in navbars */
+.navbar-custom-menu > .navbar-nav > li {
+ position: relative;
+}
+
+.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
+ position: absolute;
+ right: 0;
+ left: auto;
+}
+
+@media (max-width: 991px) {
+ .navbar-custom-menu > .navbar-nav {
+ float: right;
+ }
+
+ .navbar-custom-menu > .navbar-nav > li {
+ position: static;
+ }
+
+ .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
+ position: absolute;
+ right: 5%;
+ left: auto;
+ border: 1px solid #ddd;
+ background: #fff;
+ }
+}
+
+/*
+ * Component: Form
+ * ---------------
+ */
+.form-control {
+ border-radius: 0;
+ box-shadow: none;
+ border-color: #d2d6de;
+}
+
+.form-control:focus {
+ border-color: #3c8dbc;
+ box-shadow: none;
+}
+
+.form-control::-moz-placeholder,
+.form-control:-ms-input-placeholder,
+.form-control::-webkit-input-placeholder {
+ color: #bbb;
+ opacity: 1;
+}
+
+.form-control:not(select) {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.form-group.has-success label {
+ color: #00a65a;
+}
+
+.form-group.has-success .form-control,
+.form-group.has-success .input-group-addon {
+ border-color: #00a65a;
+ box-shadow: none;
+}
+
+.form-group.has-success .help-block {
+ color: #00a65a;
+}
+
+.form-group.has-warning label {
+ color: #f39c12;
+}
+
+.form-group.has-warning .form-control,
+.form-group.has-warning .input-group-addon {
+ border-color: #f39c12;
+ box-shadow: none;
+}
+
+.form-group.has-warning .help-block {
+ color: #f39c12;
+}
+
+.form-group.has-error label {
+ color: #dd4b39;
+}
+
+.form-group.has-error .form-control,
+.form-group.has-error .input-group-addon {
+ border-color: #dd4b39;
+ box-shadow: none;
+}
+
+.form-group.has-error .help-block {
+ color: #dd4b39;
+}
+
+/* Input group */
+.input-group .input-group-addon {
+ border-radius: 0;
+ border-color: #d2d6de;
+ background-color: #fff;
+}
+
+/* button groups */
+.btn-group-vertical .btn.btn-flat:first-of-type,
+.btn-group-vertical .btn.btn-flat:last-of-type {
+ border-radius: 0;
+}
+
+.icheck > label {
+ padding-left: 0;
+}
+
+/* support Font Awesome icons in form-control */
+.form-control-feedback.fa {
+ line-height: 34px;
+}
+
+.input-lg + .form-control-feedback.fa,
+.input-group-lg + .form-control-feedback.fa,
+.form-group-lg .form-control + .form-control-feedback.fa {
+ line-height: 46px;
+}
+
+.input-sm + .form-control-feedback.fa,
+.input-group-sm + .form-control-feedback.fa,
+.form-group-sm .form-control + .form-control-feedback.fa {
+ line-height: 30px;
+}
+
+/*
+ * Component: Progress Bar
+ * -----------------------
+ */
+.progress,
+.progress > .progress-bar {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.progress,
+.progress > .progress-bar,
+.progress .progress-bar,
+.progress > .progress-bar .progress-bar {
+ border-radius: 1px;
+}
+
+/* size variation */
+.progress.sm,
+.progress-sm {
+ height: 10px;
+}
+
+.progress.sm,
+.progress-sm,
+.progress.sm .progress-bar,
+.progress-sm .progress-bar {
+ border-radius: 1px;
+}
+
+.progress.xs,
+.progress-xs {
+ height: 7px;
+}
+
+.progress.xs,
+.progress-xs,
+.progress.xs .progress-bar,
+.progress-xs .progress-bar {
+ border-radius: 1px;
+}
+
+.progress.xxs,
+.progress-xxs {
+ height: 3px;
+}
+
+.progress.xxs,
+.progress-xxs,
+.progress.xxs .progress-bar,
+.progress-xxs .progress-bar {
+ border-radius: 1px;
+}
+
+/* Vertical bars */
+.progress.vertical {
+ position: relative;
+ width: 30px;
+ height: 200px;
+ display: inline-block;
+ margin-right: 10px;
+}
+
+.progress.vertical > .progress-bar {
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+}
+
+.progress.vertical.sm,
+.progress.vertical.progress-sm {
+ width: 20px;
+}
+
+.progress.vertical.xs,
+.progress.vertical.progress-xs {
+ width: 10px;
+}
+
+.progress.vertical.xxs,
+.progress.vertical.progress-xxs {
+ width: 3px;
+}
+
+.progress-group .progress-text {
+ font-weight: 600;
+}
+
+.progress-group .progress-number {
+ float: right;
+}
+
+/* Remove margins from progress bars when put in a table */
+.table tr > td .progress {
+ margin: 0;
+}
+
+.progress-bar-light-blue,
+.progress-bar-primary {
+ background-color: #3c8dbc;
+}
+
+.progress-striped .progress-bar-light-blue,
+.progress-striped .progress-bar-primary {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-green,
+.progress-bar-success {
+ background-color: #00a65a;
+}
+
+.progress-striped .progress-bar-green,
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-aqua,
+.progress-bar-info {
+ background-color: #00c0ef;
+}
+
+.progress-striped .progress-bar-aqua,
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-yellow,
+.progress-bar-warning {
+ background-color: #f39c12;
+}
+
+.progress-striped .progress-bar-yellow,
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-red,
+.progress-bar-danger {
+ background-color: #dd4b39;
+}
+
+.progress-striped .progress-bar-red,
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+/*
+ * Component: Small Box
+ * --------------------
+ */
+.small-box {
+ border-radius: 2px;
+ position: relative;
+ display: block;
+ margin-bottom: 20px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+
+.small-box > .inner {
+ padding: 10px;
+}
+
+.small-box > .small-box-footer {
+ position: relative;
+ text-align: center;
+ padding: 3px 0;
+ color: #fff;
+ color: rgba(255, 255, 255, 0.8);
+ display: block;
+ z-index: 10;
+ background: rgba(0, 0, 0, 0.1);
+ text-decoration: none;
+}
+
+.small-box > .small-box-footer:hover {
+ color: #fff;
+ background: rgba(0, 0, 0, 0.15);
+}
+
+.small-box h3 {
+ font-size: 38px;
+ font-weight: bold;
+ margin: 0 0 10px 0;
+ white-space: nowrap;
+ padding: 0;
+}
+
+.small-box p {
+ font-size: 15px;
+}
+
+.small-box p > small {
+ display: block;
+ color: #f9f9f9;
+ font-size: 13px;
+ margin-top: 5px;
+}
+
+.small-box h3,
+.small-box p {
+ z-index: 5;
+}
+
+.small-box .icon {
+ -webkit-transition: all 0.3s linear;
+ -o-transition: all 0.3s linear;
+ transition: all 0.3s linear;
+ position: absolute;
+ top: -10px;
+ right: 10px;
+ z-index: 0;
+ font-size: 90px;
+ color: rgba(0, 0, 0, 0.15);
+}
+
+.small-box:hover {
+ text-decoration: none;
+ color: #f9f9f9;
+}
+
+.small-box:hover .icon {
+ font-size: 95px;
+}
+
+@media (max-width: 767px) {
+ .small-box {
+ text-align: center;
+ }
+
+ .small-box .icon {
+ display: none;
+ }
+
+ .small-box p {
+ font-size: 12px;
+ }
+}
+
+/*
+ * Component: Box
+ * --------------
+ */
+.box {
+ position: relative;
+ border-radius: 3px;
+ background: #ffffff;
+ border-top: 3px solid #d2d6de;
+ margin-bottom: 20px;
+ width: 100%;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+
+.box.box-primary {
+ border-top-color: #3c8dbc;
+}
+
+.box.box-info {
+ border-top-color: #00c0ef;
+}
+
+.box.box-danger {
+ border-top-color: #dd4b39;
+}
+
+.box.box-warning {
+ border-top-color: #f39c12;
+}
+
+.box.box-success {
+ border-top-color: #00a65a;
+}
+
+.box.box-default {
+ border-top-color: #d2d6de;
+}
+
+.box.collapsed-box .box-body,
+.box.collapsed-box .box-footer {
+ display: none;
+}
+
+.box .nav-stacked > li {
+ border-bottom: 1px solid #f4f4f4;
+ margin: 0;
+}
+
+.box .nav-stacked > li:last-of-type {
+ border-bottom: none;
+}
+
+.box.height-control .box-body {
+ max-height: 300px;
+ overflow: auto;
+}
+
+.box .border-right {
+ border-right: 1px solid #f4f4f4;
+}
+
+.box .border-left {
+ border-left: 1px solid #f4f4f4;
+}
+
+.box.box-solid {
+ border-top: 0;
+}
+
+.box.box-solid > .box-header .btn.btn-default {
+ background: transparent;
+}
+
+.box.box-solid > .box-header .btn:hover,
+.box.box-solid > .box-header a:hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.box.box-solid.box-default {
+ border: 1px solid #d2d6de;
+}
+
+.box.box-solid.box-default > .box-header {
+ color: #444444;
+ background: #d2d6de;
+ background-color: #d2d6de;
+}
+
+.box.box-solid.box-default > .box-header a,
+.box.box-solid.box-default > .box-header .btn {
+ color: #444444;
+}
+
+.box.box-solid.box-primary {
+ border: 1px solid #3c8dbc;
+}
+
+.box.box-solid.box-primary > .box-header {
+ color: #ffffff;
+ background: #3c8dbc;
+ background-color: #3c8dbc;
+}
+
+.box.box-solid.box-primary > .box-header a,
+.box.box-solid.box-primary > .box-header .btn {
+ color: #ffffff;
+}
+
+.box.box-solid.box-info {
+ border: 1px solid #00c0ef;
+}
+
+.box.box-solid.box-info > .box-header {
+ color: #ffffff;
+ background: #00c0ef;
+ background-color: #00c0ef;
+}
+
+.box.box-solid.box-info > .box-header a,
+.box.box-solid.box-info > .box-header .btn {
+ color: #ffffff;
+}
+
+.box.box-solid.box-danger {
+ border: 1px solid #dd4b39;
+}
+
+.box.box-solid.box-danger > .box-header {
+ color: #ffffff;
+ background: #dd4b39;
+ background-color: #dd4b39;
+}
+
+.box.box-solid.box-danger > .box-header a,
+.box.box-solid.box-danger > .box-header .btn {
+ color: #ffffff;
+}
+
+.box.box-solid.box-warning {
+ border: 1px solid #f39c12;
+}
+
+.box.box-solid.box-warning > .box-header {
+ color: #ffffff;
+ background: #f39c12;
+ background-color: #f39c12;
+}
+
+.box.box-solid.box-warning > .box-header a,
+.box.box-solid.box-warning > .box-header .btn {
+ color: #ffffff;
+}
+
+.box.box-solid.box-success {
+ border: 1px solid #00a65a;
+}
+
+.box.box-solid.box-success > .box-header {
+ color: #ffffff;
+ background: #00a65a;
+ background-color: #00a65a;
+}
+
+.box.box-solid.box-success > .box-header a,
+.box.box-solid.box-success > .box-header .btn {
+ color: #ffffff;
+}
+
+.box.box-solid > .box-header > .box-tools .btn {
+ border: 0;
+ box-shadow: none;
+}
+
+.box.box-solid[class*='bg'] > .box-header {
+ color: #fff;
+}
+
+.box .box-group > .box {
+ margin-bottom: 5px;
+}
+
+.box .knob-label {
+ text-align: center;
+ color: #333;
+ font-weight: 100;
+ font-size: 12px;
+ margin-bottom: 0.3em;
+}
+
+.box > .overlay,
+.overlay-wrapper > .overlay,
+.box > .loading-img,
+.overlay-wrapper > .loading-img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.box .overlay,
+.overlay-wrapper .overlay {
+ z-index: 50;
+ background: rgba(255, 255, 255, 0.7);
+ border-radius: 3px;
+}
+
+.box .overlay > .fa,
+.overlay-wrapper .overlay > .fa {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -15px;
+ margin-top: -15px;
+ color: #000;
+ font-size: 30px;
+}
+
+.box .overlay.dark,
+.overlay-wrapper .overlay.dark {
+ background: rgba(0, 0, 0, 0.5);
+}
+
+.box-header:before,
+.box-body:before,
+.box-footer:before,
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ content: " ";
+ display: table;
+}
+
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ clear: both;
+}
+
+.box-header {
+ color: #444;
+ display: block;
+ padding: 10px;
+ position: relative;
+}
+
+.box-header.with-border {
+ border-bottom: 1px solid #f4f4f4;
+}
+
+.collapsed-box .box-header.with-border {
+ border-bottom: none;
+}
+
+.box-header > .fa,
+.box-header > .glyphicon,
+.box-header > .ion,
+.box-header .box-title {
+ display: inline-block;
+ font-size: 18px;
+ margin: 0;
+ line-height: 1;
+}
+
+.box-header > .fa,
+.box-header > .glyphicon,
+.box-header > .ion {
+ margin-right: 5px;
+}
+
+.box-header > .box-tools {
+ position: absolute;
+ right: 10px;
+ top: 5px;
+}
+
+.box-header > .box-tools [data-toggle="tooltip"] {
+ position: relative;
+}
+
+.box-header > .box-tools.pull-right .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.btn-box-tool {
+ padding: 5px;
+ font-size: 12px;
+ background: transparent;
+ color: #97a0b3;
+}
+
+.open .btn-box-tool,
+.btn-box-tool:hover {
+ color: #606c84;
+}
+
+.btn-box-tool.btn:active {
+ box-shadow: none;
+}
+
+.box-body {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ padding: 10px;
+}
+
+.no-header .box-body {
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.box-body > .table {
+ margin-bottom: 0;
+}
+
+.box-body .fc {
+ margin-top: 5px;
+}
+
+.box-body .full-width-chart {
+ margin: -19px;
+}
+
+.box-body.no-padding .full-width-chart {
+ margin: -9px;
+}
+
+.box-body .box-pane {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 3px;
+}
+
+.box-body .box-pane-right {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 0;
+}
+
+.box-footer {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top: 1px solid #f4f4f4;
+ padding: 10px;
+ background-color: #ffffff;
+}
+
+.chart-legend {
+ margin: 10px 0;
+}
+
+@media (max-width: 991px) {
+ .chart-legend > li {
+ float: left;
+ margin-right: 10px;
+ }
+}
+
+.box-comments {
+ background: #f7f7f7;
+}
+
+.box-comments .box-comment {
+ padding: 8px 0;
+ border-bottom: 1px solid #eee;
+}
+
+.box-comments .box-comment:before,
+.box-comments .box-comment:after {
+ content: " ";
+ display: table;
+}
+
+.box-comments .box-comment:after {
+ clear: both;
+}
+
+.box-comments .box-comment:last-of-type {
+ border-bottom: 0;
+}
+
+.box-comments .box-comment:first-of-type {
+ padding-top: 0;
+}
+
+.box-comments .box-comment img {
+ float: left;
+}
+
+.box-comments .comment-text {
+ margin-left: 40px;
+ color: #555;
+}
+
+.box-comments .username {
+ color: #444;
+ display: block;
+ font-weight: 600;
+}
+
+.box-comments .text-muted {
+ font-weight: 400;
+ font-size: 12px;
+}
+
+/* Widget: TODO LIST */
+.todo-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ overflow: auto;
+}
+
+.todo-list > li {
+ border-radius: 2px;
+ padding: 10px;
+ background: #f4f4f4;
+ margin-bottom: 2px;
+ border-left: 2px solid #e6e7e8;
+ color: #444;
+}
+
+.todo-list > li:last-of-type {
+ margin-bottom: 0;
+}
+
+.todo-list > li > input[type='checkbox'] {
+ margin: 0 10px 0 5px;
+}
+
+.todo-list > li .text {
+ display: inline-block;
+ margin-left: 5px;
+ font-weight: 600;
+}
+
+.todo-list > li .label {
+ margin-left: 10px;
+ font-size: 9px;
+}
+
+.todo-list > li .tools {
+ display: none;
+ float: right;
+ color: #dd4b39;
+}
+
+.todo-list > li .tools > .fa,
+.todo-list > li .tools > .glyphicon,
+.todo-list > li .tools > .ion {
+ margin-right: 5px;
+ cursor: pointer;
+}
+
+.todo-list > li:hover .tools {
+ display: inline-block;
+}
+
+.todo-list > li.done {
+ color: #999;
+}
+
+.todo-list > li.done .text {
+ text-decoration: line-through;
+ font-weight: 500;
+}
+
+.todo-list > li.done .label {
+ background: #d2d6de !important;
+}
+
+.todo-list .danger {
+ border-left-color: #dd4b39;
+}
+
+.todo-list .warning {
+ border-left-color: #f39c12;
+}
+
+.todo-list .info {
+ border-left-color: #00c0ef;
+}
+
+.todo-list .success {
+ border-left-color: #00a65a;
+}
+
+.todo-list .primary {
+ border-left-color: #3c8dbc;
+}
+
+.todo-list .handle {
+ display: inline-block;
+ cursor: move;
+ margin: 0 5px;
+}
+
+/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/
+.chat {
+ padding: 5px 20px 5px 10px;
+}
+
+.chat .item {
+ margin-bottom: 10px;
+}
+
+.chat .item:before,
+.chat .item:after {
+ content: " ";
+ display: table;
+}
+
+.chat .item:after {
+ clear: both;
+}
+
+.chat .item > img {
+ width: 40px;
+ height: 40px;
+ border: 2px solid transparent;
+ border-radius: 50%;
+}
+
+.chat .item > .online {
+ border: 2px solid #00a65a;
+}
+
+.chat .item > .offline {
+ border: 2px solid #dd4b39;
+}
+
+.chat .item > .message {
+ margin-left: 55px;
+ margin-top: -40px;
+}
+
+.chat .item > .message > .name {
+ display: block;
+ font-weight: 600;
+}
+
+.chat .item > .attachment {
+ border-radius: 3px;
+ background: #f4f4f4;
+ margin-left: 65px;
+ margin-right: 15px;
+ padding: 10px;
+}
+
+.chat .item > .attachment > h4 {
+ margin: 0 0 5px 0;
+ font-weight: 600;
+ font-size: 14px;
+}
+
+.chat .item > .attachment > p,
+.chat .item > .attachment > .filename {
+ font-weight: 600;
+ font-size: 13px;
+ font-style: italic;
+ margin: 0;
+}
+
+.chat .item > .attachment:before,
+.chat .item > .attachment:after {
+ content: " ";
+ display: table;
+}
+
+.chat .item > .attachment:after {
+ clear: both;
+}
+
+.box-input {
+ max-width: 200px;
+}
+
+.modal .panel-body {
+ color: #444;
+}
+
+/*
+ * Component: Info Box
+ * -------------------
+ */
+.info-box {
+ display: block;
+ min-height: 90px;
+ background: #fff;
+ width: 100%;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 2px;
+ margin-bottom: 15px;
+}
+
+.info-box small {
+ font-size: 14px;
+}
+
+.info-box .progress {
+ background: rgba(0, 0, 0, 0.2);
+ margin: 5px -10px 5px -10px;
+ height: 2px;
+}
+
+.info-box .progress,
+.info-box .progress .progress-bar {
+ border-radius: 0;
+}
+
+.info-box .progress .progress-bar {
+ background: #fff;
+}
+
+.info-box-icon {
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+ display: block;
+ float: left;
+ height: 90px;
+ width: 90px;
+ text-align: center;
+ font-size: 45px;
+ line-height: 90px;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.info-box-icon > img {
+ max-width: 100%;
+}
+
+.info-box-content {
+ padding: 5px 10px;
+ margin-left: 90px;
+}
+
+.info-box-number {
+ display: block;
+ font-weight: bold;
+ font-size: 18px;
+}
+
+.progress-description,
+.info-box-text {
+ display: block;
+ font-size: 14px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.info-box-text {
+ text-transform: uppercase;
+}
+
+.info-box-more {
+ display: block;
+}
+
+.progress-description {
+ margin: 0;
+}
+
+/*
+ * Component: Timeline
+ * -------------------
+ */
+.timeline {
+ position: relative;
+ margin: 0 0 30px 0;
+ padding: 0;
+ list-style: none;
+}
+
+.timeline:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 4px;
+ background: #ddd;
+ left: 31px;
+ margin: 0;
+ border-radius: 2px;
+}
+
+.timeline > li {
+ position: relative;
+ margin-right: 10px;
+ margin-bottom: 15px;
+}
+
+.timeline > li:before,
+.timeline > li:after {
+ content: " ";
+ display: table;
+}
+
+.timeline > li:after {
+ clear: both;
+}
+
+.timeline > li > .timeline-item {
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+ margin-top: 0;
+ background: #fff;
+ color: #444;
+ margin-left: 60px;
+ margin-right: 15px;
+ padding: 0;
+ position: relative;
+}
+
+.timeline > li > .timeline-item > .time {
+ color: #999;
+ float: right;
+ padding: 10px;
+ font-size: 12px;
+}
+
+.timeline > li > .timeline-item > .timeline-header {
+ margin: 0;
+ color: #555;
+ border-bottom: 1px solid #f4f4f4;
+ padding: 10px;
+ font-size: 16px;
+ line-height: 1.1;
+}
+
+.timeline > li > .timeline-item > .timeline-header > a {
+ font-weight: 600;
+}
+
+.timeline > li > .timeline-item > .timeline-body,
+.timeline > li > .timeline-item > .timeline-footer {
+ padding: 10px;
+}
+
+.timeline > li > .fa,
+.timeline > li > .glyphicon,
+.timeline > li > .ion {
+ width: 30px;
+ height: 30px;
+ font-size: 15px;
+ line-height: 30px;
+ position: absolute;
+ color: #666;
+ background: #d2d6de;
+ border-radius: 50%;
+ text-align: center;
+ left: 18px;
+ top: 0;
+}
+
+.timeline > .time-label > span {
+ font-weight: 600;
+ padding: 5px;
+ display: inline-block;
+ background-color: #fff;
+ border-radius: 4px;
+}
+
+.timeline-inverse > li > .timeline-item {
+ background: #f0f0f0;
+ border: 1px solid #ddd;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.timeline-inverse > li > .timeline-item > .timeline-header {
+ border-bottom-color: #ddd;
+}
+
+/*
+ * Component: Button
+ * -----------------
+ */
+.btn {
+ border-radius: 3px;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 1px solid transparent;
+}
+
+.btn.uppercase {
+ text-transform: uppercase;
+}
+
+.btn.btn-flat {
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ border-width: 1px;
+}
+
+.btn:active {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn:focus {
+ outline: none;
+}
+
+.btn.btn-file {
+ position: relative;
+ overflow: hidden;
+}
+
+.btn.btn-file > input[type='file'] {
+ position: absolute;
+ top: 0;
+ right: 0;
+ min-width: 100%;
+ min-height: 100%;
+ font-size: 100px;
+ text-align: right;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ outline: none;
+ background: white;
+ cursor: inherit;
+ display: block;
+}
+
+.btn-default {
+ background-color: #f4f4f4;
+ color: #444;
+ border-color: #ddd;
+}
+
+.btn-default:hover,
+.btn-default:active,
+.btn-default.hover {
+ background-color: #e7e7e7;
+}
+
+.btn-primary {
+ background-color: #3c8dbc;
+ border-color: #367fa9;
+}
+
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.hover {
+ background-color: #367fa9;
+}
+
+.btn-success {
+ background-color: #00a65a;
+ border-color: #008d4c;
+}
+
+.btn-success:hover,
+.btn-success:active,
+.btn-success.hover {
+ background-color: #008d4c;
+}
+
+.btn-info {
+ background-color: #00c0ef;
+ border-color: #00acd6;
+}
+
+.btn-info:hover,
+.btn-info:active,
+.btn-info.hover {
+ background-color: #00acd6;
+}
+
+.btn-danger {
+ background-color: #dd4b39;
+ border-color: #d73925;
+}
+
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.hover {
+ background-color: #d73925;
+}
+
+.btn-warning {
+ background-color: #f39c12;
+ border-color: #e08e0b;
+}
+
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.hover {
+ background-color: #e08e0b;
+}
+
+.btn-outline {
+ border: 1px solid #fff;
+ background: transparent;
+ color: #fff;
+}
+
+.btn-outline:hover,
+.btn-outline:focus,
+.btn-outline:active {
+ color: rgba(255, 255, 255, 0.7);
+ border-color: rgba(255, 255, 255, 0.7);
+}
+
+.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn[class*='bg-']:hover {
+ -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
+}
+
+.btn-app {
+ border-radius: 3px;
+ position: relative;
+ padding: 15px 5px;
+ margin: 0 0 10px 10px;
+ min-width: 80px;
+ height: 60px;
+ text-align: center;
+ color: #666;
+ border: 1px solid #ddd;
+ background-color: #f4f4f4;
+ font-size: 12px;
+}
+
+.btn-app > .fa,
+.btn-app > .glyphicon,
+.btn-app > .ion {
+ font-size: 20px;
+ display: block;
+}
+
+.btn-app:hover {
+ background: #f4f4f4;
+ color: #444;
+ border-color: #aaa;
+}
+
+.btn-app:active,
+.btn-app:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-app > .badge {
+ position: absolute;
+ top: -3px;
+ right: -10px;
+ font-size: 10px;
+ font-weight: 400;
+}
+
+/*
+ * Component: Callout
+ * ------------------
+ */
+.callout {
+ border-radius: 3px;
+ margin: 0 0 20px 0;
+ padding: 15px 30px 15px 15px;
+ border-left: 5px solid #eee;
+}
+
+.callout a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+.callout a:hover {
+ color: #eee;
+}
+
+.callout h4 {
+ margin-top: 0;
+ font-weight: 600;
+}
+
+.callout p:last-child {
+ margin-bottom: 0;
+}
+
+.callout code,
+.callout .highlight {
+ background-color: #fff;
+}
+
+.callout.callout-danger {
+ border-color: #c23321;
+}
+
+.callout.callout-warning {
+ border-color: #c87f0a;
+}
+
+.callout.callout-info {
+ border-color: #0097bc;
+}
+
+.callout.callout-success {
+ border-color: #00733e;
+}
+
+/*
+ * Component: alert
+ * ----------------
+ */
+.alert {
+ border-radius: 3px;
+}
+
+.alert h4 {
+ font-weight: 600;
+}
+
+.alert .icon {
+ margin-right: 10px;
+}
+
+.alert .close {
+ color: #000;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+
+.alert .close:hover {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+.alert a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+.alert-success {
+ border-color: #008d4c;
+}
+
+.alert-danger,
+.alert-error {
+ border-color: #d73925;
+}
+
+.alert-warning {
+ border-color: #e08e0b;
+}
+
+.alert-info {
+ border-color: #00acd6;
+}
+
+/*
+ * Component: Nav
+ * --------------
+ */
+.nav > li > a:hover,
+.nav > li > a:active,
+.nav > li > a:focus {
+ color: #444;
+ background: #f7f7f7;
+}
+
+/* NAV PILLS */
+.nav-pills > li > a {
+ border-radius: 0;
+ border-top: 3px solid transparent;
+ color: #444;
+}
+
+.nav-pills > li > a > .fa,
+.nav-pills > li > a > .glyphicon,
+.nav-pills > li > a > .ion {
+ margin-right: 5px;
+}
+
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ border-top-color: #3c8dbc;
+}
+
+.nav-pills > li.active > a {
+ font-weight: 600;
+}
+
+/* NAV STACKED */
+.nav-stacked > li > a {
+ border-radius: 0;
+ border-top: 0;
+ border-left: 3px solid transparent;
+ color: #444;
+}
+
+.nav-stacked > li.active > a,
+.nav-stacked > li.active > a:hover {
+ background: transparent;
+ color: #444;
+ border-top: 0;
+ border-left-color: #3c8dbc;
+}
+
+.nav-stacked > li.header {
+ border-bottom: 1px solid #ddd;
+ color: #777;
+ margin-bottom: 10px;
+ padding: 5px 10px;
+ text-transform: uppercase;
+}
+
+/* NAV TABS */
+.nav-tabs-custom {
+ margin-bottom: 20px;
+ background: #fff;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+}
+
+.nav-tabs-custom > .nav-tabs {
+ margin: 0;
+ border-bottom-color: #f4f4f4;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.nav-tabs-custom > .nav-tabs > li {
+ border-top: 3px solid transparent;
+ margin-bottom: -2px;
+ margin-right: 5px;
+}
+
+.nav-tabs-custom > .nav-tabs > li > a {
+ color: #444;
+ border-radius: 0;
+}
+
+.nav-tabs-custom > .nav-tabs > li > a.text-muted {
+ color: #999;
+}
+
+.nav-tabs-custom > .nav-tabs > li > a,
+.nav-tabs-custom > .nav-tabs > li > a:hover {
+ background: transparent;
+ margin: 0;
+}
+
+.nav-tabs-custom > .nav-tabs > li > a:hover {
+ color: #999;
+}
+
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {
+ border-color: transparent;
+}
+
+.nav-tabs-custom > .nav-tabs > li.active {
+ border-top-color: #3c8dbc;
+}
+
+.nav-tabs-custom > .nav-tabs > li.active > a,
+.nav-tabs-custom > .nav-tabs > li.active:hover > a {
+ background-color: #fff;
+ color: #444;
+}
+
+.nav-tabs-custom > .nav-tabs > li.active > a {
+ border-top-color: transparent;
+ border-left-color: #f4f4f4;
+ border-right-color: #f4f4f4;
+}
+
+.nav-tabs-custom > .nav-tabs > li:first-of-type {
+ margin-left: 0;
+}
+
+.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a {
+ border-left-color: transparent;
+}
+
+.nav-tabs-custom > .nav-tabs.pull-right {
+ float: none !important;
+}
+
+.nav-tabs-custom > .nav-tabs.pull-right > li {
+ float: right;
+}
+
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type {
+ margin-right: 0;
+}
+
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a {
+ border-left-width: 1px;
+}
+
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {
+ border-left-color: #f4f4f4;
+ border-right-color: transparent;
+}
+
+.nav-tabs-custom > .nav-tabs > li.header {
+ line-height: 35px;
+ padding: 0 10px;
+ font-size: 20px;
+ color: #444;
+}
+
+.nav-tabs-custom > .nav-tabs > li.header > .fa,
+.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,
+.nav-tabs-custom > .nav-tabs > li.header > .ion {
+ margin-right: 5px;
+}
+
+.nav-tabs-custom > .tab-content {
+ background: #fff;
+ padding: 10px;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.nav-tabs-custom .dropdown.open > a:active,
+.nav-tabs-custom .dropdown.open > a:focus {
+ background: transparent;
+ color: #999;
+}
+
+.nav-tabs-custom.tab-primary > .nav-tabs > li.active {
+ border-top-color: #3c8dbc;
+}
+
+.nav-tabs-custom.tab-info > .nav-tabs > li.active {
+ border-top-color: #00c0ef;
+}
+
+.nav-tabs-custom.tab-danger > .nav-tabs > li.active {
+ border-top-color: #dd4b39;
+}
+
+.nav-tabs-custom.tab-warning > .nav-tabs > li.active {
+ border-top-color: #f39c12;
+}
+
+.nav-tabs-custom.tab-success > .nav-tabs > li.active {
+ border-top-color: #00a65a;
+}
+
+.nav-tabs-custom.tab-default > .nav-tabs > li.active {
+ border-top-color: #d2d6de;
+}
+
+/* PAGINATION */
+.pagination > li > a {
+ background: #fafafa;
+ color: #666;
+}
+
+.pagination.pagination-flat > li > a {
+ border-radius: 0 !important;
+}
+
+/*
+ * Component: Products List
+ * ------------------------
+ */
+.products-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.products-list > .item {
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ padding: 10px 0;
+ background: #fff;
+}
+
+.products-list > .item:before,
+.products-list > .item:after {
+ content: " ";
+ display: table;
+}
+
+.products-list > .item:after {
+ clear: both;
+}
+
+.products-list .product-img {
+ float: left;
+}
+
+.products-list .product-img img {
+ width: 50px;
+ height: 50px;
+}
+
+.products-list .product-info {
+ margin-left: 60px;
+}
+
+.products-list .product-title {
+ font-weight: 600;
+}
+
+.products-list .product-description {
+ display: block;
+ color: #999;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.product-list-in-box > .item {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border-radius: 0;
+ border-bottom: 1px solid #f4f4f4;
+}
+
+.product-list-in-box > .item:last-of-type {
+ border-bottom-width: 0;
+}
+
+/*
+ * Component: Table
+ * ----------------
+ */
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ border-top: 1px solid #f4f4f4;
+}
+
+.table > thead > tr > th {
+ border-bottom: 2px solid #f4f4f4;
+}
+
+.table tr td .progress {
+ margin-top: 5px;
+}
+
+.table-bordered {
+ border: 1px solid #f4f4f4;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #f4f4f4;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+
+.table.no-border,
+.table.no-border td,
+.table.no-border th {
+ border: 0;
+}
+
+/* .text-center in tables */
+table.text-center,
+table.text-center td,
+table.text-center th {
+ text-align: center;
+}
+
+.table.align th {
+ text-align: left;
+}
+
+.table.align td {
+ text-align: right;
+}
+
+/*
+ * Component: Label
+ * ----------------
+ */
+.label-default {
+ background-color: #d2d6de;
+ color: #444;
+}
+
+/*
+ * Component: Direct Chat
+ * ----------------------
+ */
+.direct-chat .box-body {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ position: relative;
+ overflow-x: hidden;
+ padding: 0;
+}
+
+.direct-chat.chat-pane-open .direct-chat-contacts {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+
+.direct-chat-messages {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+}
+
+.direct-chat-msg,
+.direct-chat-text {
+ display: block;
+}
+
+.direct-chat-msg {
+ margin-bottom: 10px;
+}
+
+.direct-chat-msg:before,
+.direct-chat-msg:after {
+ content: " ";
+ display: table;
+}
+
+.direct-chat-msg:after {
+ clear: both;
+}
+
+.direct-chat-messages,
+.direct-chat-contacts {
+ -webkit-transition: -webkit-transform 0.5s ease-in-out;
+ -moz-transition: -moz-transform 0.5s ease-in-out;
+ -o-transition: -o-transform 0.5s ease-in-out;
+ transition: transform 0.5s ease-in-out;
+}
+
+.direct-chat-text {
+ border-radius: 5px;
+ position: relative;
+ padding: 5px 10px;
+ background: #d2d6de;
+ border: 1px solid #d2d6de;
+ margin: 5px 0 0 50px;
+ color: #444444;
+}
+
+.direct-chat-text:after,
+.direct-chat-text:before {
+ position: absolute;
+ right: 100%;
+ top: 15px;
+ border: solid transparent;
+ border-right-color: #d2d6de;
+ content: ' ';
+ height: 0;
+ width: 0;
+ pointer-events: none;
+}
+
+.direct-chat-text:after {
+ border-width: 5px;
+ margin-top: -5px;
+}
+
+.direct-chat-text:before {
+ border-width: 6px;
+ margin-top: -6px;
+}
+
+.right .direct-chat-text {
+ margin-right: 50px;
+ margin-left: 0;
+}
+
+.right .direct-chat-text:after,
+.right .direct-chat-text:before {
+ right: auto;
+ left: 100%;
+ border-right-color: transparent;
+ border-left-color: #d2d6de;
+}
+
+.direct-chat-img {
+ border-radius: 50%;
+ float: left;
+ width: 40px;
+ height: 40px;
+}
+
+.right .direct-chat-img {
+ float: right;
+}
+
+.direct-chat-info {
+ display: block;
+ margin-bottom: 2px;
+ font-size: 12px;
+}
+
+.direct-chat-name {
+ font-weight: 600;
+}
+
+.direct-chat-timestamp {
+ color: #999;
+}
+
+.direct-chat-contacts-open .direct-chat-contacts {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+
+.direct-chat-contacts {
+ -webkit-transform: translate(101%, 0);
+ -ms-transform: translate(101%, 0);
+ -o-transform: translate(101%, 0);
+ transform: translate(101%, 0);
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ height: 250px;
+ width: 100%;
+ background: #222d32;
+ color: #fff;
+ overflow: auto;
+}
+
+.contacts-list > li {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+ padding: 10px;
+ margin: 0;
+}
+
+.contacts-list > li:before,
+.contacts-list > li:after {
+ content: " ";
+ display: table;
+}
+
+.contacts-list > li:after {
+ clear: both;
+}
+
+.contacts-list > li:last-of-type {
+ border-bottom: none;
+}
+
+.contacts-list-img {
+ border-radius: 50%;
+ width: 40px;
+ float: left;
+}
+
+.contacts-list-info {
+ margin-left: 45px;
+ color: #fff;
+}
+
+.contacts-list-name,
+.contacts-list-status {
+ display: block;
+}
+
+.contacts-list-name {
+ font-weight: 600;
+}
+
+.contacts-list-status {
+ font-size: 12px;
+}
+
+.contacts-list-date {
+ color: #aaa;
+ font-weight: normal;
+}
+
+.contacts-list-msg {
+ color: #999;
+}
+
+.direct-chat-danger .right > .direct-chat-text {
+ background: #dd4b39;
+ border-color: #dd4b39;
+ color: #ffffff;
+}
+
+.direct-chat-danger .right > .direct-chat-text:after,
+.direct-chat-danger .right > .direct-chat-text:before {
+ border-left-color: #dd4b39;
+}
+
+.direct-chat-primary .right > .direct-chat-text {
+ background: #3c8dbc;
+ border-color: #3c8dbc;
+ color: #ffffff;
+}
+
+.direct-chat-primary .right > .direct-chat-text:after,
+.direct-chat-primary .right > .direct-chat-text:before {
+ border-left-color: #3c8dbc;
+}
+
+.direct-chat-warning .right > .direct-chat-text {
+ background: #f39c12;
+ border-color: #f39c12;
+ color: #ffffff;
+}
+
+.direct-chat-warning .right > .direct-chat-text:after,
+.direct-chat-warning .right > .direct-chat-text:before {
+ border-left-color: #f39c12;
+}
+
+.direct-chat-info .right > .direct-chat-text {
+ background: #00c0ef;
+ border-color: #00c0ef;
+ color: #ffffff;
+}
+
+.direct-chat-info .right > .direct-chat-text:after,
+.direct-chat-info .right > .direct-chat-text:before {
+ border-left-color: #00c0ef;
+}
+
+.direct-chat-success .right > .direct-chat-text {
+ background: #00a65a;
+ border-color: #00a65a;
+ color: #ffffff;
+}
+
+.direct-chat-success .right > .direct-chat-text:after,
+.direct-chat-success .right > .direct-chat-text:before {
+ border-left-color: #00a65a;
+}
+
+/*
+ * Component: Users List
+ * ---------------------
+ */
+.users-list > li {
+ width: 25%;
+ float: left;
+ padding: 10px;
+ text-align: center;
+}
+
+.users-list > li img {
+ border-radius: 50%;
+ max-width: 100%;
+ height: auto;
+}
+
+.users-list > li > a:hover,
+.users-list > li > a:hover .users-list-name {
+ color: #999;
+}
+
+.users-list-name,
+.users-list-date {
+ display: block;
+}
+
+.users-list-name {
+ font-weight: 600;
+ color: #444;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.users-list-date {
+ color: #999;
+ font-size: 12px;
+}
+
+/*
+ * Component: Carousel
+ * -------------------
+ */
+.carousel-control.left,
+.carousel-control.right {
+ background-image: none;
+}
+
+.carousel-control > .fa {
+ font-size: 40px;
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+ margin-top: -20px;
+}
+
+/*
+ * Component: modal
+ * ----------------
+ */
+.modal {
+ background: rgba(0, 0, 0, 0.3);
+}
+
+.modal-content {
+ border-radius: 0;
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ border: 0;
+}
+
+@media (min-width: 768px) {
+ .modal-content {
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ }
+}
+
+.modal-header {
+ border-bottom-color: #f4f4f4;
+}
+
+.modal-footer {
+ border-top-color: #f4f4f4;
+}
+
+.modal-primary .modal-header,
+.modal-primary .modal-footer {
+ border-color: #307095;
+}
+
+.modal-warning .modal-header,
+.modal-warning .modal-footer {
+ border-color: #c87f0a;
+}
+
+.modal-info .modal-header,
+.modal-info .modal-footer {
+ border-color: #0097bc;
+}
+
+.modal-success .modal-header,
+.modal-success .modal-footer {
+ border-color: #00733e;
+}
+
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ border-color: #c23321;
+}
+
+/*
+ * Component: Social Widgets
+ * -------------------------
+ */
+.box-widget {
+ border: none;
+ position: relative;
+}
+
+.widget-user .widget-user-header {
+ padding: 20px;
+ height: 120px;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.widget-user .widget-user-username {
+ margin-top: 0;
+ margin-bottom: 5px;
+ font-size: 25px;
+ font-weight: 300;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
+}
+
+.widget-user .widget-user-desc {
+ margin-top: 0;
+}
+
+.widget-user .widget-user-image {
+ position: absolute;
+ top: 65px;
+ left: 50%;
+ margin-left: -45px;
+}
+
+.widget-user .widget-user-image > img {
+ width: 90px;
+ height: auto;
+ border: 3px solid #fff;
+}
+
+.widget-user .box-footer {
+ padding-top: 30px;
+}
+
+.widget-user-2 .widget-user-header {
+ padding: 20px;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.widget-user-2 .widget-user-username {
+ margin-top: 5px;
+ margin-bottom: 5px;
+ font-size: 25px;
+ font-weight: 300;
+}
+
+.widget-user-2 .widget-user-desc {
+ margin-top: 0;
+}
+
+.widget-user-2 .widget-user-username,
+.widget-user-2 .widget-user-desc {
+ margin-left: 75px;
+}
+
+.widget-user-2 .widget-user-image > img {
+ width: 65px;
+ height: auto;
+ float: left;
+}
+
+/*
+ * Page: Mailbox
+ * -------------
+ */
+.mailbox-messages > .table {
+ margin: 0;
+}
+
+.mailbox-controls {
+ padding: 5px;
+}
+
+.mailbox-controls.with-border {
+ border-bottom: 1px solid #f4f4f4;
+}
+
+.mailbox-read-info {
+ border-bottom: 1px solid #f4f4f4;
+ padding: 10px;
+}
+
+.mailbox-read-info h3 {
+ font-size: 20px;
+ margin: 0;
+}
+
+.mailbox-read-info h5 {
+ margin: 0;
+ padding: 5px 0 0 0;
+}
+
+.mailbox-read-time {
+ color: #999;
+ font-size: 13px;
+}
+
+.mailbox-read-message {
+ padding: 10px;
+}
+
+.mailbox-attachments li {
+ float: left;
+ width: 200px;
+ border: 1px solid #eee;
+ margin-bottom: 10px;
+ margin-right: 10px;
+}
+
+.mailbox-attachment-name {
+ font-weight: bold;
+ color: #666;
+}
+
+.mailbox-attachment-icon,
+.mailbox-attachment-info,
+.mailbox-attachment-size {
+ display: block;
+}
+
+.mailbox-attachment-info {
+ padding: 10px;
+ background: #f4f4f4;
+}
+
+.mailbox-attachment-size {
+ color: #999;
+ font-size: 12px;
+}
+
+.mailbox-attachment-icon {
+ text-align: center;
+ font-size: 65px;
+ color: #666;
+ padding: 20px 10px;
+}
+
+.mailbox-attachment-icon.has-img {
+ padding: 0;
+}
+
+.mailbox-attachment-icon.has-img > img {
+ max-width: 100%;
+ height: auto;
+}
+
+/*
+ * Page: Lock Screen
+ * -----------------
+ */
+/* ADD THIS CLASS TO THE <BODY> TAG */
+.lockscreen {
+ background: #d2d6de;
+}
+
+.lockscreen-logo {
+ font-size: 35px;
+ text-align: center;
+ margin-bottom: 25px;
+ font-weight: 300;
+}
+
+.lockscreen-logo a {
+ color: #444;
+}
+
+.lockscreen-wrapper {
+ max-width: 400px;
+ margin: 0 auto;
+ margin-top: 10%;
+}
+
+/* User name [optional] */
+.lockscreen .lockscreen-name {
+ text-align: center;
+ font-weight: 600;
+}
+
+/* Will contain the image and the sign in form */
+.lockscreen-item {
+ border-radius: 4px;
+ padding: 0;
+ background: #fff;
+ position: relative;
+ margin: 10px auto 30px auto;
+ width: 290px;
+}
+
+/* User image */
+.lockscreen-image {
+ border-radius: 50%;
+ position: absolute;
+ left: -10px;
+ top: -25px;
+ background: #fff;
+ padding: 5px;
+ z-index: 10;
+}
+
+.lockscreen-image > img {
+ border-radius: 50%;
+ width: 70px;
+ height: 70px;
+}
+
+/* Contains the password input and the login button */
+.lockscreen-credentials {
+ margin-left: 70px;
+}
+
+.lockscreen-credentials .form-control {
+ border: 0;
+}
+
+.lockscreen-credentials .btn {
+ background-color: #fff;
+ border: 0;
+ padding: 0 10px;
+}
+
+.lockscreen-footer {
+ margin-top: 10px;
+}
+
+/*
+ * Page: Login & Register
+ * ----------------------
+ */
+.login-logo,
+.register-logo {
+ font-size: 35px;
+ text-align: center;
+ margin-bottom: 25px;
+ font-weight: 300;
+}
+
+.login-logo a,
+.register-logo a {
+ color: #444;
+}
+
+.login-page,
+.register-page {
+ background: #d2d6de;
+}
+
+.login-box,
+.register-box {
+ width: 360px;
+ margin: 7% auto;
+}
+
+@media (max-width: 768px) {
+ .login-box,
+ .register-box {
+ width: 90%;
+ margin-top: 20px;
+ }
+}
+
+.login-box-body,
+.register-box-body {
+ background: #fff;
+ padding: 20px;
+ border-top: 0;
+ color: #666;
+}
+
+.login-box-body .form-control-feedback,
+.register-box-body .form-control-feedback {
+ color: #777;
+}
+
+.login-box-msg,
+.register-box-msg {
+ margin: 0;
+ text-align: center;
+ padding: 0 20px 20px 20px;
+}
+
+.social-auth-links {
+ margin: 10px 0;
+}
+
+/*
+ * Page: 400 and 500 error pages
+ * ------------------------------
+ */
+.error-page {
+ width: 600px;
+ margin: 20px auto 0 auto;
+}
+
+@media (max-width: 991px) {
+ .error-page {
+ width: 100%;
+ }
+}
+
+.error-page > .headline {
+ float: left;
+ font-size: 100px;
+ font-weight: 300;
+}
+
+@media (max-width: 991px) {
+ .error-page > .headline {
+ float: none;
+ text-align: center;
+ }
+}
+
+.error-page > .error-content {
+ margin-left: 190px;
+ display: block;
+}
+
+@media (max-width: 991px) {
+ .error-page > .error-content {
+ margin-left: 0;
+ }
+}
+
+.error-page > .error-content > h3 {
+ font-weight: 300;
+ font-size: 25px;
+}
+
+@media (max-width: 991px) {
+ .error-page > .error-content > h3 {
+ text-align: center;
+ }
+}
+
+/*
+ * Page: Invoice
+ * -------------
+ */
+.invoice {
+ position: relative;
+ background: #fff;
+ border: 1px solid #f4f4f4;
+ padding: 20px;
+ margin: 10px 25px;
+}
+
+.invoice-title {
+ margin-top: 0;
+}
+
+/*
+ * Page: Profile
+ * -------------
+ */
+.profile-user-img {
+ margin: 0 auto;
+ width: 100px;
+ padding: 3px;
+ border: 3px solid #d2d6de;
+}
+
+.profile-username {
+ font-size: 21px;
+ margin-top: 5px;
+}
+
+.post {
+ border-bottom: 1px solid #d2d6de;
+ margin-bottom: 15px;
+ padding-bottom: 15px;
+ color: #666;
+}
+
+.post:last-of-type {
+ border-bottom: 0;
+ margin-bottom: 0;
+ padding-bottom: 0;
+}
+
+.post .user-block {
+ margin-bottom: 15px;
+}
+
+/*
+ * Social Buttons for Bootstrap
+ *
+ * Copyright 2013-2015 Panayiotis Lipiridis
+ * Licensed under the MIT License
+ *
+ * https://github.com/lipis/bootstrap-social
+ */
+.btn-social {
+ position: relative;
+ padding-left: 44px;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.btn-social > :first-child {
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 32px;
+ line-height: 34px;
+ font-size: 1.6em;
+ text-align: center;
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+}
+
+.btn-social.btn-lg {
+ padding-left: 61px;
+}
+
+.btn-social.btn-lg > :first-child {
+ line-height: 45px;
+ width: 45px;
+ font-size: 1.8em;
+}
+
+.btn-social.btn-sm {
+ padding-left: 38px;
+}
+
+.btn-social.btn-sm > :first-child {
+ line-height: 28px;
+ width: 28px;
+ font-size: 1.4em;
+}
+
+.btn-social.btn-xs {
+ padding-left: 30px;
+}
+
+.btn-social.btn-xs > :first-child {
+ line-height: 20px;
+ width: 20px;
+ font-size: 1.2em;
+}
+
+.btn-social-icon {
+ position: relative;
+ padding-left: 44px;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 34px;
+ width: 34px;
+ padding: 0;
+}
+
+.btn-social-icon > :first-child {
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 32px;
+ line-height: 34px;
+ font-size: 1.6em;
+ text-align: center;
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+}
+
+.btn-social-icon.btn-lg {
+ padding-left: 61px;
+}
+
+.btn-social-icon.btn-lg > :first-child {
+ line-height: 45px;
+ width: 45px;
+ font-size: 1.8em;
+}
+
+.btn-social-icon.btn-sm {
+ padding-left: 38px;
+}
+
+.btn-social-icon.btn-sm > :first-child {
+ line-height: 28px;
+ width: 28px;
+ font-size: 1.4em;
+}
+
+.btn-social-icon.btn-xs {
+ padding-left: 30px;
+}
+
+.btn-social-icon.btn-xs > :first-child {
+ line-height: 20px;
+ width: 20px;
+ font-size: 1.2em;
+}
+
+.btn-social-icon > :first-child {
+ border: none;
+ text-align: center;
+ width: 100%;
+}
+
+.btn-social-icon.btn-lg {
+ height: 45px;
+ width: 45px;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.btn-social-icon.btn-sm {
+ height: 30px;
+ width: 30px;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.btn-social-icon.btn-xs {
+ height: 22px;
+ width: 22px;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.btn-adn {
+ color: #ffffff;
+ background-color: #d87a68;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-adn:focus,
+.btn-adn.focus {
+ color: #ffffff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-adn:hover {
+ color: #ffffff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-adn:active,
+.btn-adn.active,
+.open > .dropdown-toggle.btn-adn {
+ color: #ffffff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-adn:active,
+.btn-adn.active,
+.open > .dropdown-toggle.btn-adn {
+ background-image: none;
+}
+
+.btn-adn .badge {
+ color: #d87a68;
+ background-color: #ffffff;
+}
+
+.btn-bitbucket {
+ color: #ffffff;
+ background-color: #205081;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-bitbucket:focus,
+.btn-bitbucket.focus {
+ color: #ffffff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-bitbucket:hover {
+ color: #ffffff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-bitbucket:active,
+.btn-bitbucket.active,
+.open > .dropdown-toggle.btn-bitbucket {
+ color: #ffffff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-bitbucket:active,
+.btn-bitbucket.active,
+.open > .dropdown-toggle.btn-bitbucket {
+ background-image: none;
+}
+
+.btn-bitbucket .badge {
+ color: #205081;
+ background-color: #ffffff;
+}
+
+.btn-dropbox {
+ color: #ffffff;
+ background-color: #1087dd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-dropbox:focus,
+.btn-dropbox.focus {
+ color: #ffffff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-dropbox:hover {
+ color: #ffffff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-dropbox:active,
+.btn-dropbox.active,
+.open > .dropdown-toggle.btn-dropbox {
+ color: #ffffff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-dropbox:active,
+.btn-dropbox.active,
+.open > .dropdown-toggle.btn-dropbox {
+ background-image: none;
+}
+
+.btn-dropbox .badge {
+ color: #1087dd;
+ background-color: #ffffff;
+}
+
+.btn-facebook {
+ color: #ffffff;
+ background-color: #3b5998;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-facebook:focus,
+.btn-facebook.focus {
+ color: #ffffff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-facebook:hover {
+ color: #ffffff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-facebook:active,
+.btn-facebook.active,
+.open > .dropdown-toggle.btn-facebook {
+ color: #ffffff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-facebook:active,
+.btn-facebook.active,
+.open > .dropdown-toggle.btn-facebook {
+ background-image: none;
+}
+
+.btn-facebook .badge {
+ color: #3b5998;
+ background-color: #ffffff;
+}
+
+.btn-flickr {
+ color: #ffffff;
+ background-color: #ff0084;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-flickr:focus,
+.btn-flickr.focus {
+ color: #ffffff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-flickr:hover {
+ color: #ffffff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-flickr:active,
+.btn-flickr.active,
+.open > .dropdown-toggle.btn-flickr {
+ color: #ffffff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-flickr:active,
+.btn-flickr.active,
+.open > .dropdown-toggle.btn-flickr {
+ background-image: none;
+}
+
+.btn-flickr .badge {
+ color: #ff0084;
+ background-color: #ffffff;
+}
+
+.btn-foursquare {
+ color: #ffffff;
+ background-color: #f94877;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-foursquare:focus,
+.btn-foursquare.focus {
+ color: #ffffff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-foursquare:hover {
+ color: #ffffff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-foursquare:active,
+.btn-foursquare.active,
+.open > .dropdown-toggle.btn-foursquare {
+ color: #ffffff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-foursquare:active,
+.btn-foursquare.active,
+.open > .dropdown-toggle.btn-foursquare {
+ background-image: none;
+}
+
+.btn-foursquare .badge {
+ color: #f94877;
+ background-color: #ffffff;
+}
+
+.btn-github {
+ color: #ffffff;
+ background-color: #444444;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-github:focus,
+.btn-github.focus {
+ color: #ffffff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-github:hover {
+ color: #ffffff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-github:active,
+.btn-github.active,
+.open > .dropdown-toggle.btn-github {
+ color: #ffffff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-github:active,
+.btn-github.active,
+.open > .dropdown-toggle.btn-github {
+ background-image: none;
+}
+
+.btn-github .badge {
+ color: #444444;
+ background-color: #ffffff;
+}
+
+.btn-google {
+ color: #ffffff;
+ background-color: #dd4b39;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-google:focus,
+.btn-google.focus {
+ color: #ffffff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-google:hover {
+ color: #ffffff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-google:active,
+.btn-google.active,
+.open > .dropdown-toggle.btn-google {
+ color: #ffffff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-google:active,
+.btn-google.active,
+.open > .dropdown-toggle.btn-google {
+ background-image: none;
+}
+
+.btn-google .badge {
+ color: #dd4b39;
+ background-color: #ffffff;
+}
+
+.btn-instagram {
+ color: #ffffff;
+ background-color: #3f729b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-instagram:focus,
+.btn-instagram.focus {
+ color: #ffffff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-instagram:hover {
+ color: #ffffff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-instagram:active,
+.btn-instagram.active,
+.open > .dropdown-toggle.btn-instagram {
+ color: #ffffff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-instagram:active,
+.btn-instagram.active,
+.open > .dropdown-toggle.btn-instagram {
+ background-image: none;
+}
+
+.btn-instagram .badge {
+ color: #3f729b;
+ background-color: #ffffff;
+}
+
+.btn-linkedin {
+ color: #ffffff;
+ background-color: #007bb6;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-linkedin:focus,
+.btn-linkedin.focus {
+ color: #ffffff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-linkedin:hover {
+ color: #ffffff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-linkedin:active,
+.btn-linkedin.active,
+.open > .dropdown-toggle.btn-linkedin {
+ color: #ffffff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-linkedin:active,
+.btn-linkedin.active,
+.open > .dropdown-toggle.btn-linkedin {
+ background-image: none;
+}
+
+.btn-linkedin .badge {
+ color: #007bb6;
+ background-color: #ffffff;
+}
+
+.btn-microsoft {
+ color: #ffffff;
+ background-color: #2672ec;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-microsoft:focus,
+.btn-microsoft.focus {
+ color: #ffffff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-microsoft:hover {
+ color: #ffffff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-microsoft:active,
+.btn-microsoft.active,
+.open > .dropdown-toggle.btn-microsoft {
+ color: #ffffff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-microsoft:active,
+.btn-microsoft.active,
+.open > .dropdown-toggle.btn-microsoft {
+ background-image: none;
+}
+
+.btn-microsoft .badge {
+ color: #2672ec;
+ background-color: #ffffff;
+}
+
+.btn-openid {
+ color: #ffffff;
+ background-color: #f7931e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-openid:focus,
+.btn-openid.focus {
+ color: #ffffff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-openid:hover {
+ color: #ffffff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-openid:active,
+.btn-openid.active,
+.open > .dropdown-toggle.btn-openid {
+ color: #ffffff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-openid:active,
+.btn-openid.active,
+.open > .dropdown-toggle.btn-openid {
+ background-image: none;
+}
+
+.btn-openid .badge {
+ color: #f7931e;
+ background-color: #ffffff;
+}
+
+.btn-pinterest {
+ color: #ffffff;
+ background-color: #cb2027;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-pinterest:focus,
+.btn-pinterest.focus {
+ color: #ffffff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-pinterest:hover {
+ color: #ffffff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-pinterest:active,
+.btn-pinterest.active,
+.open > .dropdown-toggle.btn-pinterest {
+ color: #ffffff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-pinterest:active,
+.btn-pinterest.active,
+.open > .dropdown-toggle.btn-pinterest {
+ background-image: none;
+}
+
+.btn-pinterest .badge {
+ color: #cb2027;
+ background-color: #ffffff;
+}
+
+.btn-reddit {
+ color: #000000;
+ background-color: #eff7ff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-reddit:focus,
+.btn-reddit.focus {
+ color: #000000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-reddit:hover {
+ color: #000000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-reddit:active,
+.btn-reddit.active,
+.open > .dropdown-toggle.btn-reddit {
+ color: #000000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-reddit:active,
+.btn-reddit.active,
+.open > .dropdown-toggle.btn-reddit {
+ background-image: none;
+}
+
+.btn-reddit .badge {
+ color: #eff7ff;
+ background-color: #000000;
+}
+
+.btn-soundcloud {
+ color: #ffffff;
+ background-color: #ff5500;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-soundcloud:focus,
+.btn-soundcloud.focus {
+ color: #ffffff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-soundcloud:hover {
+ color: #ffffff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-soundcloud:active,
+.btn-soundcloud.active,
+.open > .dropdown-toggle.btn-soundcloud {
+ color: #ffffff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-soundcloud:active,
+.btn-soundcloud.active,
+.open > .dropdown-toggle.btn-soundcloud {
+ background-image: none;
+}
+
+.btn-soundcloud .badge {
+ color: #ff5500;
+ background-color: #ffffff;
+}
+
+.btn-tumblr {
+ color: #ffffff;
+ background-color: #2c4762;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-tumblr:focus,
+.btn-tumblr.focus {
+ color: #ffffff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-tumblr:hover {
+ color: #ffffff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-tumblr:active,
+.btn-tumblr.active,
+.open > .dropdown-toggle.btn-tumblr {
+ color: #ffffff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-tumblr:active,
+.btn-tumblr.active,
+.open > .dropdown-toggle.btn-tumblr {
+ background-image: none;
+}
+
+.btn-tumblr .badge {
+ color: #2c4762;
+ background-color: #ffffff;
+}
+
+.btn-twitter {
+ color: #ffffff;
+ background-color: #55acee;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-twitter:focus,
+.btn-twitter.focus {
+ color: #ffffff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-twitter:hover {
+ color: #ffffff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-twitter:active,
+.btn-twitter.active,
+.open > .dropdown-toggle.btn-twitter {
+ color: #ffffff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-twitter:active,
+.btn-twitter.active,
+.open > .dropdown-toggle.btn-twitter {
+ background-image: none;
+}
+
+.btn-twitter .badge {
+ color: #55acee;
+ background-color: #ffffff;
+}
+
+.btn-vimeo {
+ color: #ffffff;
+ background-color: #1ab7ea;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vimeo:focus,
+.btn-vimeo.focus {
+ color: #ffffff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vimeo:hover {
+ color: #ffffff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vimeo:active,
+.btn-vimeo.active,
+.open > .dropdown-toggle.btn-vimeo {
+ color: #ffffff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vimeo:active,
+.btn-vimeo.active,
+.open > .dropdown-toggle.btn-vimeo {
+ background-image: none;
+}
+
+.btn-vimeo .badge {
+ color: #1ab7ea;
+ background-color: #ffffff;
+}
+
+.btn-vk {
+ color: #ffffff;
+ background-color: #587ea3;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vk:focus,
+.btn-vk.focus {
+ color: #ffffff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vk:hover {
+ color: #ffffff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vk:active,
+.btn-vk.active,
+.open > .dropdown-toggle.btn-vk {
+ color: #ffffff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-vk:active,
+.btn-vk.active,
+.open > .dropdown-toggle.btn-vk {
+ background-image: none;
+}
+
+.btn-vk .badge {
+ color: #587ea3;
+ background-color: #ffffff;
+}
+
+.btn-yahoo {
+ color: #ffffff;
+ background-color: #720e9e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-yahoo:focus,
+.btn-yahoo.focus {
+ color: #ffffff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-yahoo:hover {
+ color: #ffffff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-yahoo:active,
+.btn-yahoo.active,
+.open > .dropdown-toggle.btn-yahoo {
+ color: #ffffff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-yahoo:active,
+.btn-yahoo.active,
+.open > .dropdown-toggle.btn-yahoo {
+ background-image: none;
+}
+
+.btn-yahoo .badge {
+ color: #720e9e;
+ background-color: #ffffff;
+}
+
+/*
+ * Plugin: Full Calendar
+ * ---------------------
+ */
+.fc-button {
+ background: #f4f4f4;
+ background-image: none;
+ color: #444;
+ border-color: #ddd;
+ border-bottom-color: #ddd;
+}
+
+.fc-button:hover,
+.fc-button:active,
+.fc-button.hover {
+ background-color: #e9e9e9;
+}
+
+.fc-header-title h2 {
+ font-size: 15px;
+ line-height: 1.6em;
+ color: #666;
+ margin-left: 10px;
+}
+
+.fc-header-right {
+ padding-right: 10px;
+}
+
+.fc-header-left {
+ padding-left: 10px;
+}
+
+.fc-widget-header {
+ background: #fafafa;
+}
+
+.fc-grid {
+ width: 100%;
+ border: 0;
+}
+
+.fc-widget-header:first-of-type,
+.fc-widget-content:first-of-type {
+ border-left: 0;
+ border-right: 0;
+}
+
+.fc-widget-header:last-of-type,
+.fc-widget-content:last-of-type {
+ border-right: 0;
+}
+
+.fc-toolbar {
+ padding: 10px;
+ margin: 0;
+}
+
+.fc-day-number {
+ font-size: 20px;
+ font-weight: 300;
+ padding-right: 10px;
+}
+
+.fc-color-picker {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.fc-color-picker > li {
+ float: left;
+ font-size: 30px;
+ margin-right: 5px;
+ line-height: 30px;
+}
+
+.fc-color-picker > li .fa {
+ -webkit-transition: -webkit-transform linear 0.3s;
+ -moz-transition: -moz-transform linear 0.3s;
+ -o-transition: -o-transform linear 0.3s;
+ transition: transform linear 0.3s;
+}
+
+.fc-color-picker > li .fa:hover {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ -o-transform: rotate(30deg);
+ transform: rotate(30deg);
+}
+
+#add-new-event {
+ -webkit-transition: all linear 0.3s;
+ -o-transition: all linear 0.3s;
+ transition: all linear 0.3s;
+}
+
+.external-event {
+ padding: 5px 10px;
+ font-weight: bold;
+ margin-bottom: 4px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+ cursor: move;
+}
+
+.external-event:hover {
+ box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);
+}
+
+/*
+ * Plugin: Select2
+ * ---------------
+ */
+.select2-container--default.select2-container--focus,
+.select2-selection.select2-container--focus,
+.select2-container--default:focus,
+.select2-selection:focus,
+.select2-container--default:active,
+.select2-selection:active {
+ outline: none;
+}
+
+.select2-container--default .select2-selection--single,
+.select2-selection .select2-selection--single {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+ padding: 6px 12px;
+ height: 34px;
+}
+
+.select2-container--default.select2-container--open {
+ border-color: #3c8dbc;
+}
+
+.select2-dropdown {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+ background-color: #3c8dbc;
+ color: white;
+}
+
+.select2-results__option {
+ padding: 6px 12px;
+ user-select: none;
+ -webkit-user-select: none;
+}
+
+.select2-container .select2-selection--single .select2-selection__rendered {
+ padding-left: 0;
+ padding-right: 0;
+ height: auto;
+ margin-top: -4px;
+}
+
+.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
+ padding-right: 6px;
+ padding-left: 20px;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__arrow {
+ height: 28px;
+ right: 3px;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__arrow b {
+ margin-top: 0;
+}
+
+.select2-dropdown .select2-search__field,
+.select2-search--inline .select2-search__field {
+ border: 1px solid #d2d6de;
+}
+
+.select2-dropdown .select2-search__field:focus,
+.select2-search--inline .select2-search__field:focus {
+ outline: none;
+ border: 1px solid #3c8dbc;
+}
+
+.select2-container--default .select2-results__option[aria-disabled=true] {
+ color: #999;
+}
+
+.select2-container--default .select2-results__option[aria-selected=true] {
+ background-color: #ddd;
+}
+
+.select2-container--default .select2-results__option[aria-selected=true],
+.select2-container--default .select2-results__option[aria-selected=true]:hover {
+ color: #444;
+}
+
+.select2-container--default .select2-selection--multiple {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+}
+
+.select2-container--default .select2-selection--multiple:focus {
+ border-color: #3c8dbc;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+ border-color: #d2d6de;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice {
+ background-color: #3c8dbc;
+ border-color: #367fa9;
+ padding: 1px 10px;
+ color: #fff;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
+ margin-right: 5px;
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
+ color: #fff;
+}
+
+.select2-container .select2-selection--single .select2-selection__rendered {
+ padding-right: 10px;
+}
+
+/*
+ * General: Miscellaneous
+ * ----------------------
+ */
+.pad {
+ padding: 10px;
+}
+
+.margin {
+ margin: 10px;
+}
+
+.margin-bottom {
+ margin-bottom: 20px;
+}
+
+.margin-bottom-none {
+ margin-bottom: 0;
+}
+
+.margin-r-5 {
+ margin-right: 5px;
+}
+
+.inline {
+ display: inline;
+}
+
+.description-block {
+ display: block;
+ margin: 10px 0;
+ text-align: center;
+}
+
+.description-block.margin-bottom {
+ margin-bottom: 25px;
+}
+
+.description-block > .description-header {
+ margin: 0;
+ padding: 0;
+ font-weight: 600;
+ font-size: 16px;
+}
+
+.description-block > .description-text {
+ text-transform: uppercase;
+}
+
+.bg-red,
+.bg-yellow,
+.bg-aqua,
+.bg-blue,
+.bg-light-blue,
+.bg-green,
+.bg-navy,
+.bg-teal,
+.bg-olive,
+.bg-lime,
+.bg-orange,
+.bg-fuchsia,
+.bg-purple,
+.bg-maroon,
+.bg-black,
+.bg-red-active,
+.bg-yellow-active,
+.bg-aqua-active,
+.bg-blue-active,
+.bg-light-blue-active,
+.bg-green-active,
+.bg-navy-active,
+.bg-teal-active,
+.bg-olive-active,
+.bg-lime-active,
+.bg-orange-active,
+.bg-fuchsia-active,
+.bg-purple-active,
+.bg-maroon-active,
+.bg-black-active,
+.callout.callout-danger,
+.callout.callout-warning,
+.callout.callout-info,
+.callout.callout-success,
+.alert-success,
+.alert-danger,
+.alert-error,
+.alert-warning,
+.alert-info,
+.label-danger,
+.label-info,
+.label-warning,
+.label-primary,
+.label-success,
+.modal-primary .modal-body,
+.modal-primary .modal-header,
+.modal-primary .modal-footer,
+.modal-warning .modal-body,
+.modal-warning .modal-header,
+.modal-warning .modal-footer,
+.modal-info .modal-body,
+.modal-info .modal-header,
+.modal-info .modal-footer,
+.modal-success .modal-body,
+.modal-success .modal-header,
+.modal-success .modal-footer,
+.modal-danger .modal-body,
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ color: #fff !important;
+}
+
+.bg-gray {
+ color: #000;
+ background-color: #d2d6de !important;
+}
+
+.bg-gray-light {
+ background-color: #f7f7f7;
+}
+
+.bg-black {
+ background-color: #111111 !important;
+}
+
+.bg-red,
+.callout.callout-danger,
+.alert-danger,
+.alert-error,
+.label-danger,
+.modal-danger .modal-body {
+ background-color: #dd4b39 !important;
+}
+
+.bg-yellow,
+.callout.callout-warning,
+.alert-warning,
+.label-warning,
+.modal-warning .modal-body {
+ background-color: #f39c12 !important;
+}
+
+.bg-aqua,
+.callout.callout-info,
+.alert-info,
+.label-info,
+.modal-info .modal-body {
+ background-color: #00c0ef !important;
+}
+
+.bg-blue {
+ background-color: #0073b7 !important;
+}
+
+.bg-light-blue,
+.label-primary,
+.modal-primary .modal-body {
+ background-color: #3c8dbc !important;
+}
+
+.bg-green,
+.callout.callout-success,
+.alert-success,
+.label-success,
+.modal-success .modal-body {
+ background-color: #00a65a !important;
+}
+
+.bg-navy {
+ background-color: #001f3f !important;
+}
+
+.bg-teal {
+ background-color: #39cccc !important;
+}
+
+.bg-olive {
+ background-color: #3d9970 !important;
+}
+
+.bg-lime {
+ background-color: #01ff70 !important;
+}
+
+.bg-orange {
+ background-color: #ff851b !important;
+}
+
+.bg-fuchsia {
+ background-color: #f012be !important;
+}
+
+.bg-purple {
+ background-color: #605ca8 !important;
+}
+
+.bg-maroon {
+ background-color: #d81b60 !important;
+}
+
+.bg-gray-active {
+ color: #000;
+ background-color: #b5bbc8 !important;
+}
+
+.bg-black-active {
+ background-color: #000000 !important;
+}
+
+.bg-red-active,
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ background-color: #d33724 !important;
+}
+
+.bg-yellow-active,
+.modal-warning .modal-header,
+.modal-warning .modal-footer {
+ background-color: #db8b0b !important;
+}
+
+.bg-aqua-active,
+.modal-info .modal-header,
+.modal-info .modal-footer {
+ background-color: #00a7d0 !important;
+}
+
+.bg-blue-active {
+ background-color: #005384 !important;
+}
+
+.bg-light-blue-active,
+.modal-primary .modal-header,
+.modal-primary .modal-footer {
+ background-color: #357ca5 !important;
+}
+
+.bg-green-active,
+.modal-success .modal-header,
+.modal-success .modal-footer {
+ background-color: #008d4c !important;
+}
+
+.bg-navy-active {
+ background-color: #001a35 !important;
+}
+
+.bg-teal-active {
+ background-color: #30bbbb !important;
+}
+
+.bg-olive-active {
+ background-color: #368763 !important;
+}
+
+.bg-lime-active {
+ background-color: #00e765 !important;
+}
+
+.bg-orange-active {
+ background-color: #ff7701 !important;
+}
+
+.bg-fuchsia-active {
+ background-color: #db0ead !important;
+}
+
+.bg-purple-active {
+ background-color: #555299 !important;
+}
+
+.bg-maroon-active {
+ background-color: #ca195a !important;
+}
+
+[class^="bg-"].disabled {
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+}
+
+.text-red {
+ color: #dd4b39 !important;
+}
+
+.text-yellow {
+ color: #f39c12 !important;
+}
+
+.text-aqua {
+ color: #00c0ef !important;
+}
+
+.text-blue {
+ color: #0073b7 !important;
+}
+
+.text-black {
+ color: #111111 !important;
+}
+
+.text-light-blue {
+ color: #3c8dbc !important;
+}
+
+.text-green {
+ color: #00a65a !important;
+}
+
+.text-gray {
+ color: #d2d6de !important;
+}
+
+.text-navy {
+ color: #001f3f !important;
+}
+
+.text-teal {
+ color: #39cccc !important;
+}
+
+.text-olive {
+ color: #3d9970 !important;
+}
+
+.text-lime {
+ color: #01ff70 !important;
+}
+
+.text-orange {
+ color: #ff851b !important;
+}
+
+.text-fuchsia {
+ color: #f012be !important;
+}
+
+.text-purple {
+ color: #605ca8 !important;
+}
+
+.text-maroon {
+ color: #d81b60 !important;
+}
+
+.link-muted {
+ color: #7a869d;
+}
+
+.link-muted:hover,
+.link-muted:focus {
+ color: #606c84;
+}
+
+.link-black {
+ color: #666;
+}
+
+.link-black:hover,
+.link-black:focus {
+ color: #999;
+}
+
+.hide {
+ display: none !important;
+}
+
+.no-border {
+ border: 0 !important;
+}
+
+.no-padding {
+ padding: 0 !important;
+}
+
+.no-margin {
+ margin: 0 !important;
+}
+
+.no-shadow {
+ box-shadow: none !important;
+}
+
+.list-unstyled,
+.chart-legend,
+.contacts-list,
+.users-list,
+.mailbox-attachments {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.list-group-unbordered > .list-group-item {
+ border-left: 0;
+ border-right: 0;
+ border-radius: 0;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.flat {
+ border-radius: 0 !important;
+}
+
+.text-bold,
+.text-bold.table td,
+.text-bold.table th {
+ font-weight: 700;
+}
+
+.text-sm {
+ font-size: 12px;
+}
+
+.jqstooltip {
+ padding: 5px !important;
+ width: auto !important;
+ height: auto !important;
+}
+
+.bg-teal-gradient {
+ background: #39cccc !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important;
+ background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important;
+ background: -moz-linear-gradient(center bottom, #39cccc 0%, #7adddd 100%) !important;
+ background: -o-linear-gradient(#7adddd, #39cccc) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-light-blue-gradient {
+ background: #3c8dbc !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;
+ background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;
+ background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important;
+ background: -o-linear-gradient(#67a8ce, #3c8dbc) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-blue-gradient {
+ background: #0073b7 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;
+ background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important;
+ background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important;
+ background: -o-linear-gradient(#0089db, #0073b7) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-aqua-gradient {
+ background: #00c0ef !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;
+ background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;
+ background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important;
+ background: -o-linear-gradient(#14d1ff, #00c0ef) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-yellow-gradient {
+ background: #f39c12 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;
+ background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;
+ background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important;
+ background: -o-linear-gradient(#f7bc60, #f39c12) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-purple-gradient {
+ background: #605ca8 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;
+ background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important;
+ background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important;
+ background: -o-linear-gradient(#9491c4, #605ca8) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-green-gradient {
+ background: #00a65a !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;
+ background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;
+ background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important;
+ background: -o-linear-gradient(#00ca6d, #00a65a) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-red-gradient {
+ background: #dd4b39 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;
+ background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important;
+ background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important;
+ background: -o-linear-gradient(#e47365, #dd4b39) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-black-gradient {
+ background: #111111 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important;
+ background: -ms-linear-gradient(bottom, #111111, #2b2b2b) !important;
+ background: -moz-linear-gradient(center bottom, #111111 0%, #2b2b2b 100%) !important;
+ background: -o-linear-gradient(#2b2b2b, #111111) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;
+ color: #fff;
+}
+
+.bg-maroon-gradient {
+ background: #d81b60 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;
+ background: -ms-linear-gradient(bottom, #d81b60, #e73f7c) !important;
+ background: -moz-linear-gradient(center bottom, #d81b60 0%, #e73f7c 100%) !important;
+ background: -o-linear-gradient(#e73f7c, #d81b60) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;
+ color: #fff;
+}
+
+.description-block .description-icon {
+ font-size: 16px;
+}
+
+.no-pad-top {
+ padding-top: 0;
+}
+
+.position-static {
+ position: static !important;
+}
+
+.list-header {
+ font-size: 15px;
+ padding: 10px 4px;
+ font-weight: bold;
+ color: #666;
+}
+
+.list-seperator {
+ height: 1px;
+ background: #f4f4f4;
+ margin: 15px 0 9px 0;
+}
+
+.list-link > a {
+ padding: 4px;
+ color: #777;
+}
+
+.list-link > a:hover {
+ color: #222;
+}
+
+.font-light {
+ font-weight: 300;
+}
+
+.user-block:before,
+.user-block:after {
+ content: " ";
+ display: table;
+}
+
+.user-block:after {
+ clear: both;
+}
+
+.user-block img {
+ width: 40px;
+ height: 40px;
+ float: left;
+}
+
+.user-block .username,
+.user-block .description,
+.user-block .comment {
+ display: block;
+ margin-left: 50px;
+}
+
+.user-block .username {
+ font-size: 16px;
+ font-weight: 600;
+}
+
+.user-block .description {
+ color: #999;
+ font-size: 13px;
+}
+
+.user-block.user-block-sm .username,
+.user-block.user-block-sm .description,
+.user-block.user-block-sm .comment {
+ margin-left: 40px;
+}
+
+.user-block.user-block-sm .username {
+ font-size: 14px;
+}
+
+.img-sm,
+.img-md,
+.img-lg,
+.box-comments .box-comment img,
+.user-block.user-block-sm img {
+ float: left;
+}
+
+.img-sm,
+.box-comments .box-comment img,
+.user-block.user-block-sm img {
+ width: 30px !important;
+ height: 30px !important;
+}
+
+.img-sm + .img-push {
+ margin-left: 40px;
+}
+
+.img-md {
+ width: 60px;
+ height: 60px;
+}
+
+.img-md + .img-push {
+ margin-left: 70px;
+}
+
+.img-lg {
+ width: 100px;
+ height: 100px;
+}
+
+.img-lg + .img-push {
+ margin-left: 110px;
+}
+
+.img-bordered {
+ border: 3px solid #d2d6de;
+ padding: 3px;
+}
+
+.img-bordered-sm {
+ border: 2px solid #d2d6de;
+ padding: 2px;
+}
+
+.attachment-block {
+ border: 1px solid #f4f4f4;
+ padding: 5px;
+ margin-bottom: 10px;
+ background: #f7f7f7;
+}
+
+.attachment-block .attachment-img {
+ max-width: 100px;
+ max-height: 100px;
+ height: auto;
+ float: left;
+}
+
+.attachment-block .attachment-pushed {
+ margin-left: 110px;
+}
+
+.attachment-block .attachment-heading {
+ margin: 0;
+}
+
+.attachment-block .attachment-text {
+ color: #555;
+}
+
+.connectedSortable {
+ min-height: 100px;
+}
+
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+
+.sort-highlight {
+ background: #f4f4f4;
+ border: 1px dashed #ddd;
+ margin-bottom: 10px;
+}
+
+.full-opacity-hover {
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+}
+
+.full-opacity-hover:hover {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+
+.chart {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+
+.chart svg,
+.chart canvas {
+ width: 100% !important;
+}
+
+/*
+ * Misc: print
+ * -----------
+ */
+@media print {
+ .no-print,
+ .main-sidebar,
+ .left-side,
+ .main-header,
+ .content-header {
+ display: none !important;
+ }
+
+ .content-wrapper,
+ .right-side,
+ .main-footer {
+ margin-left: 0 !important;
+ min-height: 0 !important;
+ -webkit-transform: translate(0, 0) !important;
+ -ms-transform: translate(0, 0) !important;
+ -o-transform: translate(0, 0) !important;
+ transform: translate(0, 0) !important;
+ }
+
+ .fixed .content-wrapper,
+ .fixed .right-side {
+ padding-top: 0 !important;
+ }
+
+ .invoice {
+ width: 100%;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ }
+
+ .invoice-col {
+ float: left;
+ width: 33.3333333%;
+ }
+
+ .table-responsive {
+ overflow: auto;
+ }
+
+ .table-responsive > .table tr th,
+ .table-responsive > .table tr td {
+ white-space: normal !important;
+ }
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css b/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css
new file mode 100755
index 0000000..3a9c14f
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css
@@ -0,0 +1,61 @@
+/* REQUIRED CSS: change your reflow breakpoint here (35em below) */
+@media ( max-width: 35em ) {
+
+ /* uncomment out the line below if you don't want the sortable headers to show */
+ table.ui-table-reflow thead { display: none; }
+
+ .uf-table-search {
+ display: inherit;
+ }
+
+ /* css for reflow & reflow2 widgets */
+ .ui-table-reflow td,
+ .ui-table-reflow th {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: right;
+ /* if not using the stickyHeaders widget (not the css3 version)
+ * the "!important" flag, and "height: auto" can be removed */
+ width: 100% !important;
+ height: auto !important;
+ }
+
+ .tablesorter-bootstrap > thead > tr > th,
+ .tablesorter-bootstrap > thead > tr > td,
+ .tablesorter-bootstrap > tfoot > tr > th,
+ .tablesorter-bootstrap > tfoot > tr > td {
+ padding: 4px;
+ margin: 0;
+ }
+
+ /* reflow widget only */
+ .ui-table-reflow tbody td[data-title]:not(:first-child):before {
+ color: #469;
+ font-size: 1.5em;
+ content: attr(data-title);
+ width: 100%;
+ white-space: pre;
+ display: block;
+ }
+
+ /* reflow2 widget only */
+ table.ui-table-reflow .ui-table-cell-label {
+ display: none;
+ }
+
+ table.ui-table-reflow .ui-table-cell-label.ui-table-cell-label-top {
+ display: block;
+ padding: .4em 0;
+ margin: .4em 0;
+ text-transform: uppercase;
+ font-size: 1.5em;
+ font-weight: 400;
+ }
+
+} /* end media query */
+
+/* reflow2 widget */
+.ui-table-reflow .ui-table-cell-label {
+ display: none;
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css b/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css
new file mode 100755
index 0000000..7ac5a97
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css
@@ -0,0 +1,23 @@
+.uf-alert
+{
+ margin: 10px 0px 0px 0px;
+}
+
+/* Invert margin when inside a modal-body */
+.modal-body .uf-alert
+{
+ margin: 0px 0px 10px 0px;
+}
+
+.uf-alert .icon {
+ line-height: 20px;
+}
+
+.uf-alert-message-container {
+ margin-left: 30px;
+ line-height: 20px;
+}
+
+.uf-alert-message-container > ul {
+ margin-left: -20px;
+} \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css b/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css
new file mode 100755
index 0000000..432e1a4
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css
@@ -0,0 +1,15 @@
+/**
+ * Custom CSS for the ufCollection widget.
+ */
+
+/** Prevent rows from overflowing container */
+.uf-collection-col-wrap {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+.uf-collection span.select2-dropdown.select2-dropdown--below {
+ position:absolute;
+ top: -32px;
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/uf-jqueryvalidation.css b/main/app/sprinkles/core/assets/userfrosting/css/uf-jqueryvalidation.css
new file mode 100755
index 0000000..6fd2e47
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/uf-jqueryvalidation.css
@@ -0,0 +1,10 @@
+/* ==========================================================================
+ Custom styles for jQuery Validation elements
+ ========================================================================== */
+
+.error-block {
+ margin-top: 5px;
+ margin-bottom: 10px;
+
+ color: #a94442;
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css b/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css
new file mode 100755
index 0000000..38a92e2
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css
@@ -0,0 +1,204 @@
+/* Use to collapse empty button columns */
+
+.hideable {
+ min-height: 0px;
+}
+
+/* Custom styles for bootstrap-switch labels */
+label.label-switch {
+ margin-top: 5px;
+}
+
+form textarea {
+ resize: vertical; /* user can resize vertically, but width is fixed */
+}
+
+/* Custom styling for table tool menus */
+.dropdown-toggle .caret {
+ position: relative;
+ top: -1px;
+ right: -3px;
+}
+
+.box-tools .dropdown-toggle {
+ background-color: #ebeef5;
+ box-shadow: 1px 1px 15px 0px rgba(155, 155, 155, 0.1);
+}
+
+/* Add some extra padding to tool groups in boxes */
+.box-tool-group {
+ padding: 10px 0 10px;
+}
+
+.box-tool-group .btn-app {
+ margin: 0 10px 10px 0;
+}
+
+.box-tool-menu {
+ background-color: #f4f4f4;
+}
+
+.box-tool-menu > li > a {
+ color: #444;
+}
+
+.box-profile {
+ padding: 10px 20px;
+}
+
+.box-profile-property {
+ float: right !important;
+}
+
+/* Styles for table column selectors */
+
+.uf-table-cs-title {
+ padding: 0px 20px;
+ font-weight: bold;
+}
+
+.uf-table-cs-options {
+ padding: 3px 20px;
+}
+
+.uf-table-cs-options label {
+ width: 100%;
+ font-weight: normal;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+.uf-table-cs-options label span {
+ padding-left: 10px;
+}
+
+/* Table column width, fit to content */
+.uf-table-fit-width {
+ width: 1%;
+ white-space: nowrap;
+}
+
+/* Hide global search field on larger devices */
+.uf-table-search {
+ display: none;
+}
+
+/* Special styling for uf-table messages */
+.uf-table-info {
+ background-color: #fff !important;
+ color: #cdcdcd;
+ font-weight: 700;
+ text-align: center;
+}
+
+.uf-table-error-row td {
+ background-color: #f39c12 !important;
+ color: #fff !important;
+ text-align: center;
+}
+
+/* Cursor styling for ufCopy */
+.uf-copy-trigger {
+ cursor: pointer;
+}
+
+/* Special wrapper for alerts on public form pages (sign-in, register, etc) */
+.form-alerts {
+ margin-bottom: 10px !important;
+}
+
+/* Styling for AdminLTE form control icons, that doesn't interfere with validation plugin */
+.form-control-icon {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+
+.input-lg ~ .form-control-icon,
+.input-group-lg ~ .form-control-icon,
+.form-group-lg .form-control ~ .form-control-icon {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm ~ .form-control-icon,
+.input-group-sm ~ .form-control-icon,
+.form-group-sm .form-control ~ .form-control-icon {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+
+@media (min-width: 768px) {
+ .form-inline .has-feedback .form-control-icon,
+ .navbar-form .has-feedback .form-control-icon {
+ top: 0;
+ }
+}
+
+.form-horizontal .has-feedback .form-control-icon {
+ right: 15px;
+}
+
+/* Fix for select2 not resizing properly when the page is resized */
+.select2-container--default {
+ display: block;
+ width: 100% !important;
+}
+
+/* Fix for links on info-box */
+a .info-box {
+ color: black;
+}
+
+/* Custom styling for trash buttons */
+.btn-trash {
+ padding: 0 10px;
+ color: #777;
+}
+
+.btn-trash:hover {
+ color: #d73925;
+}
+
+/* Custom styling for nav logo */
+.main-header .logo {
+ font-weight: 400;
+ font-size: 18px;
+}
+
+/* Padding for user menu */
+.user-menu .fa {
+ padding-left: .5em;
+ font-size: 11px;
+}
+
+/* Custom classes to add responsiveness to bootstrap's dropdown-menu-right and dropdown-menu-left */
+
+.dropdown-menu-right-responsive {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-menu-left-responsive {
+ right: 0;
+ left: auto;
+}
+
+@media(min-width: 561px) {
+ .dropdown-menu-right-responsive {
+ right: 0;
+ left: auto;
+ }
+ .dropdown-menu-left-responsive {
+ right: auto;
+ left: 0;
+ }
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/README.md b/main/app/sprinkles/core/assets/userfrosting/favicons/README.md
new file mode 100755
index 0000000..c756d36
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/README.md
@@ -0,0 +1,7 @@
+# Default Favicons for UserFrosting
+
+There are a bewildering number of device- and vendor-specific favicons these days. And, the specifications are changing constantly as new devices with new screen resolutions are released, and old devices and operating systems are retired.
+
+We recommend the [Favicon Cheat Sheet](https://github.com/audreyr/favicon-cheat-sheet) as a way to stay up-to-date with current specifications and best practices regarding favicons.
+
+To automatically generate favicons for a wide variety of devices, platforms, and operating systems, we suggest https://realfavicongenerator.net. The default icons you see in this directory were generated using this site.
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-144x144.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-144x144.png
new file mode 100755
index 0000000..d2b133f
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-144x144.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-192x192.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-192x192.png
new file mode 100755
index 0000000..f6877ef
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-192x192.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-256x256.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-256x256.png
new file mode 100755
index 0000000..f0dcd45
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-256x256.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-36x36.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-36x36.png
new file mode 100755
index 0000000..03b3f7d
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-36x36.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-384x384.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-384x384.png
new file mode 100755
index 0000000..cdb7f6d
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-384x384.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-48x48.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-48x48.png
new file mode 100755
index 0000000..dea6333
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-48x48.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-512x512.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-512x512.png
new file mode 100755
index 0000000..292cc0b
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-512x512.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-72x72.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-72x72.png
new file mode 100755
index 0000000..2a12eae
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-72x72.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-96x96.png b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-96x96.png
new file mode 100755
index 0000000..be2007b
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/android-chrome-96x96.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114-precomposed.png
new file mode 100755
index 0000000..9cc0516
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114.png
new file mode 100755
index 0000000..ee79201
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-114x114.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120-precomposed.png
new file mode 100755
index 0000000..c99a379
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120.png
new file mode 100755
index 0000000..097a9af
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-120x120.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144-precomposed.png
new file mode 100755
index 0000000..1ca7d71
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144.png
new file mode 100755
index 0000000..af016ec
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-144x144.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152-precomposed.png
new file mode 100755
index 0000000..4ed4ec6
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152.png
new file mode 100755
index 0000000..e08a1c2
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-152x152.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180-precomposed.png
new file mode 100755
index 0000000..1b1d093
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180.png
new file mode 100755
index 0000000..d2e5117
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-180x180.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57-precomposed.png
new file mode 100755
index 0000000..b836367
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57.png
new file mode 100755
index 0000000..d1628ca
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-57x57.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60-precomposed.png
new file mode 100755
index 0000000..7c85a57
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60.png
new file mode 100755
index 0000000..011967e
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-60x60.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72-precomposed.png
new file mode 100755
index 0000000..dcb3f7c
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72.png
new file mode 100755
index 0000000..bd57115
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-72x72.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76-precomposed.png
new file mode 100755
index 0000000..8c919b8
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76.png
new file mode 100755
index 0000000..e96533b
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-76x76.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-precomposed.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-precomposed.png
new file mode 100755
index 0000000..1b1d093
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon-precomposed.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon.png b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon.png
new file mode 100755
index 0000000..d2e5117
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/apple-touch-icon.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-16x16.png b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-16x16.png
new file mode 100755
index 0000000..a705675
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-16x16.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-32x32.png b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-32x32.png
new file mode 100755
index 0000000..0d89d12
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon-32x32.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/favicon.ico b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon.ico
new file mode 100755
index 0000000..a787724
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/favicon.ico
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml b/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml
new file mode 100755
index 0000000..21fa5ad
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square70x70logo src="/mstile-70x70.png"/>
+ <square150x150logo src="/mstile-150x150.png"/>
+ <square310x310logo src="/mstile-310x310.png"/>
+ <wide310x150logo src="/mstile-310x150.png"/>
+ <TileColor>#603cba</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json b/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json
new file mode 100755
index 0000000..328cd7a
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json
@@ -0,0 +1,51 @@
+{
+ "name": "UserFrosting",
+ "icons": [
+ {
+ "src": "\/android-chrome-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-256x256.png",
+ "sizes": "256x256",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-384x384.png",
+ "sizes": "384x384",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image\/png"
+ }
+ ],
+ "theme_color": "#f3f2e4"
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-144x144.png b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-144x144.png
new file mode 100755
index 0000000..3227cbb
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-144x144.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-150x150.png b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-150x150.png
new file mode 100755
index 0000000..e8f3a69
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-150x150.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x150.png b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x150.png
new file mode 100755
index 0000000..b14af89
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x150.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x310.png b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x310.png
new file mode 100755
index 0000000..cabb0b9
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-310x310.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-70x70.png b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-70x70.png
new file mode 100755
index 0000000..7ae9615
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/mstile-70x70.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg b/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg
new file mode 100755
index 0000000..2435014
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg
@@ -0,0 +1,246 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="2061.000000pt" height="2061.000000pt" viewBox="0 0 2061.000000 2061.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,2061.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M11924 20602 c-23 -15 -154 -225 -166 -265 -6 -23 -24 -56 -38 -73
+-29 -34 -77 -193 -104 -344 -34 -185 -47 -488 -25 -547 13 -34 59 -84 71 -77
+4 3 8 38 8 77 0 40 5 135 10 212 27 360 96 596 235 800 53 77 85 145 85 180 0
+34 -47 57 -76 37z"/>
+<path d="M9482 18775 c-113 -29 -217 -78 -303 -142 l-64 -48 56 -8 c48 -8 63
+-6 102 12 25 12 77 28 114 37 126 28 178 67 197 147 8 32 14 32 -102 2z"/>
+<path d="M11641 18720 c-26 -43 -26 -66 -1 -132 22 -58 26 -118 10 -148 -15
+-28 -47 -42 -110 -49 l-55 -6 74 -24 c40 -14 146 -60 235 -104 236 -116 321
+-152 442 -187 137 -39 306 -121 410 -197 110 -83 250 -233 334 -360 40 -60
+107 -180 151 -268 43 -88 97 -189 119 -224 38 -62 45 -86 41 -141 -4 -50 -6
+-51 -83 -24 -190 65 -447 128 -711 173 -222 39 -321 52 -786 106 -409 48 -450
+54 -774 115 -115 22 -234 40 -264 40 l-56 0 6 -37 c4 -24 16 -46 33 -59 28
+-23 111 -49 183 -59 24 -3 56 -12 71 -20 30 -15 52 -62 43 -93 -2 -10 0 -37 6
+-60 15 -53 84 -117 269 -247 78 -55 142 -107 142 -115 0 -9 -7 -26 -16 -38
+-13 -18 -24 -22 -72 -22 -31 0 -86 9 -120 20 -35 11 -78 20 -95 20 -35 0 -117
+-34 -117 -48 0 -8 738 -232 1040 -316 333 -93 675 -172 1440 -336 644 -138
+744 -162 803 -191 55 -27 104 -74 129 -123 21 -41 48 -152 48 -200 l0 -28
+-122 6 c-973 50 -1322 53 -1676 16 -122 -13 -152 -25 -152 -57 0 -41 41 -69
+146 -102 390 -119 938 -257 1284 -322 61 -11 120 -42 103 -52 -9 -5 -129 -25
+-345 -56 -138 -21 -299 -66 -305 -88 -2 -6 5 -14 17 -18 12 -4 19 -12 17 -18
+-10 -28 -164 -5 -587 84 -543 115 -765 160 -1025 204 -116 20 -250 44 -300 55
+-141 30 -162 32 -206 20 -33 -9 -43 -18 -56 -47 -13 -33 -13 -38 5 -62 30 -41
+76 -57 321 -116 405 -97 628 -136 1326 -235 237 -34 484 -70 550 -81 66 -10
+123 -19 127 -19 4 0 10 -10 13 -22 12 -40 55 -87 96 -109 23 -11 81 -29 131
+-40 94 -20 152 -41 161 -56 3 -5 -343 -19 -811 -32 -449 -13 -819 -26 -822
+-28 -9 -8 33 -33 64 -37 537 -77 1265 -146 2021 -192 276 -17 736 -15 852 4
+33 5 56 5 63 -2 6 -6 17 -6 32 1 13 6 56 14 96 17 73 6 73 6 109 -29 45 -43
+110 -68 253 -95 74 -14 144 -35 204 -62 50 -22 132 -54 181 -72 71 -26 93 -38
+103 -59 19 -39 -2 -78 -48 -90 -56 -15 -465 -1 -665 23 -99 11 -297 37 -440
+56 -391 52 -509 64 -755 74 -186 8 -267 16 -465 49 -132 22 -314 49 -405 61
+-312 38 -1083 202 -1157 246 -37 21 -53 24 -152 24 -127 0 -136 -8 -78 -64 25
+-26 78 -49 260 -115 273 -98 401 -132 602 -161 176 -25 297 -51 611 -131 259
+-65 460 -105 608 -118 78 -7 102 -13 113 -27 19 -25 17 -32 -15 -48 -16 -8
+-48 -40 -72 -71 -62 -80 -142 -150 -195 -171 -39 -15 -53 -15 -99 -5 -63 14
+-179 80 -261 150 -33 28 -75 59 -93 68 -31 16 -35 16 -67 -1 -40 -22 -60 -63
+-51 -109 9 -49 80 -190 141 -282 29 -44 97 -132 150 -195 53 -63 123 -147 156
+-187 l60 -72 -40 -20 c-72 -37 -104 -36 -286 8 -94 22 -307 63 -475 91 -168
+27 -394 68 -504 90 -288 58 -531 100 -1066 185 -695 110 -993 165 -1355 251
+-162 39 -205 40 -253 6 l-28 -21 -493 185 c-272 102 -496 182 -500 178 -11
+-11 97 -102 166 -140 105 -59 531 -236 993 -414 680 -261 1396 -498 2105 -695
+554 -154 1403 -355 1503 -355 104 0 150 -42 122 -111 -27 -65 -169 -104 -410
+-114 -488 -19 -1114 97 -1990 370 -366 115 -1178 393 -1218 419 -22 13 -58 29
+-80 36 -42 11 -92 5 -92 -11 0 -12 84 -59 134 -74 24 -7 79 -33 122 -58 421
+-238 1013 -477 1619 -652 498 -144 1352 -337 1965 -444 150 -26 1044 -171
+1056 -171 2 0 4 -7 4 -15 0 -26 53 -74 105 -94 163 -62 375 -155 422 -183 29
+-18 70 -49 90 -70 l37 -38 -31 0 c-17 0 -44 6 -60 14 -20 11 -145 22 -447 41
+-230 14 -419 25 -421 23 -1 -2 -5 -13 -9 -24 -6 -20 -1 -23 56 -36 602 -136
+1408 -324 1408 -329 0 -12 -58 -31 -92 -31 -18 0 -80 8 -137 17 -189 32 -381
+8 -561 -68 -72 -31 -79 -32 -160 -25 -47 4 -404 57 -794 118 -1439 225 -1626
+249 -2466 319 -679 57 -687 57 -718 34 -15 -11 -28 -27 -30 -35 -6 -29 253
+-128 333 -128 13 0 28 -6 34 -14 6 -8 31 -17 55 -20 38 -6 44 -10 50 -37 9
+-47 44 -72 146 -108 199 -69 337 -148 445 -254 89 -87 98 -141 31 -192 -81
+-62 -509 -215 -1061 -380 -176 -52 -378 -118 -450 -146 -169 -66 -273 -93
+-339 -86 -44 5 -68 -1 -171 -40 -275 -104 -834 -281 -1145 -363 -184 -48 -208
+-58 -233 -95 -20 -32 -23 -33 -112 -39 -727 -56 -1440 -59 -2045 -11 -510 41
+-1079 132 -1514 241 -191 48 -298 83 -536 176 -169 66 -209 85 -230 111 -49
+63 -123 137 -176 178 -53 41 -224 133 -231 125 -11 -11 46 -96 96 -146 58 -59
+146 -113 249 -155 43 -18 75 -41 114 -81 29 -31 93 -88 142 -126 98 -76 321
+-216 376 -236 336 -123 583 -181 925 -217 231 -24 745 -38 1190 -31 899 14
+1535 56 2435 161 331 39 1117 120 1255 130 50 3 110 13 135 20 25 8 162 30
+305 50 143 20 355 49 470 65 116 16 320 41 455 55 135 14 405 50 600 80 426
+66 573 84 746 92 l130 6 80 -42 c250 -131 504 -389 630 -638 80 -160 41 -273
+-114 -327 -66 -24 -180 -35 -523 -51 -361 -18 -352 -17 -1134 -95 -324 -33
+-705 -68 -845 -80 -868 -70 -1174 -130 -1670 -325 -195 -77 -342 -125 -685
+-223 -324 -93 -764 -212 -784 -212 -10 0 -44 9 -77 20 -53 19 -223 47 -1249
+210 -334 53 -386 63 -570 115 -169 48 -548 171 -584 189 -59 31 -101 16 -101
+-36 0 -33 2 -33 -139 -12 -275 40 -478 117 -649 246 -36 28 -124 77 -195 109
+-361 166 -641 320 -867 478 -267 187 -384 240 -594 267 -124 16 -189 42 -289
+116 l-58 43 30 7 c16 5 45 26 64 48 l34 40 646 -294 c356 -161 659 -304 673
+-317 24 -22 33 -24 121 -23 95 2 97 1 121 -27 19 -23 27 -27 38 -18 22 18 17
+26 -20 39 -23 7 -49 30 -78 67 -49 64 -137 141 -728 633 -234 195 -567 476
+-740 625 -402 346 -730 619 -1362 1133 -278 227 -530 439 -560 470 -66 72
+-122 177 -144 268 -42 179 29 596 151 877 6 13 2 17 -17 17 -39 0 -136 -54
+-218 -120 -41 -34 -100 -82 -131 -106 -91 -73 -100 -116 -43 -210 118 -194
+140 -281 112 -445 -22 -134 21 -260 127 -369 23 -25 46 -59 50 -77 3 -17 12
+-34 19 -36 7 -3 16 -19 19 -36 4 -17 16 -39 27 -48 11 -10 20 -26 20 -37 0
+-11 20 -41 44 -66 24 -25 87 -114 141 -198 83 -131 105 -158 152 -188 29 -20
+67 -56 84 -80 36 -52 74 -151 83 -216 7 -49 38 -98 62 -98 10 0 14 -13 14 -46
+0 -42 -1 -45 -22 -38 -42 13 -73 32 -131 83 -60 53 -106 81 -130 81 -16 0 -49
+-70 -68 -143 -18 -72 -6 -216 25 -312 14 -45 30 -126 35 -186 11 -120 22 -176
+53 -269 65 -201 194 -364 376 -476 160 -98 248 -190 277 -287 12 -41 14 -84 9
+-216 -7 -191 1 -218 72 -255 36 -19 54 -21 229 -19 217 3 323 17 485 62 127
+36 154 34 186 -14 16 -24 15 -27 -12 -66 -63 -89 -76 -120 -82 -184 -11 -141
+91 -292 206 -303 56 -5 99 11 187 68 34 22 75 42 91 46 46 9 86 -31 144 -145
+107 -207 224 -284 386 -251 76 15 219 83 319 150 83 56 165 96 205 102 24 3
+25 0 28 -50 2 -29 -6 -95 -17 -147 -23 -103 -27 -237 -10 -298 6 -21 26 -56
+46 -78 121 -133 421 -74 932 183 285 143 310 150 354 99 18 -21 33 -65 52
+-148 35 -153 75 -260 131 -359 73 -127 117 -164 200 -164 66 0 125 31 152 79
+27 48 38 135 51 391 6 102 16 205 23 230 13 43 15 45 48 42 53 -6 146 -37 276
+-93 71 -31 157 -59 214 -70 152 -31 211 -71 238 -159 6 -19 16 -136 22 -259
+16 -323 36 -422 101 -496 47 -53 114 -69 259 -62 63 4 134 10 158 13 l44 7
+-21 -39 c-35 -66 -28 -124 53 -446 95 -373 162 -611 287 -1023 56 -181 144
+-476 196 -655 130 -448 230 -739 284 -826 14 -23 19 -50 19 -103 0 -73 9 -93
+55 -119 15 -8 27 -78 75 -423 32 -228 72 -531 89 -674 22 -184 41 -299 66
+-392 49 -188 60 -282 45 -370 -11 -66 -16 -76 -56 -112 -34 -32 -51 -41 -79
+-41 -80 0 -133 53 -342 340 -78 107 -97 142 -137 247 -51 138 -61 199 -136
+823 -93 771 -115 903 -271 1580 -197 854 -306 1230 -472 1631 -35 85 -67 166
+-71 181 -14 58 -57 74 -101 35 -21 -18 -31 -48 -60 -172 -85 -364 -86 -417
+-14 -706 113 -458 170 -750 214 -1108 37 -295 52 -359 180 -776 95 -307 129
+-449 160 -661 51 -347 155 -673 322 -1012 65 -132 70 -168 30 -227 -15 -22
+-32 -58 -38 -80 -15 -53 -60 -108 -132 -161 -99 -73 -169 -69 -255 14 -112
+109 -214 298 -302 559 -48 141 -60 188 -60 239 0 121 -498 2064 -730 2849
+-179 606 -275 899 -340 1043 -46 102 -98 199 -110 207 -11 7 -55 -50 -75 -98
+-8 -20 -15 -54 -15 -75 0 -80 87 -558 171 -937 98 -442 336 -1383 459 -1815
+149 -525 190 -716 183 -860 -4 -71 1 -127 17 -220 24 -134 28 -265 11 -370
+-13 -80 -49 -120 -108 -120 -33 0 -46 9 -118 82 -45 46 -96 101 -113 123 l-32
+40 0 -30 c0 -36 30 -151 58 -222 72 -188 228 -370 382 -448 25 -12 101 -35
+170 -50 188 -40 438 -113 930 -270 58 -18 146 -45 196 -59 51 -14 163 -53 250
+-87 396 -153 413 -156 829 -163 464 -7 641 -28 1545 -180 750 -126 927 -145
+1425 -153 566 -9 988 24 1733 137 1120 171 1302 188 1982 194 431 4 527 11
+780 56 400 73 727 191 1739 629 178 77 341 152 363 167 81 57 138 165 138 264
+0 107 -52 187 -179 272 -153 104 -250 221 -309 376 -28 73 -40 120 -78 322
+-31 166 -124 309 -238 365 -28 13 -95 33 -149 44 -104 21 -195 58 -274 112
+-89 61 -367 272 -533 404 -270 216 -360 272 -520 326 -115 38 -270 49 -385 27
+l-71 -14 94 225 c51 124 210 512 352 861 602 1481 843 2031 1216 2780 168 336
+222 434 316 576 127 190 211 331 413 699 76 138 156 277 180 310 59 84 83 135
+99 208 10 50 33 97 104 214 59 96 101 154 117 161 29 14 41 52 25 82 -9 17 -9
+25 4 39 18 20 20 44 6 70 -5 10 -71 90 -146 177 -157 184 -178 221 -178 314 1
+81 25 146 101 265 31 50 85 146 120 213 56 110 63 130 63 182 0 63 -19 94 -76
+123 -16 8 -179 58 -363 112 -184 53 -351 105 -371 115 -59 30 -88 71 -95 137
+-14 121 -49 206 -145 348 -26 39 -59 92 -75 119 -19 34 -38 53 -64 64 l-36 16
+0 90 c0 133 -23 174 -195 351 -149 154 -160 173 -160 283 0 81 31 236 85 429
+25 87 45 179 45 206 0 45 -1 47 -28 47 -39 0 -52 32 -52 125 0 57 -5 82 -20
+107 -16 26 -20 51 -20 116 0 56 -4 82 -12 82 -6 0 -22 10 -35 22 -42 40 -48
+17 -49 -195 -1 -187 -10 -254 -37 -287 -14 -19 -58 -50 -69 -50 -16 0 -8 97
+16 195 46 192 49 212 36 282 -20 117 -97 256 -159 287 -14 7 -55 16 -90 20
+-146 16 -183 56 -189 203 l-4 93 53 -16 c30 -9 78 -30 107 -47 62 -37 230
+-169 253 -199 10 -13 23 -19 33 -15 22 9 20 27 -4 27 -13 0 -22 10 -29 36 -17
+60 -51 101 -151 178 -52 41 -104 84 -115 96 -11 12 -38 31 -60 42 -22 11 -69
+46 -104 77 -304 269 -576 385 -1206 514 l-109 22 -53 70 c-242 318 -456 448
+-773 470 -174 12 -287 50 -550 186 -178 92 -195 106 -186 144 9 36 28 40 110
+26 39 -7 162 -16 273 -21 319 -15 398 -38 583 -175 125 -91 217 -147 309 -185
+71 -29 200 -65 207 -57 3 3 -157 166 -354 363 -453 454 -602 628 -783 921
+-115 186 -209 272 -384 354 -80 38 -247 87 -355 104 l-45 7 65 -59 c64 -59
+153 -137 344 -303 155 -134 303 -310 424 -505 52 -84 150 -280 167 -334 7 -23
+5 -23 -33 10 -22 19 -147 126 -278 239 -471 406 -873 722 -1449 1140 l-210
+153 63 -7 c93 -10 211 -47 437 -136 191 -75 334 -124 341 -117 10 9 -51 78
+-93 105 -78 50 -263 134 -468 211 -263 100 -432 186 -699 356 -289 184 -394
+246 -509 300 -102 47 -245 97 -331 115 -71 15 -110 47 -134 113 l-20 51 -21
+-34z m105 -1815 c193 -33 371 -97 549 -196 134 -74 155 -92 155 -135 0 -50
+-14 -55 -126 -44 -134 13 -312 12 -376 -1 -29 -6 -81 -24 -115 -39 -84 -38
+-118 -44 -169 -30 -63 18 -117 70 -158 150 -46 93 -55 149 -29 191 22 34 139
+119 164 119 9 0 56 -7 105 -15z m5990 -3540 c-15 -23 -52 -42 -62 -32 -3 3 -2
+17 2 32 8 33 67 64 72 39 2 -8 -3 -26 -12 -39z m-15398 -3420 c35 -29 46 -67
+36 -119 l-6 -36 -50 42 c-57 47 -72 77 -58 113 12 32 40 32 78 0z m109 -180
+c2 -6 -3 -20 -12 -30 -14 -20 -15 -20 -35 5 -11 14 -20 29 -20 33 0 12 63 4
+67 -8z m263 -103 c0 -2 -13 -15 -30 -29 -21 -17 -30 -34 -30 -54 0 -34 19 -46
+126 -77 80 -24 92 -35 101 -86 l6 -36 -64 0 c-51 0 -67 -4 -86 -22 -13 -12
+-23 -27 -23 -35 0 -20 -60 -16 -97 7 -33 20 -76 77 -88 118 -7 24 4 29 23 10
+10 -10 15 -10 22 2 18 28 10 56 -29 113 -42 59 -41 66 10 86 21 9 159 11 159
+3z m90 -451 c3 -2 -8 -1 -25 3 -32 8 -55 30 -55 55 0 10 13 3 37 -20 21 -18
+40 -36 43 -38z m3374 -1488 c57 -40 57 -53 2 -53 -53 0 -110 21 -143 52 -31
+29 -13 41 52 34 32 -4 64 -16 89 -33z m158 -77 c22 -16 22 -16 -14 -16 -22 0
+-45 8 -59 21 l-24 20 37 -5 c21 -2 48 -12 60 -20z m263 -110 c26 -8 65 -29 86
+-45 21 -17 45 -31 54 -31 22 0 55 -18 55 -30 0 -19 -59 -11 -70 10 -8 15 -21
+20 -54 20 -47 0 -166 53 -174 78 -5 17 43 16 103 -2z m7062 -337 c24 -11 52
+-33 63 -47 12 -15 85 -111 163 -213 78 -103 190 -245 249 -317 123 -149 166
+-179 244 -168 43 5 44 5 44 -23 0 -15 -9 -70 -20 -122 -11 -52 -20 -116 -20
+-144 0 -27 -9 -72 -19 -100 -10 -27 -67 -232 -126 -455 -308 -1171 -764 -2779
+-798 -2819 -8 -9 -17 -32 -21 -51 -12 -60 -153 -157 -208 -142 -32 8 -66 64
+-118 192 -60 149 -120 421 -120 545 0 78 125 1113 196 1620 40 292 42 402 6
+510 -73 220 -88 245 -137 245 -36 0 -74 -36 -80 -78 -4 -20 -19 -93 -35 -162
+-61 -260 -95 -447 -306 -1700 -19 -113 -72 -470 -119 -795 -124 -857 -172
+-1143 -256 -1519 l-39 -178 -58 -77 c-90 -117 -150 -142 -242 -101 -67 30
+-225 141 -236 164 -5 12 -40 37 -77 56 -38 20 -76 44 -84 55 -20 27 -14 96 36
+430 53 353 86 619 171 1375 93 826 102 947 132 1750 19 508 17 820 -5 897 -24
+86 -159 363 -191 392 -17 16 -41 25 -74 29 -44 4 -53 1 -84 -26 -36 -32 -52
+-72 -63 -157 -4 -27 -9 -59 -12 -69 -5 -18 -6 -18 -19 5 -9 16 -13 62 -14 139
+-1 215 -23 412 -63 549 l-21 74 29 55 c41 78 117 157 170 178 128 48 307 -47
+560 -299 66 -66 147 -140 180 -165 159 -118 438 -216 657 -229 91 -6 100 -4
+152 21 42 21 62 39 81 71 37 62 44 94 55 240 12 154 28 223 80 330 33 68 50
+90 120 150 124 108 188 127 277 84z m-4723 -610 c20 -17 52 -58 72 -92 195
+-325 376 -468 618 -486 120 -9 120 -8 127 -279 3 -119 9 -226 14 -237 25 -61
+101 -124 152 -126 10 0 -3 -7 -29 -15 -92 -28 -107 -91 -68 -282 10 -54 24
+-173 30 -267 21 -327 235 -2034 340 -2705 26 -166 31 -187 54 -206 13 -12 30
+-24 36 -26 7 -2 20 -61 31 -143 48 -351 71 -455 126 -557 25 -46 25 -48 8 -75
+-73 -114 -169 -181 -241 -170 -96 16 -213 109 -320 252 -75 103 -145 165 -185
+165 -22 0 -12 -66 -99 695 -97 852 -125 1105 -159 1460 -47 472 -60 577 -92
+745 -69 353 -209 750 -386 1093 -46 89 -104 152 -151 164 l-24 6 3 496 c3 453
+2 499 -14 535 -9 21 -17 40 -17 42 0 3 15 13 33 24 49 30 99 26 141 -11z
+m1526 -69 c129 -219 248 -287 431 -247 l66 14 7 -406 c14 -880 49 -1612 112
+-2361 33 -406 46 -520 55 -520 4 0 22 30 40 66 30 61 33 77 40 198 4 72 25
+514 48 981 23 468 46 860 51 872 5 12 18 27 29 33 19 10 20 8 16 -17 -3 -16
+-12 -197 -20 -403 -25 -627 -47 -976 -75 -1205 -6 -44 -15 -210 -20 -370 -5
+-159 -17 -414 -26 -565 -9 -151 -17 -459 -18 -685 -3 -383 -4 -415 -24 -480
+-18 -62 -28 -77 -84 -130 -35 -33 -87 -72 -115 -88 -71 -38 -189 -67 -305 -74
+l-98 -6 0 99 c0 54 9 430 20 834 34 1295 42 1820 38 2510 -4 642 -6 679 -25
+760 -40 160 -102 299 -186 410 -48 63 -44 22 -38 420 3 172 1 204 -18 273 -19
+72 -19 82 -6 115 17 39 33 62 45 62 4 0 31 -40 60 -90z m-1540 -2529 c50 -398
+89 -726 87 -728 -12 -11 -41 15 -61 56 -21 41 -22 49 -10 76 19 44 17 158 -6
+252 -11 45 -27 144 -35 220 -9 76 -31 242 -50 368 -58 395 -60 415 -40 460 10
+22 19 36 21 30 2 -5 44 -336 94 -734z"/>
+<path d="M7997 17171 c-21 -10 -55 -34 -75 -53 -20 -19 -71 -62 -113 -96 -42
+-33 -98 -85 -126 -115 l-50 -55 -7 -94 c-12 -177 22 -403 79 -524 33 -68 111
+-160 157 -185 27 -15 27 -15 -56 183 -37 86 -74 191 -83 232 -15 70 -15 78 1
+121 30 78 84 91 228 54 105 -27 147 -18 173 38 16 33 18 64 16 228 -2 196 -6
+251 -24 273 -14 17 -75 14 -120 -7z"/>
+<path d="M6910 17111 c-207 -255 -261 -331 -432 -617 -160 -266 -161 -270
+-124 -544 8 -63 20 -218 26 -345 11 -253 21 -340 51 -448 11 -40 24 -94 30
+-122 14 -64 41 -109 85 -135 27 -17 34 -28 34 -53 0 -34 31 -110 48 -121 16
+-10 35 32 28 60 -4 13 -19 38 -35 56 -23 27 -37 68 -74 213 -55 216 -72 331
+-63 445 11 161 78 331 170 435 50 56 46 59 71 -60 27 -126 73 -262 123 -360
+37 -73 64 -108 139 -183 51 -52 96 -105 99 -118 8 -33 57 -80 91 -89 15 -3 38
+-16 51 -27 12 -12 22 -17 22 -11 0 5 -9 18 -20 28 -11 10 -20 27 -20 37 0 28
+-27 76 -49 88 -11 5 -31 10 -45 10 -23 0 -26 4 -26 38 0 28 -11 56 -40 101
+-52 80 -163 301 -201 400 -58 151 -83 274 -82 406 1 69 8 143 16 175 45 172
+85 286 131 375 50 97 51 102 51 185 0 83 -20 200 -33 200 -4 -1 -14 -9 -22
+-19z"/>
+<path d="M4200 15495 c-19 -19 -42 -35 -53 -35 -10 0 -39 -21 -65 -47 -26 -25
+-35 -37 -21 -25 14 12 32 22 40 22 23 1 53 22 98 73 50 55 51 64 1 12z"/>
+<path d="M3930 13725 c-7 -8 -21 -15 -33 -15 -28 0 -81 -35 -111 -74 -14 -19
+-41 -44 -60 -56 -19 -11 -107 -98 -195 -191 -137 -145 -166 -182 -201 -252
+-30 -62 -42 -99 -46 -152 l-6 -70 46 -43 c27 -25 55 -42 69 -42 31 0 88 39
+104 70 7 14 32 66 55 115 24 50 87 158 140 240 133 210 219 364 225 405 3 19
+15 45 26 58 11 12 16 22 10 22 -6 0 -16 -7 -23 -15z"/>
+<path d="M2674 13567 c-25 -14 -132 -145 -192 -234 -98 -145 -190 -374 -227
+-563 -49 -255 11 -719 131 -1009 111 -269 296 -490 779 -933 371 -340 858
+-778 862 -774 3 2 -1 23 -7 46 -9 34 -49 81 -222 263 -522 549 -1019 1133
+-1175 1382 -53 84 -112 216 -134 300 -39 150 -22 409 44 685 l13 55 18 -80
+c42 -186 147 -439 255 -618 27 -45 52 -100 56 -122 11 -57 22 -75 56 -87 24
+-8 29 -15 29 -43 0 -32 21 -65 40 -65 5 0 17 11 25 24 21 31 6 63 -35 77 -25
+9 -28 16 -32 64 -3 40 -14 70 -41 113 -59 96 -133 376 -156 594 -21 192 -8
+400 38 583 44 177 46 199 27 249 -28 73 -106 121 -152 93z"/>
+<path d="M5265 6405 c56 -741 1232 -4262 1540 -4612 13 -16 25 -22 25 -15 0 7
+-22 86 -50 175 -71 234 -180 621 -335 1197 -335 1241 -499 1768 -740 2380
+-128 325 -382 878 -430 935 -15 19 -16 16 -10 -60z"/>
+<path d="M5345 4220 c6 -31 41 -162 187 -685 50 -181 91 -381 118 -575 39
+-283 116 -539 255 -840 34 -74 67 -149 74 -167 20 -51 54 -76 90 -68 38 8 71
+48 71 85 0 40 -34 201 -81 380 -76 292 -174 561 -424 1160 -70 168 -165 404
+-212 525 -46 121 -81 204 -78 185z"/>
+<path d="M5125 3042 c1 -265 3 -275 126 -456 107 -160 195 -265 253 -306 41
+-28 66 -37 66 -25 0 3 -23 50 -50 105 -28 56 -103 232 -166 393 -100 251 -200
+475 -222 499 -4 4 -7 -91 -7 -210z"/>
+</g>
+</svg>
diff --git a/main/app/sprinkles/core/assets/userfrosting/images/cupcake.png b/main/app/sprinkles/core/assets/userfrosting/images/cupcake.png
new file mode 100755
index 0000000..3e1a704
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/images/cupcake.png
Binary files differ
diff --git a/main/app/sprinkles/core/assets/userfrosting/images/logo.svg b/main/app/sprinkles/core/assets/userfrosting/images/logo.svg
new file mode 100755
index 0000000..b11b0b5
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/images/logo.svg
@@ -0,0 +1,514 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="612px" height="537px" viewBox="0 0 612 537" style="enable-background:new 0 0 612 537;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M71.3,277.7c-1.9,3.4-2.2,7.6-1.4,12.6c9.1,23.9,33.6,61.6,48.5,100.3c14.8,38.2,18.8,57.5,32.1,75.8
+ s59.7,30.3,59.7,30.3l59.2,11.9V309C269.5,309,77.4,266.9,71.3,277.7z"/>
+<polygon style="fill:#FFFFFF;" points="310.5,35.1 305.1,40.5 299.3,44.3 242.7,84 278.2,108.5 328.5,109.7 310,72.4 310,54 "/>
+<path style="fill:#FFFFFF;" d="M133,147L133,147c-0.4,0.4-0.7,0.7-1,1l0,0c-0.8,0-1.5,0.2-2,1l0,0c-0.3,0.3-0.7,0.6-1,1
+ c-2.6,0.3-3.9,2.4-5.4,4.1c-6,6.8-12.2,13.3-19.2,19.2c-10.4,8.8-19,19.4-27.5,29.8c-3.6,4.3-7.4,8.7-9.8,13.9c-4,0.6-6.4,3.9-9.5,6
+ c-1.8,1.3-1.6,2.9-0.4,4.7c2,2.9,3.4,6.3,2.7,9.8c-0.8,3.8,0.3,6.7,2.8,9.4c0.4,0.3,0.9,0.7,1.3,1l0,0c0,0.9,0,1.7,1,2l0,0
+ c0,0.9,0.1,1.7,1,2l0,0c0,0.9,0.2,1.6,1,2l0,0c0.3,0.4,0.7,0.8,1,1.1c1.7,2.6,3.4,5.2,5,7.8c0,2.7,0,5.4,0,8.1
+ c-2.4,3.8-2,7.8-0.5,11.8c0.5,1.4,0.4,2.9,0.6,4.4c0.8,7.4,4.2,13.4,10.4,17.1c4.8,2.9,7.8,5.8,6.6,11.6c-0.2,0.8,0,1.7,0,2.5
+ c-0.2,3.2,1.3,4.5,4.5,4.5c4.8,0,9.6,0,14.3-1.6c1.5-0.5,3.5-1.3,4.6,0.2c0.9,1.2-0.9,2.3-1.4,3.4c-1.8,3.3-0.7,6.3,1.5,8.7
+ c2.3,2.5,5.1,1.2,7.2-0.4c2.9-2.2,4.1-0.6,5.2,1.8c3.5,7.4,7.5,8.6,14.6,4.7c2.6-1.4,4.9-3.7,8.1-4.2c0.6,2,0,3.5-0.4,5.2
+ c-1.9,8.8,1.3,11.9,10.1,9.7c1.1-0.3,2.2-0.7,3.3-1.1c5.1-1.6,9.7-4.4,14.5-6.7c2.8-1.4,4.3-0.9,4.9,2.3c0.6,3.3,1.5,6.5,3.1,9.4
+ c1.3,2.4,2.6,4.9,5.9,4.3c3.5-0.7,3.3-3.9,3.6-6.3c0.4-3.8-0.3-7.8,1.2-11.5c4.7,0.2,8.4,3.5,13,4.1c3.4,0.4,5.6,2,5.8,5.6
+ c0.1,1.8,0.1,3.6,0.2,5.5c0.6,12.3,2.1,13.6,14,11.6c-1.9,1.6-1.9,3.3-1.3,5.7c2.8,12.1,6.3,24,10,35.8c3.1,9.8,5.3,19.8,9.3,29.3
+ l0,0c0.3,0.7,0.7,1.3,1,2l0,0c0.3,1.7-0.8,3.9,1.9,4.5c1.3,10,2.9,20,3.9,30c0.5,5.4,3.5,10.5,2,16.1c-2.2,3.3-4.6,2.7-6.7,0.2
+ c-2.5-3-4.7-6.2-7-9.4c-0.5-2.2-1.8-4.1-2.2-6.5c-2.3-15.6-3.3-31.4-6.9-46.8c-4-16.8-7.2-33.7-14.4-49.6c-0.4-0.8-0.1-2.2-1.4-2.3
+ c-1.1-0.1-1.7,1-1.9,2c-1,5.3-3.2,10.5-1.7,16.2c2.6,10.3,5.1,20.6,6.1,31.2c1.1,11.3,6.7,21.6,8,32.8c1,8.4,3.8,16.1,7.3,23.7
+ c0.8,1.8,2.2,3.4,1.8,5.5c-0.7,1.2-1.7,2.2-1.7,3.7c-5.1,6-7.8,5.8-12.2-0.9c-2.8-4.3-4.3-9.2-5.8-14c0.2-1.7,0-3.3-0.4-4.9
+ c-6.3-25.2-12.4-50.5-20.2-75.4c-2.1-6.7-3.9-13.5-7.7-19.8c-2,1.9-2.3,3.6-1.9,5.8c2.8,18.5,7.7,36.6,12.3,54.7
+ c2.4,9.6,5.8,19,7.3,28.9c-1,4.5,1.4,8.7,0.8,13.2c-0.3,2,0.1,4.4-1.8,5.3c-2.2,1-3.4-1.3-4.8-2.6c-0.9-0.9-1.7-1.9-2.6-3
+ c0.8,7.9,6.9,16.3,13.4,17.4c7.5,1.3,14.5,4.1,21.8,6.1c1.9,0.6,3.7,1.3,5.7,1.8c7.5,1.9,14.6,6.5,22.2,6.2
+ c19-0.7,37.2,4.1,55.7,6.6c17.9,2.4,35.5,1.8,53.1-0.6c18.7-2.5,37.2-6.5,56.3-5.9c10,0.3,20.3-1.1,29.9-4.2
+ c12.6-4.2,24.7-9.9,37-15.1c6.3-2.6,7.4-10,1.5-13.6c-6.2-3.8-8.5-9-9.5-15.8c-0.7-5.3-3.3-10.3-9.2-10.9c-3.7-0.4-6.1-2.1-8.7-4
+ c-3.5-2.5-6.9-5.1-10.3-7.8c-6.9-5.6-13.7-11.5-24.3-8.6c14.7-35.1,27.7-70.6,45.5-103.9c5.9-8,10.3-16.8,15.1-25.4
+ c1.4-2.5,3.8-4.6,3.6-7.8c1.6-2.5,3.1-5.1,4.7-7.6c1.6-0.6,1.8-1.6,0.8-2.9c1.5-0.9,0.8-1.8,0-2.7c-2.1-2.4-4.1-4.9-6.2-7.3
+ c-2-3.6-0.7-6.7,1.3-9.7c1.5-2.4,2.9-4.8,4.1-7.4c1.6-3.3,0.4-5-2.8-5.9c-4.5-1.3-8.9-2.6-13.4-3.9c-2.3-0.7-4.9-1.5-5-4.1
+ c-0.2-4.2-2.5-7.1-4.7-10.2c-0.6-1.5-1.5-2.8-3.2-3c1.6-6.3-3.2-9.2-6.7-12.8c-2.4-2.5-1.7-5.6-1.2-8.5c0.6-3.6,1.8-7,2.8-10.6
+ c1-1.7,2.4-3.3,0.2-6.4c-0.2,2.3-0.3,3.4-0.3,4.5c-0.3,0-0.7,0-1,0c0-1.4,0.5-2.9-0.8-4.1c0-0.4-0.1-0.7-0.1-1.1
+ c-0.2-1.7,0.6-3.5-0.8-5l-0.1-0.2c-0.2-2.9,0.4-6.2-3-7.9c-0.4,0-0.7,0-1.1,0l0,0c-0.5-4.2-5-5.1-7-8c-0.5-7.2-6.1-10.4-11.3-13.7
+ c-8-5.1-17.8-6.7-25.5-12.4c-1.3-1.4-2.6-2.9-4.1-4.3c-8.6-8.4-17.6-16.7-23.7-27.2c-4.3-7.4-11-9.3-18.5-10.6c-1-0.6-2-1.3-3-1.9
+ c-1.1-2.3-3.3-3.2-5.4-4.2c-5.5-2.7-11.4-4.3-16.9-7.1c-9.6-5-17.8-12.8-28.9-14.9c-1.7-0.3-2.6-1.9-2.8-3.8
+ c-1.3-4.3-1.7-8.7-0.1-13.1c0.5-9.6,0.5-19.2,6.8-27.3c0.4-0.5,0.6-1.2,0.9-1.8c0.4-0.8,0.6-1.7-0.2-2.2s-1.6,0.1-2,0.9
+ c-1.2,2.1-3.1,3.9-3.5,6.5c-0.3,0.3-0.6,0.7-0.9,1l0,0c-1.4,0-1.9,1.1-2.5,2.1c-3,4.9-3.4,10.4-3.3,15.8c0.2,7.9-1.5,15.3-4.2,22.7
+ c-0.7,2-2,2.3-3.8,2.5c-5.2,0.7-10.5,1.2-15.6,2.3c-6.2,1.3-8.3,5.6-5.9,11.5c0.7,1.9,1.1,4.7,3.7,4.8c2.6,0.2,4.6-2.2,5.1-4.1
+ c1.9-7,6.6-8.3,12.9-7.6c1.5,0.2,3,0,4.5,0c9.8,0.2,14.9,5.5,15.3,15.4c0.1,3.4-0.8,4.8-4.4,4.6c-7-0.3-14-0.1-21,0
+ c-1.6,0-3.4-0.5-4.7,1c-0.7,0-1.3,0-2,0c-11.4-0.9-19.9-9.3-30.7-12c-1.1-0.3-1.7-1.9-0.8-2.3c3.9-1.6,1.7-4.3,1.5-6.7
+ c-0.1-1.6-0.3-3,1.7-4.2c6.7-4.2,13.7-7.8,19.5-13.7c5.9-5.8,13.5-9.9,19.2-16.2c1.1-1.2,3.2-2.1,1.8-4.6
+ c-11.6,9.3-23.5,18-37.4,23.5c-4.1,0.7-7.9,2.2-11.1,5.1c-3,0-5.7,1.3-7.8,2.9c-8.4,6.4-17.6,10.9-27.4,14.5
+ c-4.9,1.8-9.9,3.5-14.5,5.8c-7.8,3.9-12.8,10.9-18.2,17.3c-4.3,5.1-8.9,10.4-14.7,13.2c-7.5,3.5-15,7-22.4,10.7
+ c-4.3,2.2-9.1,4-11.8,8.6C133.6,146.2,133.3,146.6,133,147z"/>
+<path style="fill:#FFFFFF;" d="M156,405c-0.1-0.4-0.3-0.9-0.4-1.3c-0.1,0.1-0.4,0.2-0.4,0.3C155.5,404.3,155.7,404.7,156,405
+ c0.1,0.8,0.2,1.5,0.4,2.2c0.1-0.1,0.3-0.1,0.4-0.3C157.1,406.1,156.7,405.4,156,405z"/>
+<path style="fill:#FFFFFF;" d="M158.3,363.3c-0.6,13.8,30.6,108,37.7,113.3C184.1,438.5,177.3,399.2,158.3,363.3z"/>
+<path style="fill:#FFFFFF;" d="M160,416.7c2.4,10.3,6.3,20.3,7.5,30.7c1,8.3,3.7,15.7,7.3,23c0.7,1.4,1,3.9,3,3.2
+ c2.1-0.7,1.2-3.2,0.9-4.9C175.2,450.5,166,434.2,160,416.7z"/>
+<path style="fill:#FFFFFF;" d="M154.9,440.7c1.1,4.6-1.3,9.5,1.6,13.9c4.7,7.2,6.8,9.6,9.3,10.6
+ C161.3,457.3,159.4,448.5,154.9,440.7z"/>
+<path style="fill:#FFFFFF;" d="M153.4,398.4c0.1-0.3,0.1-0.5,0.2-0.7c-0.1,0-0.2,0.1-0.4,0.1C153.3,398,153.3,398.1,153.4,398.4z"/>
+<path style="fill:#FFFFFF;" d="M154.4,401.3c0.4,0,0.5-0.2,0.2-0.5c0,0-0.2,0.1-0.4,0.1C154.3,401,154.3,401.1,154.4,401.3z"/>
+<path style="fill:#FFFFFF;" d="M157.8,409.9c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.2,0.2-0.3,0.3c0.1,0.1,0.3,0.3,0.4,0.4
+ C157.7,410.2,157.7,410,157.8,409.9z"/>
+<path style="fill:#F7E3E5;" d="M261.9,67.9c13.9-5.5,25.8-14.2,37.4-23.5c1.4,2.5-0.7,3.4-1.8,4.6c-5.7,6.3-13.4,10.4-19.2,16.2
+ c-5.9,5.9-12.8,9.5-19.5,13.7c-2,1.2-1.8,2.6-1.7,4.2c0.2,2.4,2.4,5.1-1.5,6.7c-0.9,0.4-0.3,2,0.8,2.3c10.8,2.7,19.3,11.1,30.7,12
+ c-0.3,2.4,1.2,2.7,3.1,3.3c1.7,0.6,4.5-0.3,5,2.7c-0.5,2.7,1.4,3.9,3.1,5.2c2.2,1.7,4.5,3.3,6.8,4.9c-0.1,2.6-1.6,2.1-3.5,1.9
+ c-1.9-0.2-3.9-2.1-6.7,0.2c7.9,2.4,15.2,4.6,22.5,6.7c17.3,5,35,8.2,52.5,12.1c6,1.4,7.6,3.4,8.1,9.8c-15.4-0.4-30.7-2.2-46.1-0.1
+ c-0.4-0.5-0.7-0.3-0.9,0.2c-0.1,2,1.6,2.4,2.9,2.8c10.9,3.4,21.9,6.1,33.1,8.2c0.5,0.8,1.2,0.9,2.1,0.8h0.1
+ c-5.6,1.7-11.7,1.1-17.1,3.7c1.1,0.5,1.3,0.7,0.9,1.5c-1.6-0.2-3.3-0.2-4.9-0.5c-13-2.7-25.8-5.7-38.9-7.7c-3-0.5-7.4-2.4-8.3,0.4
+ c-0.7,2.2,4.5,2.9,7.3,3.6c16.1,4.2,32.6,5.5,48.9,8.3c1.4,5.3,7.2,3,10,5.8c-13.3,0.4-26.6,0.8-39.8,1.2c0.3-0.9,2.1-2-0.8-2.3
+ c-5.2-0.5-10.5-1.3-15.6-2.6c-20-4.9-39.4-11.4-58.1-20.1c-11.5-5.3-23.2-10.4-31.7-20.3c-1.2-3-2.7-6-3.6-9.1
+ c-1.4-4.7,0.7-6.9,5.2-5.4c3.9,1.3,4.7-0.3,4.8-3.5c1.5,0,3,0.1,4.3,0.9c6.5,4,13,7.9,19.5,11.8c7.4,4.3,14.6,8.8,23.2,10.7
+ c15.3,3.3,30.6,7.2,45.9,10.4c2.6,0.5,5.5,2.5,9.1-0.1c-8.9-3.7-17.6-6-25.9-9.5c-10.5-4.4-20.4-8.9-27.1-18.9
+ c-2.3-3.4-5.8-6.2-10.5-7.8c-8.8-2.9-17.6-5.9-25.5-10.9c-5.2-3.3-9.9-3-14.9,0.7c-1.4,1-2.5,2.2-2.4,4.1c-2.4,2.8-6.1,4.4-8,7.8
+ c-3-2.6-5.5-0.1-8.3,0.6c-4.4,1.3-7.1,5.2-11.2,7c0.3-1.6,0.6-3.2,1.5-4.7c2.4-4.1,2.4-4.9,1.2-10.1c-5,5.4-8.7,11.7-12.4,17.9
+ c-1.3,2.1-2.3,4.6-1.8,7.1c1.7,7.9,0.2,16.2,2.8,24c-1,0.6-1.4,1.9-2.8,1.9c-4.2,0.1-3.5,1.9-1.5,4.2c1,1.1,1.7,2.4,2.8,3.5
+ c9.7,9.7,22.1,15.4,33.7,22.4c1.6,0.9,3.3,1.8,5.3,1.3c-0.1-1.4-1.1-1.6-1.8-1.9c-8.7-4-16.3-9.5-23.5-15.8
+ c-1.2-1.1-2.2-2.6-4.1-2.6c-2.8-0.1-3.5-2.2-4.1-4.3c1.2-1.7-0.3-2.6-1.2-3.7l0.1,0.1c-0.9-3.7-2.1-7.3-2.5-11.1
+ c-0.6-5.8,0.6-11.2,5.3-16.1c1.4,7.4,3.1,13.9,9.2,18.1l0,0c0.1,1.9,1.3,2.8,3,3l0,0c0.3,0.3,0.7,0.7,1,1c3.3,1.6,5.1,4.9,8.2,6.9
+ c10.2,6.5,20,13.5,30.2,19.9c5.5,3.4,11.2,6.8,18.1,7.8c-0.1-2.3-3-1.9-3-4.3c4.4-1,9.2,0.5,13.6-0.9c2.7-0.8,5.1-0.2,7.7,0.9
+ c9.5,4.3,18,10.4,27.9,14c5.9,2.1,11.3,5.4,17.8,5.8c-8-7-16.3-13.5-25.8-18.3c-8.4-4.3-16.2-9.9-24.9-13.4
+ c-9.1-3.7-19.1-5.3-28.5-8.4c-6.9-2.3-11.7-7.5-16.5-13c2.2-1.1,3.1,0.1,4.3,0.6c6.5,2.8,12.5,7.1,19.6,8.2
+ c23.2,3.5,44.9,12.4,67.4,18.2c0,1.4,0.9,2.1,2.1,2.5c6.1,2.1,12,4.8,18.5,5.5c10.9,1.2,21.2,5.8,32.3,6.3c0.4,0,0.7,1,1.1,1.5
+ c-0.8,0.2-1.4,0.6-2,1.3c-5.1,6.5-7.1,6.6-13.9,1.7c-1.3-0.9-2.7-3.3-4.5-1.6c-1.5,1.5-0.1,3.4,0.6,5c2.6,5.6,7.2,9.8,10.9,14.6
+ c-2,1.9-4.6,1.4-6.6,0.9c-7.5-2.1-15.3-2.7-22.8-4.3c-20.6-4.4-41.7-6.2-62.2-11.4c-1.5-0.4-3.3-0.7-4.6,1c-8-3-16-6-24-9
+ c2.5,3,5.9,4.3,9.2,5.7c33.4,14.2,67.9,25.1,103.4,32.6c1.7,0.4,5-0.4,5,2c0,2.7-3.3,2.8-5.4,3.4c-1.1,0.4-2.3,0.2-3.5,0.2
+ c-10.6,0.7-20.8-1.3-31.1-3.7c-15.9-3.8-31.1-9.5-46.6-14.6c-1.4-0.9-2.7-2-4.7-1.4c1.3,1.3,2.8,1.6,4.2,2
+ c24.1,13.9,50.8,19.9,77.6,25.5c11.8,2.4,23.8,4.1,35.7,6.1c0.3,2.3,2.4,2.3,3.9,3.1c4.1,2.1,9,2.8,12,6.8c-0.7,0-1.3,0-2,0
+ c-0.9-1-2-0.8-3.1-0.7c-6.1-0.4-12.2-0.8-18.3-1.2c0,0.3-0.1,0.6-0.1,0.9c11.8,2.7,23.7,5.5,35.5,8.2c-1.7,1.7-3.7,1-5.5,0.7
+ c-5.5-1.1-10.6-0.1-15.5,2.4c-1.6-0.2-3.3-0.2-4.9-0.5c-14.2-2.2-28.4-4.5-42.6-6.6c-15.5-2.3-31.2-3.5-46.8-4.7
+ c-1.4-0.1-3-0.6-4.1,1.2c2.7,1.3,5.4,2.6,8.4,2.7c0.4,0.3,0.7,0.5,1.1,0.8c0.6,0.1,1.2,0.1,1.9,0.2c0,1.7,0.7,2.4,2.5,3
+ c4.2,1.4,8.3,3.2,11.7,6.3c2.9,2.7,2.7,4.4-1,6c-10.2,4.4-20.9,7.2-31.4,10.5c-4.1,1.3-8,4-12.8,3.1c-0.1-2,0.3-4-0.5-5.9
+ c-1-2.3-2.4-3.6-5-2.7c-9.7,3.3-19.3,6.9-29.1,10.2c-13.5,4.5-27.1,7.5-41.6,6.3c0.5-0.4,0.7-0.7,1-0.7c15.6-0.6,29.3-7.1,43.2-13.1
+ c2.9-1.3,4.7-2.9,2.7-6.8c-7.5-15.1-14.8-30.3-25.6-43.3c-7-8.4-13.3-17.3-20.9-25.2c-2.6-2.7-4.7-5.8-7-8.7c0.3-0.3,0.6-0.5,1-0.8
+ c6.6,5.2,13.3,10.3,19.9,15.5c1.4,1.1,2.8,3.1,4.7,1.6c2-1.6,3.6-0.3,5,0.4c4.9,2.5,9.5,5.3,14.4,7.9c3.7,1.9,7.5,3.6,11.2,5.3
+ c-7.7-7.8-17.8-11.9-25.5-19.5c20.4,11.5,40.7,22.9,63.5,28.9c-5.4-3.1-11-5.6-16.6-8.4c-12.5-6.2-25.1-12.1-37.1-19.4
+ c-17.1-10.3-34-20.7-48.8-34.1c-7.8-7.1-15.7-14.4-17.6-25.7c-0.4-2.5-2.1-4.1-4-4.6c-3.9-0.9-7.2-3.2-10.9-4.4
+ c-1.8-0.6-3.3-0.5-4.6,0.7c-1.5,1.4-0.1,2.8,0.4,4.1c3.9,8.8,7.2,17.8,11.9,26.2c6.6,12,13,24.2,23,33.8c5.3,5.1,9.8,10.7,13.8,16.8
+ c8,12.2,14,25.5,21.6,37.9c0.4,0.7,0.8,1.6,0,2.3c-0.8,0.7-1.6,0-2.1-0.6c-8.7-9.2-19-17-24.6-29c-4.4-9.4-9.1-18.7-15.1-27.2
+ c-2.1-3-3-6.6-5.8-9.2c-1.5-1.3-2.5-1.5-3.5,0.3c-0.6,1.1,0.1,3.1-1.9,3c-1.8-0.1-1.8-2.1-2.5-3.4c-5.3-10.1-10.3-20.4-17.6-29.3
+ c-0.9-1.1-1.4-2.6-2.9-2c-8.4,3-19.3,2.1-22.5,13.7c-0.3,1.2-1,2.3-2.4,1.8c-1.3-0.5-2.4-1.5-2.3-3c0.1-0.9,0.8-1.8,1.2-2.6
+ c0.9-1.7,0.7-3.2-0.6-4.6c-1.4-1.5-2.7-1.2-4.5-0.6c-5.3,2-8.5,6.7-13.1,9.6c-1.3,0.8-2.8,2.2-1.8,4.2c1,1.8,2.8,1.7,4.4,1.3
+ c3.7-0.8,7.4-1.8,11.1-2.6c3.4-0.8,5.6,0.1,5.1,4.2c-1.4,1.4-2.7,2.9-4.1,4.3c-3.1,3.2-6.4,6.3-6.1,11.4c-4.4-1.3-8.8-2.8-12.1-6.2
+ c0.4-1.6,0.7-3.2,1.1-4.8c0.5-1.9-0.3-3.3-1.8-4.3c-1.9-1.2-2.7,0.7-3.5,1.7c-5.2,5.9-7.9,12.9-8.8,20.7c-3.1,0.7-2,4-3.5,5.7
+ c-3.3,3.8-2.3,7.7-0.4,12c3.7,8.3,8.9,15.6,14.4,22.5c4.5,5.7,9.7,11,16.1,15.3c5.3,3.5,11,6.6,15.4,11.5c1.7,1.9,2.4,3.3,0.4,5.3
+ c1.9,4.4,5.9,6,9.9,7.6l0.1,0.1c3.6,4.3,8.4,7,13,9.8c1.8,5,3,11,8.7,12.5c7.4,2,14.2,5.4,21.8,6.7c8,1.4,16.1,2,24,3.6
+ c2.7,0.6,5.9,1.9,10.3,0.2c-11.6-2.9-21-7.8-30.8-11.9l0,0c4.7-0.6,8.9,1.3,13.1,2.6c17.2,5.3,34.7,6.4,52.6,4.4
+ c14.3-1.6,28.4-4.1,42.8-5.3c3.3-0.3,7-0.1,10.3-1.4c1.6-0.6,3.4-1.1,3.8-2.8c0.5-2-1.4-2.8-2.8-3.6c-3.9-2-7.9-4-11.8-5.9
+ c0.9-0.9,2.1-0.8,3.3-0.9c9.3-1.3,18.6-2.8,28-3.7c11.7-1.1,23.1-4,34.9-4.2c7.4,3.5,13.1,9,16.9,16.1c2.8,5.2,0.4,8.3-5.4,9
+ c-6.1,0.7-12.2,0.6-18.3,1.1c-13,1.1-25.9,2.7-38.9,3.7c-13.6,1.1-27,2.2-39.7,7.7c-4.7,2-9.6,3.4-14.5,4.8
+ c-7,2.1-14.1,3.9-21.2,5.9c-1.6-0.4-3-1.1-4.7-1.4c-10.5-1.5-20.9-3.4-31.4-4.9c-7.8-1.1-15-3.9-22.5-6.2c-1.1-0.3-3.3-2.4-3.2,1.1
+ c-7.8-0.7-15.1-2.5-21.1-7.9c1.6-0.7,2.2-1.9,1.9-3.6c-0.1-0.8-0.6-1.2-1.4-1c-5.4,1.8-7.8-2.1-10.5-5.4c1.3,0,2.7,0,4,0
+ c0.4,0.4,0.8,0.9,1.2,1.3c0.1-0.2,0.3-0.4,0.4-0.6c-0.5-0.2-1.1-0.5-1.6-0.7c-1-1.1-1.8-2.4-2.9-3.4c-10.9-9.4-22.2-18.4-33.1-27.9
+ c-14.4-12.5-29.3-24.4-44-36.5c-4.4-3.6-6.7-7.6-6.1-13.6c0.6-5.8,1.6-11.4,4.1-16.7c2.4-5.2,6.3-9.6,9.8-13.9
+ c8.6-10.4,17.2-21,27.5-29.8c7-5.9,13.2-12.4,19.2-19.2c1.5-1.7,2.8-3.9,5.4-4.1c0.3-0.3,0.7-0.6,1-1l0,0c0.8,0,1.6-0.1,2-1l0,0
+ c0.3-0.3,0.6-0.7,1-1l0,0c0.3-0.4,0.6-0.8,1-1.2c2.7-4.6,7.4-6.4,11.8-8.6c7.4-3.7,14.9-7.2,22.4-10.7c5.8-2.8,10.4-8.1,14.7-13.2
+ c5.5-6.4,10.5-13.4,18.2-17.3c4.7-2.3,9.6-4,14.5-5.8c9.8-3.5,19-8.1,27.4-14.5c2.1-1.6,4.9-2.9,7.8-2.9c1.1,0,2.6,0.5,3.3,0
+ C256.7,71.2,261.3,72.5,261.9,67.9z"/>
+<path style="fill:#E794A1;" d="M419,270c-11.8-2.7-23.7-5.5-35.5-8.2c0-0.3,0.1-0.6,0.1-0.9c6.1,0.4,12.2,0.8,18.3,1.2
+ c0.9,0.9,1.9,0.9,3.1,0.7c0.7,0,1.3,0,2,0.1c10.9,0.2,21.9,1.6,32.7,0.1c10.9-1.5,19.3-7.7,25.7-16.2c2.4-3.2,1.6-7.6-1.6-9.9
+ c-3.2-2.2-5.5,1.6-8,3.2c-0.9,0.6-1.4,1.8-2,2.8c-5.2,8.4-12.9,11.9-22.5,12.3c-13.5,0.6-26.8-1.5-40.2-2.1
+ c-11.9-2-23.9-3.7-35.7-6.1c-26.8-5.5-53.5-11.6-77.6-25.5c0.2-0.2,0.4-0.4,0.5-0.7c15.4,5.1,30.7,10.8,46.6,14.6
+ c10.2,2.4,20.5,4.4,31.1,3.7c1.2-0.1,2.4,0.1,3.5-0.2c2.1-0.7,5.4-0.8,5.4-3.4c0-2.4-3.3-1.7-5-2c-35.5-7.5-70-18.4-103.4-32.6
+ c-3.3-1.4-6.7-2.7-9.2-5.7c8,3,16,6,24,9c13.7,6.2,28,10.2,42.4,14.1c16.6,4.6,33.4,8.5,50.5,11c1.3,0.2,2.6,1.1,3.2-1
+ c1.1-3.5,2.8-6.9,0-10.3c-3.7-4.9-8.3-9-10.9-14.6c-0.7-1.6-2.2-3.6-0.6-5c1.8-1.8,3.2,0.6,4.5,1.6c6.8,4.9,8.8,4.8,13.9-1.7
+ c0.6-0.7,1.2-1.1,2-1.3c1.8,0.3,3.7,0.3,5.3,1c13.3,4.9,26.7,9.8,39.9,15c13,5,28.3-0.8,34.9-13.5c1.2-0.2,2-0.9,2-2.2v0.1
+ c2.6-0.8,2.8-3.1,2.9-5.2c0.1-2.3-0.3-4.7,0-6.9c0.3-2.9,1.4,0.2,2.1-0.1l0.1,0.2c0.1,1.7-0.7,3.5,0.8,5c0,0.4,0.1,0.7,0.1,1.1
+ c0,1.4-0.5,2.9,0.8,4.1c0.3,0,0.7,0,1,0c0,0.6,0.1,1.3,0.1,1.9c-0.9,3.5-2.1,7-2.8,10.6c-0.5,2.9-1.2,6,1.2,8.5
+ c3.5,3.6,8.3,6.5,6.7,12.8c0.6,1.6,1.5,2.8,3.2,3c2.1,3.1,4.5,6.1,4.7,10.2c0.1,2.7,2.7,3.5,5,4.1c4.5,1.3,8.9,2.6,13.4,3.9
+ c3.2,0.9,4.4,2.6,2.8,5.9c-1.2,2.6-2.5,5-4.1,7.4c-2,3-3.3,6.2-1.3,9.7c-3.6,2-7.1,3.9-10.7,5.9c-0.4,0.3-0.9,0.7-1.3,1
+ c-4,3.1-4.9,7.4-5.1,12.1c-2.1-0.8-4.1-1.6-6.2-2.4c1.4,2.3,3.4,4,4.4,6.4c-5,4.1-10.5,7.7-16.1,11c-0.7,0.3-1.3,0.7-2,1h0.1
+ c-1.7-0.3-3.4-0.6-5.2-0.9c-0.2,1.9,1.9,1.7,2.3,3c-6.5,4.3-13.3,8.3-19.5,13c-3.5,2.7-7.3,3.9-11.4,5.2c-3.3,1-6.6-1.3-9.7,0.6
+ l-0.2-0.2l-0.3,0.1c-3.1-0.1-6,1.3-7.1,3.6c-3.1,6.2-8.4,5.5-13.8,5.5c-2.7,0-5.5,0.8-8.2,1.2c-2.3,0.4-4.5,1.1-6.2,2.8
+ c-4,3.3-8.4,4.9-13.7,4.2c-1.1-0.1-2.3,1.1-3.4,1.6c-4.6-4.8-7.4-0.4-10.5,2.1c-1.2-1.2-2.4,0.8-3.6,0.2c-4.1,0.4-8.4-0.6-12.5,0.6
+ c-6.3-1.6-13.1,0.3-19.3-2.6c7.9-2.3,16.2-0.5,24.2-1.9c10.2-1.8,20.7-1.7,30.7-5.8c10.4-4.3,21-8.2,32-10.8
+ c6.3-1.5,12.6-2.9,18.8-4.7c2.8-0.8,5.6-2.2,5.5-6.1c-0.1-3.6-2.6-4.9-5.4-5.7c-5.3-1.5-10.6-2.7-15.9-4.1c-5-1.3-10.1-2.7-15.1-4.1
+ c9.8-1.9,19.6-2.5,29.2-4c10.3-1.6,20.7-2.5,30.7-5.8c1.2-0.4,2.9-0.6,2.9-2.2c0-1.5-1.3-2.3-2.5-2.8c-1.5-0.7-3.1-1.3-4.7-1.7
+ c-9.6-2.1-19.5-1.9-29.3-2c-9.7-0.1-19.5,1.5-29,3.7c-9.6,2.2-19.3,4.1-29,6.1c-11.8,0.2-23.2,3.1-34.9,4.2
+ c-9.4,0.9-18.7,2.5-28,3.7c-1.1,0.2-2.3,0-3.3,0.9c-1.3,0.1-2.6,0.2-3.9,0.3c-0.3,0-0.7,0-1,0c-9.2,1-18.5,1.9-27.7,3
+ c-25,3-50,4.3-75.2,3.7c-11.7-0.2-23.2-1.5-34.1-6.1c-4.6-2.9-9.4-5.5-13-9.8c5.5,2.3,11,4.6,16.8,6c29.3,7.4,59.1,8.2,89,5.6
+ c10.1,0,20.1-1.7,30.2-2.6c16.3-1.5,32.6-3.9,48.7-6.9c18.6-3.5,37-7.4,55.5-11.3c6.7-1.4,13.3-3.3,21-5.2
+ c-15.5-2.6-29.7-4.9-43.9-7.4c-14.8-2.6-29.6-5.4-44.5-8.1c-0.6-0.1-1.2-0.1-1.9-0.2c-0.4-0.3-0.7-0.5-1.1-0.8
+ c-3.1-0.1-5.7-1.4-8.4-2.7c1-1.8,2.6-1.3,4.1-1.2c15.7,1.2,31.3,2.4,46.8,4.7c14.2,2.1,28.4,4.4,42.6,6.6c1.6,0.3,3.3,0.3,4.9,0.5
+ c0.4,0.3,0.8,0.7,1.2,0.8c12.6,2.1,25.3,3.6,37.7,6.3c14.5,3.1,27.9,0.9,41.1-5c4.3-1.9,5.9-5.5,7.4-9.4c0.7-1.7-0.2-2.6-1.9-2.5
+ c-1.5,0-3,0.1-4.4,0.4C459.3,267.6,439.4,271.3,419,270z"/>
+<path style="fill:#7A7A7A;" d="M378.8,342c1.7-1.7,3.9-2.4,6.2-2.8c4.1,3,9.1,4.3,12.9,7.9c2.3,2.2,4.3,6.8,7.5,5.4
+ c3.1-1.3,2.1-6.1,2.6-9.5c0.8-5.2,0.2-11.1,6.1-14.2l0.3-0.1l0.2,0.2c5.9-0.1,10.6,3.3,15.8,5.4c3,1.2,6.7,3.5,9.1,0.2
+ c2.3-3-0.9-5.8-2.6-8.3c-0.2-0.2-0.1-0.6-0.2-1c7.6,1.4,14.9,3.4,22.5,4.1c5,0.5,7.2-1.1,7.9-5.8c0.8-5.6-0.3-9.8-6.3-11.6
+ c-1-0.3-1.8-1.3-2.7-2c0.1-0.6,0.1-1.2,0.2-1.9h-0.1c0.5,0,1-0.1,1.6-0.1c7.6-0.3,15.3,2,22.9-0.6c0.3,0.3,0.5,0.5,0.8,0.8
+ c-2.4,4.4-5.1,8.6-7.2,13.1c-17.7,39-36.4,77.6-51.8,117.6c-3.2,8.2-8.1,13.9-16.4,17.6c-7.9,3.4-15,8.5-22.4,13
+ c-8.9,5.5-16.7,12.4-26.7,16.4c-22.8,9.2-45.3,19.1-70.3,21c-8.1,0.6-16.1,3.1-24.2,1.1c-6-1.4-11.9-3-17.9-3.9
+ c-1.3-0.2-2.3-0.5-2.5-2c-0.5-4-3-6.9-5.1-10c2.2-0.1,2.2-1.2,1.7-3c-0.6-2.3-1.4-4.8,0.5-7c2.3,3.1,4.5,6.4,7,9.4
+ c2.1,2.5,4.6,3.1,6.7-0.2c1.6-1.1,2-0.3,2.7,1.2c0.7,1.6,2.1,3.3,4.2,2.1c1.7-1,3.7-2.3,3.1-5c-0.2-0.9-0.3-1.9-0.5-2.8
+ c3.7,0.7,4.7,4.4,7,6.6c5.3,5.1,8.2,4.8,12-1.4c0.8,0,1.5,0,2.3-0.1c5.6,0,10.9-0.9,14.4-6c1.8,1.7,2,4,2.2,6.3
+ c0.1,1.2,0.8,1.7,1.9,2c0.9,0.2,1.3-0.6,1.3-1.1c0.4-4.3,3.2-4.7,6.6-4.1c7.7,5.6,8.4,5.5,12.9-1c0.6-0.3,1.3-0.9,1.8-0.7
+ c5.7,1.7,7.8-1.8,9.2-6.3c3.5-11.4,3.6-23.5,6.5-35c1.2,0.5,0.2,3.1,2.3,2.9c0.4,0.9,0.9,1.8,1.2,2.7c2.3,6.3,3.2,6.5,8,2.3
+ c0.3,6.3-3.2,11.9-3.9,19.3c0.9-1.6,1.2-2,1.4-2.4c8.2-22.7,15.6-45.7,22.7-68.8c3.1-9.8,4.6-19.6,3.1-29.8
+ c-0.7-2.9,1.1-5.6,0.7-8.5c1-2.3,0.2-4.6,0.1-6.8c1.5-2.3,1.3-4.6-0.1-6.9C377.7,347.3,377.5,344.5,378.8,342z M392,454
+ c0.4-0.9,0.8-1.8,1.3-2.7c15.3-35.7,30.5-71.4,45.7-107.1c0.5-1.1,1.8-2.7,0.3-3.6c-1.9-1.1-2.5,1.1-3.2,2.3
+ c-4.8,8.5-8.8,17.5-12.7,26.5c-11.4,26.7-23.8,53-30.9,81.3C392.4,451.8,392.2,452.9,392,454c0,0.1-0.1,0.2-0.2,0.3
+ C391.9,454.2,391.9,454.1,392,454z M450,348c-1.5,0.8-1.8,2.3-2.1,3.9c-0.7,1.3-1.5,2.6-2.2,3.9c-13.8,25.5-23,52.9-33.5,79.8
+ c-0.7,1.9-2.4,3.7-1.7,7.1c1.1-2.4,1.9-3.8,2.5-5.3c6.2-14.7,12.5-29.3,18.7-44c5.7-13.6,11.1-27.3,16.7-41
+ C449.3,351,450.1,349.7,450,348c0.3-0.3,0.5-0.7,0.8-1c-0.2-0.1-0.4-0.2-0.5-0.4C450.2,347.1,450.1,347.5,450,348z M403.3,362.9
+ c-8.2,13.7-30.6,81.4-27.7,96.7C385.5,427.2,396.7,395.7,403.3,362.9z M406.6,450.6c-0.1,0-0.3,0-0.3,0.1c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0.2,0,0.4-0.1,0.6-0.1C406.7,450.9,406.7,450.7,406.6,450.6z M451.6,343.8c-0.1,0-0.2,0-0.2,0.1c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0.2,0.4,0.3,0.3,0.4-0.1C451.7,344.1,451.7,344,451.6,343.8z M409.8,444c-0.1-0.3-0.2-0.6-0.3-0.8c-0.1,0.1-0.3,0.2-0.3,0.4
+ c0,0.3,0.1,0.6,0.1,0.9C409.5,444.3,409.7,444.2,409.8,444z M407.9,448.3c-0.1-0.3-0.2-0.5-0.3-0.8c-0.1,0.1-0.4,0.2-0.4,0.3
+ c0.1,0.3,0.2,0.6,0.3,0.8C407.6,448.5,407.8,448.4,407.9,448.3z"/>
+<path style="fill:#272424;" d="M238.8,492c2.1,3.1,4.6,6.1,5.1,10c0.2,1.5,1.2,1.8,2.5,2c6.1,0.9,12,2.5,17.9,3.9
+ c8.1,1.9,16.2-0.5,24.2-1.1c25-1.9,47.5-11.8,70.3-21c9.9-4,17.8-10.9,26.7-16.4c7.4-4.5,14.5-9.6,22.4-13
+ c8.3-3.6,13.2-9.4,16.4-17.6c15.5-40,34.1-78.6,51.8-117.6c2.1-4.5,4.8-8.7,7.2-13.1c0.4-0.3,0.8-0.5,1.2-0.8
+ c0.3,0.3,0.6,0.5,0.8,0.8c-2.3,6.4-6.9,11.9-8.3,18.7c-17.8,33.3-30.8,68.8-45.5,103.9c10.6-2.9,17.4,3,24.3,8.6
+ c3.3,2.7,6.8,5.3,10.3,7.8c2.6,1.9,5.1,3.6,8.7,4c5.9,0.7,8.4,5.6,9.2,10.9c0.9,6.8,3.2,12,9.5,15.8c5.9,3.5,4.8,10.9-1.5,13.6
+ c-12.3,5.2-24.4,10.9-37,15.1c-9.5,3.1-19.8,4.6-29.9,4.2c-19.1-0.6-37.6,3.3-56.3,5.9c-17.6,2.4-35.2,3.1-53.1,0.6
+ c-18.5-2.5-36.7-7.3-55.7-6.6c-7.6,0.3-14.7-4.3-22.2-6.2c-1.9-0.5-3.8-1.2-5.7-1.8c0.4-3.7,3.4-6.9,1.9-10.9
+ c-0.1-1.5,1-2.6,1.7-3.7C237.5,488.8,237.2,491.2,238.8,492z"/>
+<path style="fill:#F5CFD6;" d="M295,110c-0.4-3-3.3-2.1-5-2.7c-1.8-0.7-3.4-0.9-3.1-3.3c0.7,0,1.3,0,2,0c5.6,1,11.2,2.3,16.9,2.9
+ c15.1,1.8,30.3,2.9,44.8,8.1c1.3-3.3-1.5-5.1-2.4-7.3c-4.5-10.6-11.1-19.4-23-22.5c-6.3-1.6-11.4-5.9-18.2-7.5
+ c4.3,0.1,5.8-1.2,4-5.1c-0.5-1.1-0.4-2.7,0.9-3.6c0.2,1.8,1.1,3.4,2.8,3.8c11.1,2.2,19.3,9.9,28.9,14.9c5.5,2.9,11.4,4.4,16.9,7.1
+ c2.1,1,4.3,1.9,5.4,4.2c-6.9-1.6-13-5.8-20.4-6.3c16.6,11.8,32.6,24.2,47.7,37.8c-3.4-9-8.9-16.4-16.2-22.5
+ c-2.8-2.3-5.4-4.8-8.1-7.1c7.5,1.2,14.2,3.2,18.5,10.6c6.1,10.5,15.1,18.7,23.7,27.2c1.4,1.4,2.7,2.9,4.1,4.3
+ c-5.2-0.8-9.7-3.6-13.6-6.8c-6.3-4.9-13.8-2.3-20.5-4.1c-0.6-0.2-1.4,0-1.6,0.8c-0.2,0.8,0.2,1.3,0.8,1.6c5.4,2.7,10.6,6.2,16.9,6.4
+ c9.4,0.3,15,6.1,19.8,13c-9.1-1-17.8-4.1-27.1-3.9c11.2,3.9,22.6,7.5,33.9,10.9c2.4,0.7,4.6,1.6,2.1,4.2c-1.3,1.4-3.5,2.5-5.9,1.3
+ c-4-2.1-8-4-12-6c-9.5-4.7-19.2-8.9-30.1-9.5c-0.5-6.4-2.1-8.4-8.1-9.8c-17.5-4-35.2-7.2-52.5-12.1c-7.3-2.1-14.6-4.3-22.5-6.7
+ c2.8-2.3,4.7-0.3,6.7-0.2c1.8,0.1,3.4,0.6,3.5-1.9c1.5-0.6,0.7-2.6,1.9-3.3c1,5.6,4.7,8.8,8.5,6.7c4.2-2.3,8.4-1.2,12.6-1.3
+ c1,0,2.4,1.3,2.8-0.6c0.3-1.3-0.8-1.9-1.9-2.5c-5.6-3.4-11.5-5.6-18-6.2C305.6,111.9,300.3,111,295,110z M343.1,91.8
+ c0.1-0.1,0.2-0.2,0.3-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.3,0.3-0.4,0.4C342.8,91.7,343,91.7,343.1,91.8z"/>
+<path style="fill:#BDBCBC;" d="M154.9,325c6,5.5,13.3,7.2,21.1,7.9l0,0c1.4,1.9,3.3,2.2,5.5,2l0,0c0.8,0.9,1.8,1.1,3,1
+ c1.5,0,2.6,0.4,3,2c1.6,1.3,3.4,2.3,5.5,2l0,0c0.3,1,1.1,1.2,2,1l0,0c-1.4,3.7-0.7,7.7-1.2,11.5c-0.3,2.5-0.1,5.7-3.6,6.3
+ c-3.3,0.6-4.6-1.9-5.9-4.3c-1.6-3-2.5-6.2-3.1-9.4c-0.6-3.3-2.1-3.7-4.9-2.3c-4.8,2.3-9.3,5.2-14.5,6.7c-1.1,0.3-2.2,0.8-3.3,1.1
+ c-8.7,2.1-12-0.9-10.1-9.7c0.3-1.6,1-3.2,0.4-5.2c-3.2,0.4-5.5,2.7-8.1,4.2c-7.2,3.9-11.2,2.7-14.6-4.7c-1.1-2.4-2.3-4-5.2-1.8
+ c-2.2,1.6-4.9,2.9-7.2,0.4c-2.2-2.4-3.2-5.4-1.5-8.7c0.6-1.1,2.4-2.2,1.4-3.4c-1.1-1.5-3.1-0.7-4.6-0.2c-4.7,1.5-9.5,1.5-14.3,1.6
+ c-3.1,0-4.7-1.3-4.5-4.5c0.1-0.8-0.1-1.7,0-2.5c1.1-5.8-1.8-8.8-6.6-11.6c-6.2-3.7-9.6-9.8-10.4-17.1c-0.2-1.5-0.1-3.1-0.6-4.4
+ c-1.5-4.1-1.9-8,0.5-11.8c2.8,0.5,4,3.9,7,4.1c1,1.8,2.1,3.7,3.1,5.5c0.3,0.1,0.6,0.2,0.9,0.4L84,281c0.4,0.6,0.9,1.1,1.3,1.7
+ c1.5,1.9,2.5,4.2,4.8,5.4L90,288c0.7,1.1,1.5,2.3,2.2,3.4c0.6,2.4,1.8,4.4,4.7,4.4c0.1,0.1,0.2,0.3,0.3,0.4c-0.2,1.5,0.7,1.8,2,1.8
+ c3,2,6.2,3.4,9.7,4c2.3,2,4.9,3.8,7.8,3.9c5.8,0.3,10.5,3.3,14.7,6.3C138.7,317.6,146.8,321.3,154.9,325z"/>
+<path style="fill:#110D0E;" d="M315.8,348.1c6.2,2.9,12.9,1,19.3,2.6c4.2,0.4,8.4,1.3,12.5-0.6c1.2,0.6,2.3-1.3,3.6-0.1
+ c-2.1,3.3-3,6.8-3.1,10.7c0,5.6-2.6,7.9-8,7c-6.7-1.1-13.1-3.1-17.9-8.5c-2-2.2-4.3-4.2-6.7-5.9c-5.9-4.3-9.6-3.1-12.6,3.8
+ c-2.3,3.9-4,8.3-7.9,11c-6.4,1.8-9.1,0.2-13.3-7.9c-1,0.7-1.3,1.8-1.6,2.8c-4.2,5-8.8,9.6-15.2,11.8c-8.5,0.2-12.9-5.5-16.7-11.8
+ c-1.7-2.8-3.1-4.1-6-1.8c-4.7,2.2-9.4,4.4-14.1,6.6c-11.9,2-13.4,0.7-14-11.6c-0.1-1.8-0.2-3.6-0.2-5.5c-0.2-4.3,3-4,5.5-3.4
+ c4.1,1.1,8.7,2.1,12,4.5c7.7,5.7,15.9,4.1,24,2.6c7.9-1.5,15.4-5,23.8-4.5c2.1,0.1,4.2-0.8,6.1-1.9
+ C295.3,347,305.6,346.4,315.8,348.1z"/>
+<path style="fill:#F7E3E5;" d="M312,69c-1.3,1-1.4,2.5-0.9,3.6c1.8,3.9,0.3,5.3-4,5.1c6.7,1.7,11.9,5.9,18.2,7.5
+ c11.9,3.1,18.4,11.9,23,22.5c1,2.3,3.7,4.1,2.4,7.3c-14.5-5.2-29.7-6.3-44.8-8.1c-5.7-0.7-11.3-1.9-16.9-2.9c1.3-1.5,3.1-1,4.7-1
+ c7-0.1,14-0.2,21,0c3.6,0.1,4.5-1.3,4.4-4.6c-0.3-10-5.5-15.3-15.3-15.4c-1.5,0-3,0.1-4.5,0c-6.2-0.7-11,0.6-12.9,7.6
+ c-0.5,1.9-2.5,4.3-5.1,4.1c-2.6-0.2-3-2.9-3.7-4.8c-2.3-6-0.2-10.2,5.9-11.5c5.1-1.1,10.4-1.7,15.6-2.3c1.8-0.2,3.1-0.5,3.8-2.5
+ c2.7-7.3,4.3-14.7,4.2-22.7c-0.1-5.4,0.3-10.9,3.3-15.8c0.6-1,1.1-2.1,2.5-2.1c-2.1,5.9-3,12-3,18.3c0,1.8-0.2,3.7,1.9,4.7
+ C310.3,60.3,310.8,64.6,312,69z"/>
+<path style="fill:#F5CFD6;" d="M67,217c-2.6,5.3-3.6,10.8-4.1,16.7c-0.6,6,1.7,10.1,6.1,13.6c14.7,12.1,29.7,23.9,44,36.5
+ c10.9,9.5,22.2,18.5,33.1,27.9c1.1,1,2,2.2,2.9,3.4l0,0c-1.3,0-2.7,0-4,0c-0.3,0-0.6,0-1-0.1c-0.3-0.3-0.7-0.6-1-0.9
+ c-10.4-4.7-20.7-9.4-31.1-14.1c-3.1-3-7.4-3.8-10.9-6c0.3-2.5-1.3-2.8-3.2-3.2c-2-0.5-3.9-1.5-0.4-3.8c-2.1,0.5-4.1-0.7-5.4,1.2
+ c-0.6-0.1-1.2-1.2-1.9-0.2l0.1,0.1c1-0.7-0.1-1.3-0.1-2c1.6-2,0-1.8-1.2-1.8l0.1,0.1c0.2-1.7,0.7-3.6-1.5-4.4
+ c-1.2-0.5-1.2,0.6-1.3,1.3c-0.7,0-1.3-1.2-2-0.2l0.1,0.1c0.9-0.7-0.1-1.2-0.1-1.9c0.9-3.5-1.9-4.6-4-6.2l0,0
+ c0.1-1.4-0.5-2.3-1.8-2.8c-0.9-3-1.9-6-5.2-7.3c-1.7-2.6-3.4-5.2-5-7.8c-0.3-0.4-0.7-0.8-1-1.1l0,0c0-0.8-0.1-1.6-1-2l0,0
+ c0-0.9-0.1-1.6-1-2l0,0c0-0.9-0.2-1.6-1-2l0,0c-0.4-0.3-0.9-0.7-1.3-1c-2.5-2.7-3.6-5.6-2.8-9.4c0.8-3.5-0.7-6.9-2.7-9.8
+ c-1.3-1.8-1.4-3.5,0.4-4.7C60.6,220.9,63,217.6,67,217z"/>
+<path style="fill:#E794A1;" d="M378,151c10.8,0.6,20.5,4.8,30.1,9.5c4,2,8,3.9,12,6c2.4,1.2,4.6,0.1,5.9-1.3
+ c2.5-2.6,0.3-3.4-2.1-4.2c-11.4-3.4-22.7-7-33.9-10.9c9.3-0.3,18.1,2.8,27.1,3.9c11.7,2.3,23.5,4.6,32.4,13.6c0.7,0.7,1.7,1,2.6,1.5
+ c2.1,2.9,6.5,3.7,7,8c-3.3-2.1-5.8-5.4-10-6c-7.8-4.3-16.4-1.4-24.6-2.2c-8.3-0.8-17-0.2-25.5-1.4c-9.9-1.4-19.9-3-29.8-4.5h-0.1
+ c-0.5-0.8-1.2-0.9-2.1-0.8c-11.2-2.1-22.2-4.9-33.1-8.2c-1.3-0.4-3-0.8-2.9-2.8c0.3,0,0.6-0.1,0.9-0.2
+ C347.3,148.8,362.6,150.6,378,151z"/>
+<path style="fill:#5F5F5F;" d="M238.8,492c-1.6-0.8-1.3-3.2-3.1-3.8c0.4-2.2-1-3.8-1.8-5.5c-3.5-7.6-6.3-15.3-7.3-23.7
+ c-1.3-11.2-6.8-21.5-8-32.8c-1.1-10.6-3.5-20.9-6.1-31.2c-1.4-5.6,0.7-10.8,1.7-16.2c0.2-1,0.8-2,1.9-2c1.3,0.1,1,1.5,1.4,2.3
+ c7.2,15.8,10.4,32.8,14.4,49.6c3.6,15.4,4.6,31.2,6.9,46.8c0.4,2.4,1.7,4.3,2.2,6.5c-1.9,2.2-1.1,4.7-0.5,7
+ C241,490.8,241,491.9,238.8,492z"/>
+<path style="fill:#5F5F5F;" d="M264.2,486.7c0.2,0.9,0.3,1.9,0.5,2.8c0.6,2.7-1.4,3.9-3.1,5c-2.1,1.2-3.5-0.5-4.2-2.1
+ c-0.6-1.5-1.1-2.3-2.7-1.2c1.6-5.6-1.5-10.7-2-16.1c-1-10-2.6-20-3.9-30c0.2-1.4,0.5-2.8-0.5-4.1c-1.5-11.9-3-23.9-4.5-35.8
+ c-0.3-6.1-1.5-12.1-0.8-18.2c2.9,0.9,3.8,3.6,4.9,5.9c5.2,10.6,8.6,21.7,9.7,33.6C259.4,446.6,262,466.6,264.2,486.7z"/>
+<path style="fill:#BDBCBC;" d="M205.3,466.4c-1.4-9.9-4.8-19.3-7.3-28.9c-4.6-18.1-9.5-36.2-12.3-54.7c-0.3-2.2,0-3.9,1.9-5.8
+ c3.8,6.3,5.6,13.1,7.7,19.8c7.8,24.8,13.8,50.1,20.2,75.4c0.4,1.6,0.6,3.3,0.4,4.9c-4.3,5.1-4.4,5-6.9-1.1
+ C207.8,472.8,206.6,469.6,205.3,466.4z"/>
+<path style="fill:#BDBCBC;" d="M243,387c-0.7,6.1,0.5,12.1,0.8,18.2c-1.3,1.4-0.9,3.2-0.7,4.8c0.7,6.1,1.9,12.1,2.4,18.1
+ c0.3,3.4,2.4,6.9,0.4,10.4c-4-9.5-6.2-19.5-9.3-29.3c-3.7-11.8-7.1-23.7-10-35.8c-0.6-2.4-0.6-4.1,1.3-5.7c4.7-2.2,9.4-4.4,14.1-6.6
+ c1,1.4,1,3.1,1,4.7C243,372.9,243,379.9,243,387z"/>
+<path style="fill:#BDBCBC;" d="M158.3,363.3c19.1,35.9,25.8,75.2,37.7,113.3C188.9,471.4,157.7,377.2,158.3,363.3z"/>
+<path style="fill:#E794A1;" d="M285.1,348c-1.9,1.1-4,2-6.1,1.9c-8.3-0.5-15.8,3-23.8,4.5c-8.2,1.5-16.3,3.1-24-2.6
+ c-3.3-2.5-7.8-3.4-12-4.5c-2.4-0.6-5.6-0.9-5.5,3.4c-0.2-3.6-2.4-5.2-5.8-5.6c-4.5-0.6-8.3-3.8-13-4.1l0,0c-0.3-1.1-1.2-1.1-2-1l0,0
+ c-1.5-1.7-3.3-2.3-5.5-2c-0.4-1.5-1.5-2-3-2c-0.8-0.9-1.8-1.2-3-1l0,0c-1.4-1.9-3.2-2.6-5.5-2l0,0c-0.1-3.6,2.1-1.5,3.2-1.1
+ c7.4,2.3,14.7,5,22.5,6.2c10.5,1.5,20.9,3.4,31.4,4.9c1.7,0.3,3.2,1,4.7,1.4c2,6,6.4,8.3,13,7.3C262.2,349.9,273.5,347.1,285.1,348z
+ "/>
+<path style="fill:#5F5F5F;" d="M205.3,466.4c1.3,3.2,2.5,6.4,3.8,9.6c2.4,6.1,2.6,6.1,6.9,1.1c1.5,4.8,3,9.7,5.8,14
+ c4.5,6.7,7.1,6.9,12.2,0.9c1.4,4-1.5,7.2-1.9,10.9c-7.3-2-14.3-4.8-21.8-6.1c-6.6-1.1-12.6-9.5-13.4-17.4c0.9,1,1.6,2.1,2.6,3
+ c1.4,1.3,2.6,3.7,4.8,2.6c1.9-0.9,1.6-3.3,1.8-5.3C206.7,475.1,204.3,470.9,205.3,466.4z"/>
+<path style="fill:#F7E3E5;" d="M452,169.1c-0.9-0.5-1.9-0.8-2.6-1.5c-8.9-9-20.6-11.3-32.4-13.6c-4.9-7-10.4-12.7-19.8-13
+ c-6.2-0.2-11.4-3.7-16.9-6.4c-0.6-0.3-1-0.8-0.8-1.6c0.2-0.8,1-1,1.6-0.8c6.7,1.9,14.2-0.8,20.5,4.1c4,3.1,8.4,5.9,13.6,6.8
+ c7.7,5.7,17.5,7.3,25.5,12.4C445.8,158.7,451.4,161.8,452,169.1z"/>
+<path style="fill:#7A7A7A;" d="M484.4,307.4c-0.4,0.3-0.8,0.5-1.2,0.8c-0.3-0.3-0.5-0.5-0.8-0.8c1.2-5.3-3.1-8-5.4-11.6
+ c0.4-1,0.8-1.9,1.2-2.9c2.7,0.5,5.5,1.3,8.2,1.5c4.6,0.2,6.1-2.4,3.6-6.3c-1.9-3-4.1-6-7.1-8.1c0.4-0.3,0.9-0.7,1.3-1
+ c5.6,1.4,11.3,2.8,16.9,4.2c0.9,1.3,0.8,2.3-0.8,2.9c-2,0.6-2.9,2.5-3.9,4.1c-0.6,1-3.4,1.8-0.7,3.6c0.2,3.3-2.2,5.4-3.6,7.8
+ c-4.8,8.6-9.2,17.5-15.1,25.4c1.4-6.8,6-12.3,8.3-18.7c0.7-1.3,1.4-2.6,2.1-3.9c0.2-0.4,0.5-0.9,0.7-1.3c0.9-0.3,1.1-1,1.2-1.9
+ c0.5-0.2,0.8-0.5,0.3-0.9c-0.2,0.2-0.3,0.5-0.5,0.7c-0.9,0.4-1.2,1.1-1,2c-0.8-0.1-0.9,0.4-1.1,0.9C485.5,304.6,485,306,484.4,307.4
+ z"/>
+<path style="fill:#F7E3E5;" d="M369,100.9c2.7,2.4,5.3,4.9,8.1,7.1c7.4,6,12.8,13.5,16.2,22.5c-15.1-13.6-31.1-26.1-47.7-37.8
+ C353,93.2,359,97.4,366,99C367,99.6,368,100.3,369,100.9z"/>
+<path style="fill:#BDBCBC;" d="M160,416.7c5.9,17.5,15.2,33.8,18.7,52.1c0.3,1.7,1.2,4.1-0.9,4.9c-2,0.7-2.4-1.9-3-3.2
+ c-3.6-7.3-6.4-14.7-7.3-23C166.3,436.9,162.4,427,160,416.7z"/>
+<path style="fill:#F7E3E5;" d="M449,171c4.2,0.6,6.8,3.9,10,6l0,0c0.4,0.9,0.7,0.8,1.1,0c3.4,1.7,2.8,4.9,3,7.9
+ c-0.7,0.3-1.8-2.8-2.1,0.1c-0.2,2.3,0.1,4.6,0,6.9c-0.1,2.1-0.3,4.4-2.9,5.2c-0.3-3.2,1-6.2,1.5-9.3c0.5-3.5-2.4-9.6-5.3-9.6
+ C448.6,178.3,448.8,174.9,449,171z"/>
+<path style="fill:#110D0E;" d="M501.1,283.1c-5.6-1.4-11.3-2.8-16.9-4.2c3.6-2,7.1-3.9,10.7-5.9c2.1,2.4,4.1,4.9,6.2,7.3
+ C501.9,281.3,502.6,282.2,501.1,283.1z"/>
+<path style="fill:#BDBCBC;" d="M154.9,440.7c4.5,7.8,6.4,16.6,10.8,24.5c-2.5-1-4.6-3.4-9.3-10.6C153.6,450.2,156,445.2,154.9,440.7
+ z"/>
+<path style="fill:#F5CFD6;" d="M311.9,55.9c-2.1-0.9-1.9-2.8-1.9-4.7c-0.1-6.3,0.8-12.4,3-18.3l0,0c0.3-0.3,0.6-0.7,0.9-1
+ c0.3-2.6,2.3-4.4,3.5-6.5c0.4-0.7,1.2-1.4,2-0.9s0.6,1.4,0.2,2.2c-0.3,0.6-0.5,1.3-0.9,1.8C312.4,36.7,312.4,46.3,311.9,55.9z"/>
+<path style="fill:#F7E3E5;" d="M245.9,438.5c2-3.5-0.1-7-0.4-10.4c-0.5-6.1-1.7-12.1-2.4-18.1c-0.2-1.6-0.6-3.3,0.7-4.8
+ c1.5,11.9,3,23.9,4.5,35.8c-0.4-0.1-0.9-0.3-1.3-0.4l0,0C246.7,439.8,246.3,439.2,245.9,438.5L245.9,438.5z"/>
+<path style="fill:#F7E3E5;" d="M73,263c3.3,1.3,4.2,4.3,5.2,7.3c0.2,1.2,0.3,2.4,1.8,2.8l0,0c0,0.7,0.1,1.5,0.1,2.2
+ c-3-0.2-4.2-3.6-7-4.1C73,268.4,73,265.7,73,263z"/>
+<path style="fill:#F5CFD6;" d="M261.9,67.9c-0.6,4.6-5.2,3.3-7.7,5c-0.8,0.5-2.2,0.1-3.3,0C254,70.1,257.8,68.6,261.9,67.9z"/>
+<path style="fill:#110D0E;" d="M495.6,293.7c-2.7-1.7,0.1-2.6,0.7-3.6c1-1.6,1.9-3.4,3.9-4.1C498.7,288.6,497.2,291.1,495.6,293.7z"
+ />
+<path style="fill:#BDBCBC;" d="M247,440.5c0.4,0.1,0.9,0.3,1.3,0.4c1.1,1.3,0.8,2.7,0.5,4.1C246.2,444.4,247.2,442.2,247,440.5z"/>
+<path style="fill:#F7E3E5;" d="M466.1,197c0-0.6-0.1-1.3-0.1-1.9c0.1-1.1,0.2-2.2,0.3-4.5C468.5,193.7,467,195.3,466.1,197z"/>
+<path style="fill:#7A7A7A;" d="M474.4,231.9c-1.8-0.3-2.7-1.5-3.2-3C473,229.1,473.8,230.4,474.4,231.9z"/>
+<path style="fill:#F7E3E5;" d="M464,189.9c-1.5-1.4-0.7-3.3-0.8-5C464.6,186.4,463.8,188.3,464,189.9z"/>
+<path style="fill:#F7E3E5;" d="M464.9,195.1c-1.3-1.2-0.8-2.7-0.8-4.1C465.4,192.2,464.9,193.7,464.9,195.1z"/>
+<path style="fill:#F7E3E5;" d="M156,405c0.7,0.5,1.1,1.1,0.8,2c0,0.1-0.2,0.2-0.4,0.3C156.3,406.5,156.1,405.8,156,405L156,405z"/>
+<path style="fill:#F7E3E5;" d="M153.4,398.4c-0.1-0.3-0.1-0.4-0.2-0.6c0.1,0,0.2-0.1,0.4-0.1C153.6,397.9,153.5,398.1,153.4,398.4z"
+ />
+<path style="fill:#BDBCBC;" d="M66,252c0.9,0.4,1,1.2,1,2C66.2,253.6,65.9,252.9,66,252z"/>
+<path style="fill:#BDBCBC;" d="M65,250c0.9,0.4,1,1.2,1,2C65,251.7,64.9,250.9,65,250z"/>
+<path style="fill:#BDBCBC;" d="M64,248c0.8,0.4,1,1.2,1,2C64,249.7,64,248.9,64,248z"/>
+<path style="fill:#F7E3E5;" d="M154.4,401.3c0-0.1-0.1-0.3-0.1-0.4c0.1,0,0.3-0.1,0.4-0.1C154.9,401.1,154.8,401.3,154.4,401.3z"/>
+<path style="fill:#F7E3E5;" d="M156,405c-0.2-0.4-0.5-0.7-0.7-1.1c0,0,0.2-0.2,0.4-0.3C155.8,404.1,155.9,404.5,156,405L156,405z"/>
+<path style="fill:#F7E3E5;" d="M157.8,409.9c0,0.1-0.1,0.3-0.1,0.4c-0.1-0.1-0.3-0.3-0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3
+ C157.6,409.7,157.7,409.8,157.8,409.9z"/>
+<path style="fill:#F5CFD6;" d="M132,148c-0.4,0.8-1.1,1-2,1C130.4,148.2,131.1,147.9,132,148z"/>
+<path style="fill:#BDBCBC;" d="M67,254c0.3,0.4,0.7,0.8,1,1.1C67.6,254.8,67.3,254.4,67,254z"/>
+<path style="fill:#F5CFD6;" d="M130,149c-0.3,0.3-0.7,0.6-1,1C129.3,149.6,129.6,149.3,130,149z"/>
+<path style="fill:#E794A1;" d="M460.1,177c-0.4,0.8-0.7,0.9-1.1,0C459.3,177,459.7,177,460.1,177z"/>
+<path style="fill:#BDBCBC;" d="M62.7,247c0.4,0.3,0.9,0.7,1.3,1C63.6,247.7,63.1,247.3,62.7,247z"/>
+<path style="fill:#F5CFD6;" d="M133,147c-0.3,0.3-0.6,0.7-1,1C132.3,147.6,132.6,147.3,133,147z"/>
+<path style="fill:#BDBCBC;" d="M246,438.5c0.3,0.7,0.7,1.3,1,2C246.7,439.8,246.3,439.2,246,438.5z"/>
+<path style="fill:#F5CFD6;" d="M133.9,145.8c-0.3,0.4-0.6,0.8-1,1.2C133.3,146.6,133.6,146.2,133.9,145.8z"/>
+<path style="fill:#F7E3E5;" d="M313.9,31.9c-0.3,0.3-0.6,0.7-0.9,1C313.3,32.6,313.6,32.3,313.9,31.9z"/>
+<path style="fill:#FFFFFF;" d="M243.9,307.7c-30,2.5-59.7,1.7-89-5.6c-5.8-1.5-11.3-3.8-16.8-6L138,296c-2.5-3.6-5.8-6.1-9.9-7.6
+ c2-1.9,1.3-3.3-0.4-5.3c-4.4-4.9-10.1-8-15.4-11.5c-6.4-4.2-11.6-9.6-16.1-15.3c-5.5-6.9-10.7-14.2-14.4-22.5c-1.9-4.3-3-8.2,0.4-12
+ c1.5-1.8,0.4-5,3.5-5.7c0,6.7,0.8,13.2,3.1,19.5c3.1,8.3,9.2,14.2,15.3,19.9c7.8,7.3,15.8,14.4,24.4,22.2c-0.3-2.7-1.6-3.3-2.5-4.2
+ c-8.6-8.8-16.8-17.9-24.6-27.4c-11.2-13.6-12.3-17.7-8.4-34.4c1.5,7.6,4.2,13.6,7.8,19.1c0.1,1.5,0,3,2,3.2c0.1,0.9-0.2,2,0.9,2.4
+ c0.2,0.1,0.8-0.4,0.9-0.7c0.2-1.3-0.7-1.6-1.7-1.8c0.1-1.9-0.5-3.6-1.9-5c-2.9-8.5-4.4-17.1-2.5-26.1c3.4,3.4,7.7,4.9,12.1,6.2
+ c1.5,2.2,3.1,2.7,5,0.5c0,8.8,5.5,13.4,12.7,17c-0.9-3.6-2.3-6.9-3.7-10.3c-1.4-3.5-1.9-7.5-0.3-10.6c1.7-3.3,6.9-3.3,8.8-7.1
+ c0.1-0.3,1.8,0.3,2.7,0.5c1.6,0.3,3.2,0.7,4.8,1.1c0.1,0.7,0.1,1.6,1.2,1.5c0.1,0,0.3-0.2,0.3-0.3c0.1-1.1-0.8-1.1-1.5-1.2
+ c-2.8-3.3-5.5-6.6-8.3-9.8c-1.6-1.7-3.3-3.6-5.7-1c-0.3,0.3-0.6,0.5-0.9,0.8l0,0c-2.5-0.1-3.1,2.6-5,3.4c0.5-4.1-1.7-4.9-5.1-4.2
+ c-3.7,0.8-7.4,1.8-11.1,2.6c-1.6,0.4-3.5,0.5-4.4-1.3c-1-2,0.5-3.3,1.8-4.2c4.6-2.9,7.8-7.6,13.1-9.6c1.8-0.7,3.1-0.9,4.5,0.6
+ c1.3,1.4,1.5,2.9,0.6,4.6c-0.5,0.9-1.2,1.7-1.2,2.6c-0.1,1.5,1,2.5,2.3,3c1.5,0.5,2.1-0.6,2.4-1.8c3.2-11.6,14-10.7,22.5-13.7
+ c1.5-0.5,2,1,2.9,2c7.3,8.9,12.3,19.2,17.6,29.3c0.7,1.3,0.7,3.2,2.5,3.4c2,0.1,1.3-1.9,1.9-3c1-1.9,2-1.7,3.5-0.3
+ c2.8,2.5,3.7,6.2,5.8,9.2c6,8.5,10.7,17.8,15.1,27.2c5.6,12,15.9,19.8,24.6,29c0.6,0.6,1.3,1.3,2.1,0.6c0.8-0.6,0.5-1.5,0-2.3
+ c-7.6-12.4-13.7-25.7-21.6-37.9c-4-6.1-8.5-11.7-13.8-16.8c-10-9.6-16.4-21.9-23-33.8c-4.7-8.4-8-17.4-11.9-26.2
+ c-0.6-1.3-1.9-2.7-0.4-4.1c1.3-1.2,2.8-1.4,4.6-0.7c3.7,1.3,7,3.5,10.9,4.4c2,0.5,3.6,2.1,4,4.6c1.9,11.3,9.8,18.5,17.6,25.7
+ c14.8,13.4,31.7,23.8,48.8,34.1c12,7.3,24.6,13.2,37.1,19.4c5.5,2.7,11.2,5.3,16.6,8.4c-22.8-6-43.2-17.4-63.5-28.9
+ c7.7,7.6,17.8,11.7,25.5,19.5c-3.8-1.8-7.6-3.4-11.2-5.3c-4.8-2.5-9.5-5.4-14.4-7.9c-1.4-0.7-3-2-5-0.4c-1.9,1.4-3.3-0.5-4.7-1.6
+ c-6.7-5.1-13.3-10.3-19.9-15.5c-0.3,0.3-0.6,0.5-1,0.8c2.3,2.9,4.4,6,7,8.7c7.6,7.9,13.9,16.8,20.9,25.2
+ c10.8,13.1,18.1,28.3,25.6,43.3c2,4,0.2,5.6-2.7,6.8c-13.9,6-27.6,12.6-43.2,13.1c-0.2,0-0.5,0.3-1,0.7c14.5,1.2,28.1-1.8,41.6-6.3
+ c9.7-3.3,19.4-6.9,29.1-10.2c2.6-0.9,4.1,0.4,5,2.7c0.8,1.9,0.4,3.9,0.5,5.9C269.5,299,259,302,248.5,305
+ C247,305.6,244.7,305.4,243.9,307.7z"/>
+<path style="fill:#F5CFD6;" d="M285.1,348c-11.6-0.9-22.9,1.9-34.2,3.6c-6.6,1-11.1-1.2-13-7.3c7.1-1.9,14.2-3.8,21.2-5.9
+ c4.9-1.4,9.8-2.8,14.5-4.8c12.7-5.4,26.2-6.6,39.7-7.7c13-1,26-2.6,38.9-3.7c6.1-0.5,12.2-0.4,18.3-1.1c5.8-0.7,8.2-3.8,5.4-9
+ c-3.9-7.1-9.6-12.5-16.9-16.1c9.7-2,19.4-3.9,29-6.1c9.6-2.2,19.3-3.7,29-3.7c9.7,0.1,19.6-0.1,29.3,2c1.6,0.4,3.2,1,4.7,1.7
+ c1.2,0.5,2.6,1.3,2.5,2.8c0,1.6-1.7,1.8-2.9,2.2c-10,3.2-20.4,4.2-30.7,5.8c-9.6,1.5-19.4,2.1-29.2,4c5,1.4,10.1,2.8,15.1,4.1
+ c5.3,1.4,10.6,2.6,15.9,4.1c2.8,0.8,5.3,2,5.4,5.7c0.1,3.9-2.7,5.3-5.5,6.1c-6.2,1.8-12.5,3.2-18.8,4.7c-11,2.6-21.6,6.5-32,10.8
+ c-9.9,4.1-20.4,3.9-30.7,5.8c-8.1,1.4-16.3-0.4-24.2,1.9C305.6,346.4,295.3,347,285.1,348z"/>
+<path style="fill:#F5CFD6;" d="M449,171c-0.2,3.9-0.4,7.3,5.3,7.2c2.9,0,5.8,6.1,5.3,9.6c-0.5,3.1-1.8,6-1.5,9.3V197
+ c-1.5,0-2.1,0.8-2,2.2c-6.5,12.7-21.8,18.5-34.9,13.5c-13.3-5.1-26.6-10-39.9-15c-1.7-0.6-3.6-0.7-5.3-1c-0.4-0.5-0.7-1.5-1.1-1.5
+ c-11.1-0.5-21.4-5.1-32.3-6.3c-6.5-0.7-12.4-3.4-18.5-5.5c-1.1-0.4-2.1-1.1-2.1-2.5c1.7,0,3.3,0,5,0c1,0.5,2,1.2,3.1,1.4
+ c9,1.9,18,4.4,27.2,5.3c6.2,0.6,12.3,2.4,18.7,2.4c7.7,0,15.4,1.4,23.1,2.4c7.1,0.9,14.1,1.8,21.3,1.4c1-0.1,2.1,0,2.4-1.2
+ s-0.7-1.9-1.6-2.1c-2.6-0.6-4.8-2.1-7.3-2.9c-3.3-1.1-7.3-0.6-9.8-3.8c1.5-1.5,5.3-1.3,4.4-4.3c-0.8-2.7-4-1.5-6.2-1.5
+ c-11.7-0.1-23.5-0.1-35.2-0.1c-2.8-2.8-8.6-0.6-10-5.8c5,0.5,10.1,0.9,15.1,1.4c0-0.2,0.1-0.4,0.1-0.7c-6.4-1.6-12.8-3.2-19.3-4.8
+ c0.4-0.8,0.3-1-0.9-1.5c5.4-2.6,11.5-1.9,17.1-3.7c9.9,1.5,19.8,3.1,29.8,4.5c8.5,1.2,17.1,0.7,25.5,1.4
+ C432.6,169.6,441.2,166.7,449,171z"/>
+<path style="fill:#FFFFFF;" d="M327,181c-1.7,0-3.3,0-5,0c-22.5-5.8-44.2-14.6-67.4-18.2c-7.1-1.1-13-5.4-19.6-8.2
+ c-1.1-0.5-2.1-1.8-4.3-0.6c4.9,5.4,9.7,10.7,16.5,13c9.4,3.1,19.4,4.7,28.5,8.4c8.7,3.5,16.5,9.1,24.9,13.4
+ c9.5,4.9,17.7,11.3,25.8,18.3c-6.5-0.4-12-3.7-17.8-5.8c-9.8-3.6-18.4-9.7-27.9-14c-2.5-1.1-5-1.8-7.7-0.9
+ c-4.4,1.4-9.1-0.1-13.6,0.9c0.1,2.4,2.9,2,3,4.3c-6.9-1-12.6-4.4-18.1-7.8c-10.2-6.4-20-13.5-30.2-19.9c-3.1-2-4.9-5.3-8.2-6.9
+ c-0.3-0.3-0.7-0.7-1-1l0,0c-0.1-1.9-0.9-3.1-3-3l0,0c0.6-1.9-1-3-1.7-4.4c-4.4-8.1-8.3-16.3-4.7-25.8c4-1.8,6.8-5.8,11.2-7
+ c2.7-0.8,5.3-3.2,8.3-0.6c0,1.8-0.2,3.7-0.1,5.5c0.4,5.1,1,10.2,6,13.4c8.6,9.9,20.3,15,31.7,20.3c18.7,8.6,38.1,15.2,58.1,20.1
+ c5.1,1.3,10.3,2.1,15.6,2.6c2.9,0.3,1.1,1.3,0.8,2.3c1,1.2,2.5,0.6,3.7,1C329.8,181.5,328.3,180.8,327,181z"/>
+<path style="fill:#FFFFFF;" d="M289,305.2c1.3-0.1,2.6-0.2,3.9-0.3c3.9,2,7.9,3.9,11.8,5.9c1.5,0.8,3.3,1.6,2.8,3.6
+ c-0.4,1.7-2.2,2.2-3.8,2.8c-3.3,1.4-6.9,1.2-10.3,1.4c-14.3,1.2-28.5,3.7-42.8,5.3c-17.9,2-35.4,0.9-52.6-4.4
+ c-4.2-1.3-8.4-3.3-13.1-2.6c-1-3.2-3.4-3.1-6-2.2c2,0.7,4,1.5,6,2.2c9.8,4,19.2,9,30.8,11.9c-4.4,1.7-7.6,0.4-10.3-0.2
+ c-8-1.7-16-2.2-24-3.6c-7.6-1.3-14.4-4.8-21.8-6.7c-5.7-1.5-6.9-7.5-8.7-12.5c10.9,4.6,22.4,5.9,34.1,6.1
+ c25.1,0.5,50.2-0.7,75.2-3.7c9.2-1.1,18.5-2,27.7-3C288.3,305.7,288.7,305.6,289,305.2z"/>
+<path style="fill:#F5CFD6;" d="M243.9,307.7c0.9-2.3,3.1-2.2,5-2.7c10.5-3,21-6,31.1-10.1c4.7,1,8.6-1.8,12.8-3.1
+ c10.5-3.3,21.3-6,31.4-10.5c3.7-1.6,3.9-3.3,1-6c-3.4-3.1-7.4-5-11.7-6.3c-1.8-0.6-2.5-1.3-2.5-3c14.8,2.7,29.6,5.5,44.5,8.1
+ c14.2,2.5,28.4,4.8,43.9,7.4c-7.8,1.9-14.4,3.8-21,5.2c-18.5,3.9-36.9,7.8-55.5,11.3c-16.1,3-32.3,5.4-48.7,6.9
+ C264,306,254,307.7,243.9,307.7z"/>
+<path style="fill:#FFFFFF;" d="M223,107.4c-0.1-1.9,1-3,2.4-4.1c4.9-3.7,9.6-4,14.9-0.7c7.9,5,16.8,8,25.5,10.9
+ c4.7,1.5,8.2,4.4,10.5,7.8c6.7,10,16.6,14.5,27.1,18.9c8.3,3.4,17,5.7,25.9,9.5c-3.6,2.5-6.5,0.6-9.1,0.1
+ c-15.3-3.3-30.6-7.1-45.9-10.4c-8.6-1.9-15.8-6.3-23.2-10.7c-6.5-3.9-13-7.8-19.5-11.8c-1.4-0.8-2.8-0.9-4.3-0.9c0-2,0-4,0-6
+ c0.9-1.1,1-2.1-0.3-3C225.6,105.6,224.4,107.1,223,107.4z"/>
+<path style="fill:#F5CFD6;" d="M419,270c20.4,1.3,40.3-2.4,60.2-6.5c1.4-0.3,3-0.4,4.4-0.4c1.7,0,2.5,0.8,1.9,2.5
+ c-1.5,3.9-3.1,7.5-7.4,9.4c-13.2,5.9-26.7,8.1-41.1,5c-12.4-2.7-25.1-4.2-37.7-6.3c-0.4-0.1-0.8-0.5-1.2-0.8
+ c4.9-2.5,10-3.5,15.5-2.4C415.4,271,417.3,271.7,419,270z"/>
+<path style="fill:#F5CFD6;" d="M367.1,217.9c2.8,3.4,1,6.9,0,10.3c-0.6,2-1.9,1.2-3.2,1c-17.1-2.5-33.9-6.4-50.5-11
+ c-14.4-4-28.8-8-42.4-14.1c1.2-1.7,3.1-1.3,4.6-1c20.5,5.1,41.5,7,62.2,11.4c7.5,1.6,15.3,2.2,22.8,4.3
+ C362.5,219.4,365.1,219.9,367.1,217.9z"/>
+<path style="fill:#F5CFD6;" d="M391,253c13.4,0.6,26.7,2.7,40.2,2.1c9.7-0.4,17.3-3.9,22.5-12.3c0.6-1,1.1-2.2,2-2.8
+ c2.5-1.6,4.8-5.5,8-3.2c3.2,2.2,4,6.6,1.6,9.9c-6.4,8.6-14.8,14.7-25.7,16.2s-21.8,0.1-32.7-0.1c-3-3.9-7.9-4.7-12-6.8
+ C393.4,255.3,391.3,255.3,391,253z"/>
+<path style="fill:#E794A1;" d="M98.7,202.8c-1.9,9-0.4,17.6,2.5,26.1c-0.1,0.6-0.2,1.3-0.3,1.9c-3.7-5.5-6.4-11.5-7.8-19.1
+ c-3.9,16.7-2.8,20.8,8.4,34.4c7.8,9.5,16,18.6,24.6,27.4c0.9,0.9,2.1,1.5,2.5,4.2c-8.6-7.8-16.6-14.9-24.4-22.2
+ c-6.2-5.8-12.2-11.6-15.3-19.9c-2.4-6.4-3.1-12.9-3.1-19.5c0.9-7.8,3.6-14.8,8.8-20.7c0.9-1,1.7-2.9,3.5-1.7c1.4,1,2.2,2.4,1.8,4.3
+ C99.4,199.6,99.1,201.2,98.7,202.8z"/>
+<path style="fill:#E794A1;" d="M330.9,180.2c-1.2-0.4-2.7,0.2-3.7-1c13.3-0.4,26.6-0.8,39.8-1.2c11.7,0,23.5,0,35.2,0.1
+ c2.2,0,5.3-1.2,6.2,1.5c0.9,3-3,2.8-4.4,4.3c-1.3,0.1-2.6,0.2-4,0.2c-0.3,0-0.7,0-1,0c-5.3,0.7-10.6,0.9-15.8,0.6
+ C365.7,183.9,348.2,182.6,330.9,180.2z"/>
+<path style="fill:#E794A1;" d="M195.7,122.8c-3.7,9.5,0.3,17.7,4.7,25.8c0.8,1.4,2.3,2.5,1.7,4.4c-6.1-4.2-7.8-10.7-9.2-18.1
+ c-4.7,4.9-5.9,10.3-5.3,16.1c0.4,3.7,1.6,7.4,2.5,11.1c-2.2-0.9-3.1-2.7-3.1-5c-2.7-7.8-1.1-16.1-2.8-24c-0.5-2.5,0.5-4.9,1.8-7.1
+ c3.7-6.2,7.4-12.5,12.4-17.9c1.2,5.1,1.2,6-1.2,10.1C196.3,119.6,196,121.2,195.7,122.8z"/>
+<path style="fill:#E794A1;" d="M352.9,168.1c6.4,1.6,12.8,3.2,19.3,4.8c0,0.2-0.1,0.4-0.1,0.7c-5-0.5-10.1-0.9-15.1-1.4
+ c-16.3-2.7-32.8-4.1-48.9-8.3c-2.8-0.7-7.9-1.4-7.3-3.6c0.8-2.8,5.3-0.9,8.3-0.4c13.1,2,26,5,38.9,7.7
+ C349.6,167.9,351.3,167.9,352.9,168.1z"/>
+<path style="fill:#FFFFFF;" d="M186.9,157.1c0,2.3,0.9,4,3.1,5l-0.1-0.1c-0.2,1.4,0.4,2.6,1.2,3.7c0.6,2.1,1.3,4.2,4.1,4.3
+ c1.9,0.1,2.9,1.6,4.1,2.6c7.2,6.2,14.8,11.8,23.5,15.8c0.7,0.3,1.6,0.5,1.8,1.9c-2,0.4-3.8-0.4-5.3-1.3c-11.6-6.9-24-12.7-33.7-22.4
+ c-1-1-1.8-2.3-2.8-3.5c-2-2.3-2.8-4.1,1.5-4.2C185.5,159,185.9,157.6,186.9,157.1z"/>
+<path style="fill:#FFFFFF;" d="M111.9,299.9c10.4,4.7,20.7,9.4,31.1,14.1c0.3,0.3,0.7,0.6,1,0.9c0.3,0,0.6,0,1,0.1
+ c2.7,3.4,5.1,7.2,10.5,5.4c0.8-0.3,1.2,0.2,1.4,1c0.3,1.7-0.3,2.9-1.9,3.6c-8.1-3.8-16.2-7.4-23.6-12.8c-4.2-3.1-8.9-6-14.7-6.3
+ c-2.9-0.2-5.5-1.9-7.8-3.9C110.5,302.3,111,300.8,111.9,299.9z"/>
+<path style="fill:#E794A1;" d="M227.3,110c0,2,0,4,0,6c-0.1,3.2-0.9,4.8-4.8,3.5c-4.5-1.5-6.6,0.7-5.2,5.4c0.9,3.1,2.4,6.1,3.6,9.1
+ c-4.9-3.2-5.5-8.3-6-13.4c-0.2-1.8,0-3.6,0.1-5.5c1.9-3.4,5.6-4.9,8-7.8c1.3-0.2,2.5-1.7,4-0.4C227.1,108,227.2,109,227.3,110z"/>
+<path style="fill:#E794A1;" d="M115.9,209.5c-1.9,2.2-3.5,1.7-5-0.5c-0.4-5.1,2.9-8.2,6.1-11.4c1.4-1.4,2.7-2.8,4.1-4.3
+ c1.9-0.8,2.5-3.5,5-3.4c0.3,1.7-0.8,2.8-1.4,4.1C121.9,199.4,117.9,203.9,115.9,209.5z"/>
+<path style="fill:#E794A1;" d="M295,110c5.3,1,10.5,1.9,15.8,2.9c-1.4,1.3-3.5,1.8-3.9,4c-1.3,0.7-0.5,2.7-1.9,3.3
+ c-2.3-1.6-4.6-3.2-6.8-4.9C296.5,114,294.5,112.7,295,110z"/>
+<path style="fill:#E794A1;" d="M128.1,288.3c4.1,1.5,7.4,4.1,9.9,7.6C134,294.3,130,292.7,128.1,288.3z"/>
+<path style="fill:#E794A1;" d="M202,153c2.1-0.1,2.9,1.2,3,3C203.3,155.7,202.2,154.8,202,153z"/>
+<path style="fill:#E794A1;" d="M277.6,221.4c-1.4-0.4-2.8-0.7-4.2-2c2-0.6,3.4,0.5,4.7,1.4C278,221,277.8,221.2,277.6,221.4z"/>
+<path style="fill:#E794A1;" d="M191.1,165.7c-0.8-1.1-1.4-2.3-1.2-3.7C190.8,163.1,192.3,164,191.1,165.7z"/>
+<path style="fill:#F5CFD6;" d="M149,315c0.5,0.2,1.1,0.5,1.6,0.7c-0.1,0.2-0.3,0.4-0.4,0.6C149.8,315.9,149.4,315.4,149,315L149,315
+ z"/>
+<path style="fill:#F5CFD6;" d="M405,262.8c-1.1,0.2-2.2,0.2-3.1-0.7C403,262,404.1,261.8,405,262.8z"/>
+<path style="fill:#F5CFD6;" d="M367,162.1c0.8-0.1,1.6,0,2.1,0.8C368.2,163,367.5,162.9,367,162.1z"/>
+<path style="fill:#FFFFFF;" d="M331.9,150.8c-0.3,0.1-0.6,0.2-0.9,0.2C331.2,150.5,331.5,150.3,331.9,150.8z"/>
+<path style="fill:#F5CFD6;" d="M308,265.2c0.4,0.3,0.7,0.5,1.1,0.8C308.7,265.7,308.4,265.4,308,265.2z"/>
+<path style="fill:#E794A1;" d="M205,156c0.3,0.3,0.7,0.7,1,1C205.7,156.7,205.3,156.3,205,156z"/>
+<path style="fill:#FFFFFF;" d="M302.9,357c3-6.9,6.7-8,12.6-3.8c2.4,1.7,4.7,3.7,6.7,5.9c4.8,5.4,11.2,7.4,17.9,8.5
+ c5.4,0.9,8-1.5,8-7c0-3.9,1-7.4,3.1-10.7c3.2-2.5,5.9-6.9,10.5-2.1c3.4,4.3,6.6,8.7,10.1,12.9c1.5,1.8,3,4.2,6.2,3.1
+ c0.3,2.9-1.4,5.6-0.7,8.5c-0.4,1.1-0.9,2.2-1.2,3.3c-6.7,25.6-13.6,51.1-21.2,76.4c-0.6,0.3-0.8,0.7-0.6,1.3
+ c-0.1,0.2-0.3,0.5-0.3,0.8c-4.8,4.2-5.7,4-8-2.3c-0.3-0.9-0.8-1.8-1.2-2.7c-0.6-3.9-2.1-7.8-1.6-11.8c1.7-14,3.4-27.9,5.3-41.9
+ c0.5-3.7,0-6.9-1.5-10.1c-0.5-1.1-0.3-3-2.1-3c-2.1,0.1-1.8,2-2.1,3.4c-3,11.9-4.5,24.1-6.7,36.2c-4,22-5.8,44.4-11.1,66.3
+ c-4.5,6.5-5.3,6.6-12.9,1c-0.7-2.4-5.2-0.7-4.4-5.9c2.9-17.4,4.6-34.9,6.6-52.4c1.6-13.9,1.6-27.9,2.2-41.9c0.2-4.9,0.3-9.6-2.3-14
+ c-1.4-2.3-1.9-6.3-5.2-5.8c-2.8,0.5-2.4,4.2-3.1,6.7c-1.5-1.9-0.7-4.1-0.8-6.1C304.7,365.4,304.6,361.1,302.9,357z"/>
+<path style="fill:#110D0E;" d="M457.9,309.9c0.9,0.7,1.7,1.7,2.7,2c6,1.8,7.2,6.1,6.3,11.6c-0.7,4.8-2.9,6.3-7.9,5.8
+ c-7.6-0.7-15-2.7-22.5-4.1c0.1,0.4,0.1,0.8,0.2,1c1.7,2.6,4.9,5.3,2.6,8.3c-2.4,3.3-6.2,1-9.1-0.2c-5.2-2.1-9.8-5.5-15.8-5.4
+ c3.1-2,6.4,0.3,9.7-0.6c4.1-1.2,7.9-2.4,11.4-5.2c6.2-4.7,13-8.7,19.5-13C456.1,310.1,457,310,457.9,309.9z"/>
+<path style="fill:#110D0E;" d="M414.1,328.9c-5.9,3.1-5.3,9-6.1,14.2c-0.5,3.3,0.6,8.1-2.6,9.5c-3.2,1.4-5.2-3.3-7.5-5.4
+ c-3.8-3.6-8.8-4.9-12.9-7.9c2.7-0.4,5.5-1.2,8.2-1.2c5.4,0,10.6,0.7,13.8-5.5C408.2,330.2,411.1,328.8,414.1,328.9z"/>
+<path style="fill:#110D0E;" d="M378,363.7c-3.1,1.2-4.7-1.3-6.2-3.1c-3.5-4.2-6.8-8.6-10.1-12.9c1.1-0.6,2.4-1.8,3.4-1.6
+ c5.3,0.7,9.7-0.9,13.7-4.2c-1.4,2.6-1.1,5.3-0.8,8.1c0,2.3,0.1,4.6,0.1,6.9C378.2,359.2,379,361.5,378,363.7z"/>
+<path style="fill:#110D0E;" d="M477,295.8c2.4,3.6,6.7,6.3,5.4,11.6c-7.6,2.5-15.2,0.3-22.9,0.6c0.1-0.3,0.3-0.6,0.4-0.9
+ c5.6-3.3,11.1-6.8,16.1-11C476.4,296,476.7,295.9,477,295.8z"/>
+<path style="fill:#110D0E;" d="M482.9,280c3,2.1,5.1,5.1,7.1,8.1c2.5,3.9,0.9,6.5-3.6,6.3c-2.8-0.1-5.5-1-8.2-1.5
+ c-0.1-0.3-0.2-0.5-0.3-0.8C478,287.4,479,283.1,482.9,280z"/>
+<path style="fill:#F5CFD6;" d="M477.8,292.1c0.1,0.3,0.2,0.5,0.3,0.8c-0.4,1-0.8,1.9-1.2,2.9c-0.3,0.1-0.6,0.2-0.9,0.3
+ c-1-2.4-3.1-4-4.4-6.4C473.7,290.5,475.8,291.3,477.8,292.1z"/>
+<path style="fill:#F5CFD6;" d="M347.6,350.1c-4.1,1.9-8.3,1.1-12.5,0.6C339.2,349.4,343.5,350.5,347.6,350.1z"/>
+<path style="fill:#F5CFD6;" d="M457.9,309.9c-0.9,0.1-1.9,0.2-2.8,0.3c-0.3-1.3-2.4-1.1-2.3-3c1.8,0.3,3.5,0.6,5.2,0.9
+ C458,308.7,458,309.3,457.9,309.9z"/>
+<path style="fill:#F7E3E5;" d="M456,199.2c0-1.4,0.6-2.2,2-2.2C458,198.4,457.3,199,456,199.2z"/>
+<path style="fill:#F5CFD6;" d="M460,307c-0.1,0.3-0.3,0.6-0.4,0.9c-0.5,0-1,0.1-1.6,0.1C458.6,307.7,459.3,307.4,460,307z"/>
+<path style="fill:#F7E3E5;" d="M289,305.2c-0.3,0.4-0.7,0.5-1,0C288.3,305.2,288.7,305.2,289,305.2z"/>
+<path style="fill:#FFFFFF;" d="M243,387c0-7,0-14.1,0-21.1c0-1.6,0-3.3-1-4.7c2.9-2.3,4.3-0.9,6,1.8c3.8,6.3,8.2,12.1,16.7,11.8
+ c1.9,1.8,1.1,4.1,1.1,6.1c0.1,4.5-0.9,9.5,7.2,9.5c-6.7-0.7-6.4,2.3-5.5,6.4c0.9,4,0.7,8.2,1.2,12.3c2.5,20.8,5,41.7,8.2,62.4
+ c0.2,1.3,0.5,2.3,2,2.4c1.3,6,0.8,12.4,4.2,18c-3.8,6.2-6.7,6.4-12,1.4c-2.3-2.2-3.3-5.9-7-6.6c-2.2-20.1-4.8-40.2-6.6-60.3
+ c-1.1-11.9-4.5-23-9.7-33.6C246.8,390.6,245.9,387.8,243,387z"/>
+<path style="fill:#FFFFFF;" d="M280,363c0.3-1.1,0.6-2.2,1.6-2.8c4.3,8.1,6.9,9.6,13.3,7.9c0.2,26.1,1.2,52.1,4,79
+ c2.9-3.7,1.6-7,2.2-10.1c0.3,0,0.5,0,0.8,0c0.1,13.9-1.8,27.8-1.1,41.7c0.1,2.5-0.3,4.9-1,7.3c-3.5,5.1-8.8,6-14.4,6
+ c0.6-31.6,2-63.2,1.5-94.8c-0.1-6.1-1.9-12.1-6-17C280.4,374.4,282.2,368.6,280,363z"/>
+<path style="fill:#5F5F5F;" d="M299.9,486c0.8-2.4,1.2-4.8,1-7.3c-0.8-13.9,1.1-27.8,1.1-41.7c1.8-13.9,1.8-27.9,2.6-41.8
+ c0.4-6.4,0.9-12.9,1.3-19.3c0.6-2.5,0.3-6.3,3.1-6.7c3.3-0.5,3.8,3.4,5.2,5.8c2.6,4.3,2.5,9,2.3,14c-0.7,14-0.6,28-2.2,41.9
+ c-2,17.5-3.7,35-6.6,52.4c-0.9,5.1,3.7,3.5,4.4,5.9c-3.4-0.6-6.2-0.2-6.6,4.1c-0.1,0.6-0.5,1.3-1.3,1.1c-1-0.2-1.8-0.8-1.9-2
+ C301.9,490,301.7,487.7,299.9,486z"/>
+<path style="fill:#5F5F5F;" d="M324.9,488.1c5.2-21.8,7-44.2,11.1-66.3c2.2-12.1,3.7-24.3,6.7-36.2c0.3-1.4,0-3.3,2.1-3.4
+ c1.8,0,1.6,1.9,2.1,3c1.5,3.2,2.1,6.4,1.5,10.1c-2,13.9-3.6,27.9-5.3,41.9c-0.5,4,1,7.9,1.6,11.8c-2.1,0.1-1.1-2.5-2.3-2.9
+ c-2.9,11.6-3.1,23.6-6.5,35c-1.4,4.5-3.4,8-9.2,6.3C326.2,487.2,325.5,487.8,324.9,488.1z"/>
+<path style="fill:#5F5F5F;" d="M280.9,380.1c4.1,4.9,5.9,10.9,6,17c0.5,31.6-0.8,63.2-1.5,94.8c-0.8,0-1.5,0-2.3,0.1
+ c-3.4-5.5-2.9-11.9-4.2-18c0-17.9,1.2-35.9-0.8-53.7c-1-8.9-1.8-17.9-1-26.8C277.6,388.9,276.6,383.7,280.9,380.1z"/>
+<path style="fill:#110D0E;" d="M392.6,450.6c7.1-28.3,19.5-54.7,30.9-81.3c3.9-9,7.8-18,12.7-26.5c0.7-1.2,1.3-3.3,3.2-2.3
+ c1.5,0.8,0.2,2.5-0.3,3.6c-15.2,35.7-30.5,71.4-45.7,107.1C393,451,392.8,450.8,392.6,450.6z"/>
+<path style="fill:#110D0E;" d="M403.3,362.9c-6.5,32.8-17.8,64.3-27.7,96.7C372.7,444.3,395.1,376.5,403.3,362.9z"/>
+<path style="fill:#110D0E;" d="M354.8,451.9c7.6-25.3,14.6-50.8,21.2-76.4c0.3-1.1,0.8-2.2,1.2-3.3c1.5,10.2,0,20-3.1,29.8
+ c-7.2,23.1-14.5,46-22.7,68.8c-0.2,0.5-0.5,0.9-1.4,2.4c0.8-7.4,4.3-13,3.9-19.3c0.1-0.3,0.2-0.5,0.3-0.8
+ C354.9,452.9,355,452.5,354.8,451.9z"/>
+<path style="fill:#110D0E;" d="M448.3,352.3c-5.5,13.7-11,27.4-16.7,41c-6.1,14.7-12.4,29.3-18.7,44c-0.6,1.5-1.4,3-2.5,5.3
+ c-0.7-3.4,1-5.2,1.7-7.1c10.5-26.9,19.7-54.3,33.5-79.8c0.7-1.3,1.5-2.6,2.2-3.9C448,352,448.1,352.1,448.3,352.3z"/>
+<path style="fill:#BDBCBC;" d="M378.1,356.9c0-2.3-0.1-4.6-0.1-6.9C379.4,352.3,379.6,354.6,378.1,356.9z"/>
+<path style="fill:#110D0E;" d="M450,348c0.1,1.7-0.7,3-1.7,4.3c-0.1-0.1-0.3-0.3-0.4-0.4C448.2,350.4,448.5,348.8,450,348L450,348z"
+ />
+<path style="fill:#110D0E;" d="M393.3,451.2c-0.4,0.9-0.8,1.8-1.3,2.7v0.1c0.2-1.1,0.3-2.3,0.5-3.4C392.8,450.8,393,451,393.3,451.2
+ z"/>
+<path style="fill:#5F5F5F;" d="M406.6,450.6c0,0.1,0.1,0.3,0.1,0.4c-0.2,0-0.4,0.1-0.6,0.1c0-0.1,0-0.3,0.1-0.4
+ C406.3,450.6,406.5,450.6,406.6,450.6z"/>
+<path style="fill:#110D0E;" d="M451.6,343.8c0,0.1,0.1,0.3,0.1,0.4c-0.1,0.5-0.2,0.5-0.4,0.1c0-0.1,0-0.3,0.1-0.4
+ C451.4,343.9,451.5,343.9,451.6,343.8z"/>
+<path style="fill:#110D0E;" d="M450,348c0.1-0.5,0.2-0.9,0.2-1.4c0.2,0.1,0.4,0.2,0.5,0.4C450.5,347.3,450.3,347.7,450,348L450,348z
+ "/>
+<path style="fill:#110D0E;" d="M409.8,444c-0.2,0.2-0.4,0.3-0.6,0.4c0-0.3-0.1-0.6-0.1-0.9c0-0.1,0.2-0.3,0.3-0.4
+ C409.6,443.5,409.7,443.8,409.8,444z"/>
+<path style="fill:#5F5F5F;" d="M407.9,448.3c-0.1,0.1-0.3,0.2-0.4,0.3c-0.1-0.3-0.2-0.5-0.3-0.8c0-0.1,0.2-0.2,0.4-0.3
+ C407.7,447.7,407.8,448,407.9,448.3z"/>
+<path style="fill:#110D0E;" d="M392,454c-0.1,0.1-0.1,0.2-0.2,0.3C391.9,454.2,392,454.1,392,454C392.1,454,392,454,392,454z"/>
+<path style="fill:#F7E3E5;" d="M306.9,116.8c0.5-2.2,2.6-2.7,3.9-4c6.5,0.6,12.5,2.7,18,6.2c1.1,0.6,2.2,1.2,1.9,2.5
+ c-0.4,1.9-1.8,0.6-2.8,0.6c-4.2,0.1-8.4-1-12.6,1.3C311.6,125.6,307.9,122.4,306.9,116.8z"/>
+<path style="fill:#F7E3E5;" d="M343.1,91.8c-0.1,0-0.2-0.1-0.3-0.1c0.1-0.1,0.3-0.3,0.4-0.4c0.1,0.1,0.2,0.2,0.3,0.3
+ C343.3,91.6,343.2,91.7,343.1,91.8z"/>
+<path style="fill:#E794A1;" d="M111.9,299.9c-0.9,0.8-1.4,2.3-3.1,2c-3.5-0.7-6.7-2.1-9.7-4c-0.7-0.6-1.3-1.2-2-1.8
+ c-0.1-0.2-0.2-0.3-0.3-0.4c0.5-2.7,2.6-1.4,4.1-1.7C104.5,296.1,108.8,297,111.9,299.9z"/>
+<path style="fill:#F7E3E5;" d="M101,294c-1.5,0.4-3.6-1-4.1,1.7c-2.9,0-4-1.9-4.7-4.4c0.4,0.2,0.8,0.5,1.2,0.7
+ c0.1-0.4,0.5-0.9,0.3-1.2c-0.5-1-1.2-1.9-1.9-2.8c1.3-1.9,3.3-0.7,5.4-1.2c-3.4,2.3-1.6,3.3,0.4,3.8C99.7,291.2,101.3,291.5,101,294
+ z"/>
+<path style="fill:#E794A1;" d="M80.1,275.2c0-0.7-0.1-1.5-0.1-2.2c2.1,1.6,4.9,2.7,4,6.2c-1.1,0-0.7,0.9-0.8,1.5
+ C82.1,278.8,81.1,277,80.1,275.2z"/>
+<path style="fill:#110D0E;" d="M90,286c0,0.7,1.1,1.3,0.1,2c-2.3-1.2-3.3-3.5-4.8-5.4c0.3-0.2,0.5-0.5,0.8-0.7
+ c0.9,0.8,1.8,1.5,2.7,2.3l-0.1-0.1C89.2,284.8,89.6,285.4,90,286z"/>
+<path style="fill:#110D0E;" d="M91.9,288.1c0.6,0.9,1.3,1.8,1.9,2.8c0.1,0.2-0.2,0.8-0.3,1.2c-0.4-0.2-0.8-0.5-1.2-0.7
+ c-0.7-1.1-1.5-2.3-2.2-3.4C90.8,287,91.3,288.1,91.9,288.1z"/>
+<path style="fill:#F7E3E5;" d="M176,333c2.3-0.6,4.1,0.1,5.5,2C179.4,335.2,177.4,334.9,176,333z"/>
+<path style="fill:#FFFFFF;" d="M187.5,338c2.2-0.3,4.1,0.3,5.5,2C190.8,340.2,189.1,339.3,187.5,338z"/>
+<path style="fill:#F7E3E5;" d="M97.2,296.1c0.7,0.6,1.3,1.2,2,1.8C98,298,97,297.7,97.2,296.1z"/>
+<path style="fill:#FFFFFF;" d="M193,340c0.9,0,1.7,0,2,1C194.1,341.1,193.3,341,193,340z"/>
+<path style="fill:#F7E3E5;" d="M181.5,335c1.2-0.2,2.2,0.1,3,1C183.4,336.1,182.3,335.9,181.5,335z"/>
+<path style="fill:#110D0E;" d="M83.9,280.9c0.8-1,1.3,0.2,2,0.2c0,0.3,0.1,0.5,0.1,0.8c-0.3,0.2-0.5,0.5-0.8,0.7
+ C84.8,282.1,84.4,281.5,83.9,280.9z"/>
+<path style="fill:#110D0E;" d="M83.2,280.7c0.1-0.6-0.4-1.4,0.8-1.5c0,0.6,1.1,1.2,0.1,1.9C83.8,280.9,83.5,280.8,83.2,280.7z"/>
+<path style="fill:#BDBCBC;" d="M280.9,380.1c-4.3,3.6-3.4,8.8-3.8,13.4c-0.8,8.9,0,17.9,1,26.8c2.1,17.9,0.9,35.8,0.8,53.7
+ c-1.5-0.1-1.8-1.1-2-2.4c-3.2-20.8-5.7-41.6-8.2-62.4c-0.5-4.1-0.3-8.3-1.2-12.3c-0.9-4.1-1.3-7.1,5.5-6.4c-8.1,0-7.1-5-7.2-9.5
+ c0-2.1,0.7-4.4-1.1-6.1c6.4-2.2,11-6.8,15.2-11.8C282.2,368.6,280.4,374.4,280.9,380.1z"/>
+<path style="fill:#BDBCBC;" d="M305.8,375.9c-0.4,6.4-0.9,12.9-1.3,19.3c-0.9,0.3-1.4,0.8-1.4,1.7c-0.6,13.4-1.3,26.7-1.9,40.1
+ c-0.6,3,0.7,6.3-2.2,10.1c-2.8-26.9-3.7-52.9-4-79c3.9-2.8,5.6-7.1,7.9-11c1.7,4.1,1.7,8.5,2.1,12.8
+ C305.2,371.8,304.3,374,305.8,375.9z"/>
+<path style="fill:#F7E3E5;" d="M86.1,281.9c0-0.3-0.1-0.5-0.1-0.8c0.2-0.7,0.1-1.8,1.3-1.3c2.2,0.8,1.7,2.7,1.5,4.4
+ C87.9,283.5,87,282.7,86.1,281.9z"/>
+<path style="fill:#F7E3E5;" d="M90,286c-0.4-0.6-0.8-1.2-1.2-1.8C90,284.2,91.6,284.1,90,286z"/>
+<path style="fill:#E794A1;" d="M80,273c-1.5-0.3-1.6-1.6-1.8-2.8C79.4,270.7,80,271.7,80,273z"/>
+<path style="fill:#F7E3E5;" d="M144,315c-0.3-0.3-0.7-0.6-1-0.9C143.3,314.3,143.7,314.7,144,315z"/>
+<path style="fill:#110D0E;" d="M484.4,307.4c0.6-1.4,1.1-2.8,2.5-3.5c0.1,0.1,0.3,0.3,0.4,0.4c-0.7,1.3-1.4,2.6-2.1,3.9
+ C485,307.9,484.7,307.7,484.4,307.4z"/>
+<path style="fill:#110D0E;" d="M487.9,302.9c-0.2-1,0.1-1.6,1-2l0.2,0.2C489.1,302,488.9,302.7,487.9,302.9L487.9,302.9z"/>
+<path style="fill:#110D0E;" d="M488.9,300.9c0.2-0.2,0.3-0.5,0.5-0.7c0.5,0.5,0.3,0.8-0.3,0.9C489.2,301.2,488.9,300.9,488.9,300.9z
+ "/>
+<path style="fill:#110D0E;" d="M486.9,303.9c0.2-0.5,0.3-1.1,1.1-0.9l0.1,0.1c-0.2,0.4-0.5,0.9-0.7,1.3
+ C487.2,304.2,487,304,486.9,303.9z"/>
+<path style="fill:#F7E3E5;" d="M115.9,209.5c2-5.7,6.1-10.2,8.7-15.5c0.7-1.3,1.8-2.4,1.4-4.1l0,0c0.3-0.3,0.6-0.5,0.9-0.8
+ c2.4-2.6,4.2-0.8,5.7,1c2.9,3.2,5.6,6.5,8.3,9.8l0,0c-1.6-0.4-3.2-0.7-4.8-1.1c-0.9-0.2-2.6-0.7-2.7-0.5c-2,3.8-7.1,3.8-8.8,7.1
+ c-1.6,3.1-1.1,7.1,0.3,10.6c1.3,3.4,2.8,6.7,3.7,10.3C121.4,222.9,115.8,218.3,115.9,209.5z"/>
+<path style="fill:#F5CFD6;" d="M100.9,230.8c0.1-0.6,0.2-1.3,0.3-1.9c1.3,1.4,2,3.1,1.9,5L103,234
+ C100.9,233.9,101,232.3,100.9,230.8z"/>
+<path style="fill:#F5CFD6;" d="M103,234c1,0.2,1.9,0.5,1.7,1.8c-0.1,0.3-0.7,0.8-0.9,0.7C102.6,236.1,103,235,103,234L103,234z"/>
+<path style="fill:#F7E3E5;" d="M141,200c0.7,0.1,1.6,0.1,1.5,1.2c0,0.1-0.2,0.3-0.3,0.3C141.1,201.6,141.1,200.7,141,200L141,200z"
+ />
+<path style="fill:#E794A1;" d="M126.9,189.2c-0.3,0.3-0.6,0.5-0.9,0.8C126.3,189.8,126.6,189.5,126.9,189.2z"/>
+<path style="fill:#F7E3E5;" d="M400,184.2c1.3-0.1,2.6-0.2,4-0.2c2.5,3.2,6.5,2.7,9.8,3.8c2.5,0.8,4.7,2.3,7.3,2.9
+ c0.9,0.2,1.9,0.9,1.6,2.1s-1.4,1.2-2.4,1.2c-7.1,0.4-14.2-0.5-21.3-1.4c-7.7-1-15.4-2.3-23.1-2.4c-6.4,0-12.4-1.8-18.7-2.4
+ c-9.1-0.9-18.1-3.4-27.2-5.3c-1.1-0.2-2.1-0.9-3.1-1.4c1.3-0.2,2.8,0.4,3.9-0.9c17.3,2.5,34.8,3.8,52.3,4.7
+ c5.3,0.3,10.6,0.1,15.8-0.6C399.3,184.7,399.7,184.6,400,184.2z"/>
+<path style="fill:#F7E3E5;" d="M185,317c-2-0.7-4-1.5-6-2.2C181.6,314,184,313.8,185,317L185,317z"/>
+<path style="fill:#F7E3E5;" d="M227.3,110c-0.1-1-0.2-2-0.3-3C228.3,107.9,228.2,108.9,227.3,110z"/>
+<path style="fill:#F5CFD6;" d="M400,184.2c-0.3,0.4-0.7,0.5-1,0C399.3,184.2,399.7,184.2,400,184.2z"/>
+<path style="fill:#7A7A7A;" d="M354.8,451.9c0.2,0.6,0,1.1-0.6,1.3C354,452.5,354.3,452.1,354.8,451.9z"/>
+<path style="fill:#F7E3E5;" d="M301.2,437c0.6-13.4,1.3-26.7,1.9-40.1c0-1,0.6-1.5,1.4-1.7c-0.8,13.9-0.8,27.9-2.6,41.8
+ C301.7,437,301.4,437,301.2,437z"/>
+</svg>
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js
new file mode 100755
index 0000000..177c845
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js
@@ -0,0 +1,117 @@
+/*! AdminLTE userfrosting.js
+ * ================
+ * Userfrosting JS file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements functions related to Userfrosting.
+ *
+ * @Author Louis Charette
+ * @Support <https://github.com/userfrosting>
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+ throw new Error("AdminLTE requires jQuery");
+}
+
+/* Tree_UF()
+* ======
+* Overwrite the default behavior for UF menu compatibility
+*
+* @type Function
+* @Usage: $.AdminLTE.tree_UF('.sidebar')
+*/
+$.AdminLTE.tree_UF = function (menu) {
+ var _this = this;
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
+ $(document).off('click', menu + ' li a').on('click', menu + ' li a', function (e) {
+
+ //Get the clicked link and the next element
+ var $this = $(this);
+ var checkElement = $this.next();
+
+ //Check if the next element is a menu and is visible
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
+ //Close the menu
+ checkElement.slideUp(animationSpeed, function () {
+ checkElement.removeClass('menu-open');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ //_this.layout.fix();
+ });
+ checkElement.parent("li").removeClass("active");
+ }
+ //If the menu is not visible
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+ //Get the parent menu
+ var parent = $this.parents('ul').first();
+ //Close all open menus within the parent
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
+ //Remove the menu-open class from the parent
+ ul.removeClass('menu-open');
+ //Get the parent li
+ var parent_li = $this.parent("li");
+
+ //Open the target menu and add the menu-open class
+ checkElement.slideDown(animationSpeed, function () {
+
+ //Add the class active to the parent li
+ checkElement.addClass('menu-open');
+ parent.find('li.treeview.active').removeClass('active'); //<<-- Overwrite here. Otherwise, the menu href based active will be removed
+ parent_li.addClass('active');
+
+ //Fix the layout in case the sidebar stretches over the height of the window
+ _this.layout.fix();
+ });
+ }
+ //if this isn't a link, prevent the page from being redirected
+ if (checkElement.is('.treeview-menu')) {
+ e.preventDefault();
+ }
+ });
+};
+
+/* initMenu()
+* ======
+* Activate the menu based on the url and href attr.
+*
+* @type Function
+* @Usage: $.AdminLTE.initMenu('.sidebar')
+*/
+$.AdminLTE.initMenu = function (searchElement) {
+ var _this = this;
+ var element = $(searchElement).filter(function() {
+ // Strip out everything after the hash, if present
+ var url_head = window.location.href.split('#', 1)[0];
+ return this.href == url_head; // || url.href.indexOf(this.href) == 0 // Include this if you want to color all parent URIs as well
+ }).parent();
+ $(element).addClass('active');
+ $(element).parents('.treeview').addClass('active');
+ $(element).parents('.treeview-menu').addClass('menu-open');
+};
+
+$(function() {
+ //Init menu and trees
+ $.AdminLTE.initMenu('ul.sidebar-menu a');
+ $.AdminLTE.tree_UF('.sidebar');
+
+ // Apply select2 to all js-select2 elements
+ $('.js-select2').select2({ minimumResultsForSearch: Infinity });
+
+ // Apply iCheck to all js-icheck elements
+ $('.js-icheck').iCheck({
+ checkboxClass: 'icheckbox_square-blue',
+ radioClass: 'iradio_square-blue',
+ increaseArea: '20%' // optional
+ });
+
+ // Remember the sidebar collapse state
+ // See: https://github.com/almasaeed2010/AdminLTE/issues/896#issuecomment-264723101
+ $('.sidebar-toggle').click(function(event) {
+ event.preventDefault();
+ if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) {
+ sessionStorage.setItem('sidebar-toggle-collapsed', '');
+ } else {
+ sessionStorage.setItem('sidebar-toggle-collapsed', '1');
+ }
+ });
+}); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js
new file mode 100755
index 0000000..54b6055
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js
@@ -0,0 +1,763 @@
+/*! AdminLTE app.js
+ * ================
+ * Main JS application file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements exclusive AdminLTE plugins.
+ *
+ * @Author Almsaeed Studio
+ * @Support <http://www.almsaeedstudio.com>
+ * @Email <abdullah@almsaeedstudio.com>
+ * @version 2.3.6
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+ throw new Error("AdminLTE requires jQuery");
+}
+
+/* AdminLTE
+ *
+ * @type Object
+ * @description $.AdminLTE is the main object for the template's app.
+ * It's used for implementing functions and options related
+ * to the template. Keeping everything wrapped in an object
+ * prevents conflict with other plugins and is a better
+ * way to organize our code.
+ */
+$.AdminLTE = {};
+
+/* --------------------
+ * - AdminLTE Options -
+ * --------------------
+ * Modify these options to suit your implementation
+ */
+$.AdminLTE.options = {
+ //Add slimscroll to navbar menus
+ //This requires you to load the slimscroll plugin
+ //in every page before app.js
+ navbarMenuSlimscroll: true,
+ navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
+ navbarMenuHeight: "200px", //The height of the inner menu
+ //General animation speed for JS animated elements such as box collapse/expand and
+ //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
+ //'fast', 'normal', or 'slow'
+ animationSpeed: 500,
+ //Sidebar push menu toggle button selector
+ sidebarToggleSelector: "[data-toggle='offcanvas']",
+ //Activate sidebar push menu
+ sidebarPushMenu: true,
+ //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
+ sidebarSlimScroll: true,
+ //Enable sidebar expand on hover effect for sidebar mini
+ //This option is forced to true if both the fixed layout and sidebar mini
+ //are used together
+ sidebarExpandOnHover: false,
+ //BoxRefresh Plugin
+ enableBoxRefresh: true,
+ //Bootstrap.js tooltip
+ enableBSToppltip: true,
+ BSTooltipSelector: "[data-toggle='tooltip']",
+ //Enable Fast Click. Fastclick.js creates a more
+ //native touch experience with touch devices. If you
+ //choose to enable the plugin, make sure you load the script
+ //before AdminLTE's app.js
+ enableFastclick: false,
+ //Control Sidebar Options
+ enableControlSidebar: true,
+ controlSidebarOptions: {
+ //Which button should trigger the open/close event
+ toggleBtnSelector: "[data-toggle='control-sidebar']",
+ //The sidebar selector
+ selector: ".control-sidebar",
+ //Enable slide over content
+ slide: true
+ },
+ //Box Widget Plugin. Enable this plugin
+ //to allow boxes to be collapsed and/or removed
+ enableBoxWidget: true,
+ //Box Widget plugin options
+ boxWidgetOptions: {
+ boxWidgetIcons: {
+ //Collapse icon
+ collapse: 'fa-minus',
+ //Open icon
+ open: 'fa-plus',
+ //Remove icon
+ remove: 'fa-times'
+ },
+ boxWidgetSelectors: {
+ //Remove button selector
+ remove: '[data-widget="remove"]',
+ //Collapse button selector
+ collapse: '[data-widget="collapse"]'
+ }
+ },
+ //Direct Chat plugin options
+ directChat: {
+ //Enable direct chat by default
+ enable: true,
+ //The button to open and close the chat contacts pane
+ contactToggleSelector: '[data-widget="chat-pane-toggle"]'
+ },
+ //Define the set of colors to use globally around the website
+ colors: {
+ lightBlue: "#3c8dbc",
+ red: "#f56954",
+ green: "#00a65a",
+ aqua: "#00c0ef",
+ yellow: "#f39c12",
+ blue: "#0073b7",
+ navy: "#001F3F",
+ teal: "#39CCCC",
+ olive: "#3D9970",
+ lime: "#01FF70",
+ orange: "#FF851B",
+ fuchsia: "#F012BE",
+ purple: "#8E24AA",
+ maroon: "#D81B60",
+ black: "#222222",
+ gray: "#d2d6de"
+ },
+ //The standard screen sizes that bootstrap uses.
+ //If you change these in the variables.less file, change
+ //them here too.
+ screenSizes: {
+ xs: 480,
+ sm: 768,
+ md: 992,
+ lg: 1200
+ }
+};
+
+/* ------------------
+ * - Implementation -
+ * ------------------
+ * The next block of code implements AdminLTE's
+ * functions and plugins as specified by the
+ * options above.
+ */
+$(function () {
+ "use strict";
+
+ //Fix for IE page transitions
+ $("body").removeClass("hold-transition");
+
+ //Extend options if external options exist
+ if (typeof AdminLTEOptions !== "undefined") {
+ $.extend(true,
+ $.AdminLTE.options,
+ AdminLTEOptions);
+ }
+
+ //Easy access to options
+ var o = $.AdminLTE.options;
+
+ //Set up the object
+ _init();
+
+ //Activate the layout maker
+ $.AdminLTE.layout.activate();
+
+ //Enable sidebar tree view controls
+ $.AdminLTE.tree('.sidebar');
+
+ //Enable control sidebar
+ if (o.enableControlSidebar) {
+ $.AdminLTE.controlSidebar.activate();
+ }
+
+ //Add slimscroll to navbar dropdown
+ if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
+ $(".navbar .menu").slimscroll({
+ height: o.navbarMenuHeight,
+ alwaysVisible: false,
+ size: o.navbarMenuSlimscrollWidth
+ }).css("width", "100%");
+ }
+
+ //Activate sidebar push menu
+ if (o.sidebarPushMenu) {
+ $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
+ }
+
+ //Activate Bootstrap tooltip
+ if (o.enableBSToppltip) {
+ $('body').tooltip({
+ selector: o.BSTooltipSelector
+ });
+ }
+
+ //Activate box widget
+ if (o.enableBoxWidget) {
+ $.AdminLTE.boxWidget.activate();
+ }
+
+ //Activate fast click
+ if (o.enableFastclick && typeof FastClick != 'undefined') {
+ FastClick.attach(document.body);
+ }
+
+ //Activate direct chat widget
+ if (o.directChat.enable) {
+ $(document).on('click', o.directChat.contactToggleSelector, function () {
+ var box = $(this).parents('.direct-chat').first();
+ box.toggleClass('direct-chat-contacts-open');
+ });
+ }
+
+ /*
+ * INITIALIZE BUTTON TOGGLE
+ * ------------------------
+ */
+ $('.btn-group[data-toggle="btn-toggle"]').each(function () {
+ var group = $(this);
+ $(this).find(".btn").on('click', function (e) {
+ group.find(".btn.active").removeClass("active");
+ $(this).addClass("active");
+ e.preventDefault();
+ });
+
+ });
+});
+
+/* ----------------------------------
+ * - Initialize the AdminLTE Object -
+ * ----------------------------------
+ * All AdminLTE functions are implemented below.
+ */
+function _init() {
+ 'use strict';
+ /* Layout
+ * ======
+ * Fixes the layout height in case min-height fails.
+ *
+ * @type Object
+ * @usage $.AdminLTE.layout.activate()
+ * $.AdminLTE.layout.fix()
+ * $.AdminLTE.layout.fixSidebar()
+ */
+ $.AdminLTE.layout = {
+ activate: function () {
+ var _this = this;
+ _this.fix();
+ _this.fixSidebar();
+ $(window, ".wrapper").resize(function () {
+ _this.fix();
+ _this.fixSidebar();
+ });
+ },
+ fix: function () {
+ //Get window height and the wrapper height
+ var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
+ var window_height = $(window).height();
+ var sidebar_height = $(".sidebar").height();
+ //Set the min-height of the content and sidebar based on the
+ //the height of the document.
+ if ($("body").hasClass("fixed")) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
+ } else {
+ var postSetWidth;
+ if (window_height >= sidebar_height) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - neg);
+ postSetWidth = window_height - neg;
+ } else {
+ $(".content-wrapper, .right-side").css('min-height', sidebar_height);
+ postSetWidth = sidebar_height;
+ }
+
+ //Fix for the control sidebar height
+ var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
+ if (typeof controlSidebar !== "undefined") {
+ if (controlSidebar.height() > postSetWidth)
+ $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
+ }
+
+ }
+ },
+ fixSidebar: function () {
+ //Make sure the body tag has the .fixed class
+ if (!$("body").hasClass("fixed")) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ }
+ return;
+ } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
+ window.console.error("Error: the fixed layout requires the slimscroll plugin!");
+ }
+ //Enable slimscroll for fixed layout
+ if ($.AdminLTE.options.sidebarSlimScroll) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ //Destroy if it exists
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ //Add slimscroll
+ $(".sidebar").slimscroll({
+ height: ($(window).height() - $(".main-header").height()) + "px",
+ color: "rgba(0,0,0,0.2)",
+ size: "3px"
+ });
+ }
+ }
+ }
+ };
+
+ /* PushMenu()
+ * ==========
+ * Adds the push menu functionality to the sidebar.
+ *
+ * @type Function
+ * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
+ */
+ $.AdminLTE.pushMenu = {
+ activate: function (toggleBtn) {
+ //Get the screen sizes
+ var screenSizes = $.AdminLTE.options.screenSizes;
+
+ //Enable sidebar toggle
+ $(document).on('click', toggleBtn, function (e) {
+ e.preventDefault();
+
+ //Enable sidebar push menu
+ if ($(window).width() > (screenSizes.sm - 1)) {
+ if ($("body").hasClass('sidebar-collapse')) {
+ $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
+ } else {
+ $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ }
+ }
+ //Handle sidebar push menu for small screens
+ else {
+ if ($("body").hasClass('sidebar-open')) {
+ $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ } else {
+ $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
+ }
+ }
+ });
+
+ $(".content-wrapper").click(function () {
+ //Enable hide menu when clicking on the content-wrapper on small screens
+ if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
+ $("body").removeClass('sidebar-open');
+ }
+ });
+
+ //Enable expand on hover for sidebar mini
+ if ($.AdminLTE.options.sidebarExpandOnHover
+ || ($('body').hasClass('fixed')
+ && $('body').hasClass('sidebar-mini'))) {
+ this.expandOnHover();
+ }
+ },
+ expandOnHover: function () {
+ var _this = this;
+ var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
+ //Expand sidebar on hover
+ $('.main-sidebar').hover(function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $("body").hasClass('sidebar-collapse')
+ && $(window).width() > screenWidth) {
+ _this.expand();
+ }
+ }, function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $('body').hasClass('sidebar-expanded-on-hover')
+ && $(window).width() > screenWidth) {
+ _this.collapse();
+ }
+ });
+ },
+ expand: function () {
+ $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
+ },
+ collapse: function () {
+ if ($('body').hasClass('sidebar-expanded-on-hover')) {
+ $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
+ }
+ }
+ };
+
+ /* Tree()
+ * ======
+ * Converts the sidebar into a multilevel
+ * tree view menu.
+ *
+ * @type Function
+ * @Usage: $.AdminLTE.tree('.sidebar')
+ */
+ $.AdminLTE.tree = function (menu) {
+ var _this = this;
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
+ $(document).off('click', menu + ' li a')
+ .on('click', menu + ' li a', function (e) {
+ //Get the clicked link and the next element
+ var $this = $(this);
+ var checkElement = $this.next();
+
+ //Check if the next element is a menu and is visible
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
+ //Close the menu
+ checkElement.slideUp(animationSpeed, function () {
+ checkElement.removeClass('menu-open');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ //_this.layout.fix();
+ });
+ checkElement.parent("li").removeClass("active");
+ }
+ //If the menu is not visible
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+ //Get the parent menu
+ var parent = $this.parents('ul').first();
+ //Close all open menus within the parent
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
+ //Remove the menu-open class from the parent
+ ul.removeClass('menu-open');
+ //Get the parent li
+ var parent_li = $this.parent("li");
+
+ //Open the target menu and add the menu-open class
+ checkElement.slideDown(animationSpeed, function () {
+ //Add the class active to the parent li
+ checkElement.addClass('menu-open');
+ parent.find('li.active').removeClass('active');
+ parent_li.addClass('active');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ _this.layout.fix();
+ });
+ }
+ //if this isn't a link, prevent the page from being redirected
+ if (checkElement.is('.treeview-menu')) {
+ e.preventDefault();
+ }
+ });
+ };
+
+ /* ControlSidebar
+ * ==============
+ * Adds functionality to the right sidebar
+ *
+ * @type Object
+ * @usage $.AdminLTE.controlSidebar.activate(options)
+ */
+ $.AdminLTE.controlSidebar = {
+ //instantiate the object
+ activate: function () {
+ //Get the object
+ var _this = this;
+ //Update options
+ var o = $.AdminLTE.options.controlSidebarOptions;
+ //Get the sidebar
+ var sidebar = $(o.selector);
+ //The toggle button
+ var btn = $(o.toggleBtnSelector);
+
+ //Listen to the click event
+ btn.on('click', function (e) {
+ e.preventDefault();
+ //If the sidebar is not open
+ if (!sidebar.hasClass('control-sidebar-open')
+ && !$('body').hasClass('control-sidebar-open')) {
+ //Open the sidebar
+ _this.open(sidebar, o.slide);
+ } else {
+ _this.close(sidebar, o.slide);
+ }
+ });
+
+ //If the body has a boxed layout, fix the sidebar bg position
+ var bg = $(".control-sidebar-bg");
+ _this._fix(bg);
+
+ //If the body has a fixed layout, make the control sidebar fixed
+ if ($('body').hasClass('fixed')) {
+ _this._fixForFixed(sidebar);
+ } else {
+ //If the content height is less than the sidebar's height, force max height
+ if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
+ _this._fixForContent(sidebar);
+ }
+ }
+ },
+ //Open the control sidebar
+ open: function (sidebar, slide) {
+ //Slide over content
+ if (slide) {
+ sidebar.addClass('control-sidebar-open');
+ } else {
+ //Push the content by adding the open class to the body instead
+ //of the sidebar itself
+ $('body').addClass('control-sidebar-open');
+ }
+ },
+ //Close the control sidebar
+ close: function (sidebar, slide) {
+ if (slide) {
+ sidebar.removeClass('control-sidebar-open');
+ } else {
+ $('body').removeClass('control-sidebar-open');
+ }
+ },
+ _fix: function (sidebar) {
+ var _this = this;
+ if ($("body").hasClass('layout-boxed')) {
+ sidebar.css('position', 'absolute');
+ sidebar.height($(".wrapper").height());
+ if (_this.hasBindedResize) {
+ return;
+ }
+ $(window).resize(function () {
+ _this._fix(sidebar);
+ });
+ _this.hasBindedResize = true;
+ } else {
+ sidebar.css({
+ 'position': 'fixed',
+ 'height': 'auto'
+ });
+ }
+ },
+ _fixForFixed: function (sidebar) {
+ sidebar.css({
+ 'position': 'fixed',
+ 'max-height': '100%',
+ 'overflow': 'auto',
+ 'padding-bottom': '50px'
+ });
+ },
+ _fixForContent: function (sidebar) {
+ $(".content-wrapper, .right-side").css('min-height', sidebar.height());
+ }
+ };
+
+ /* BoxWidget
+ * =========
+ * BoxWidget is a plugin to handle collapsing and
+ * removing boxes from the screen.
+ *
+ * @type Object
+ * @usage $.AdminLTE.boxWidget.activate()
+ * Set all your options in the main $.AdminLTE.options object
+ */
+ $.AdminLTE.boxWidget = {
+ selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
+ icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
+ animationSpeed: $.AdminLTE.options.animationSpeed,
+ activate: function (_box) {
+ var _this = this;
+ if (!_box) {
+ _box = document; // activate all boxes per default
+ }
+ //Listen for collapse event triggers
+ $(_box).on('click', _this.selectors.collapse, function (e) {
+ e.preventDefault();
+ _this.collapse($(this));
+ });
+
+ //Listen for remove event triggers
+ $(_box).on('click', _this.selectors.remove, function (e) {
+ e.preventDefault();
+ _this.remove($(this));
+ });
+ },
+ collapse: function (element) {
+ var _this = this;
+ //Find the box parent
+ var box = element.parents(".box").first();
+ //Find the body and the footer
+ var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
+ if (!box.hasClass("collapsed-box")) {
+ //Convert minus into plus
+ element.children(":first")
+ .removeClass(_this.icons.collapse)
+ .addClass(_this.icons.open);
+ //Hide the content
+ box_content.slideUp(_this.animationSpeed, function () {
+ box.addClass("collapsed-box");
+ });
+ } else {
+ //Convert plus into minus
+ element.children(":first")
+ .removeClass(_this.icons.open)
+ .addClass(_this.icons.collapse);
+ //Show the content
+ box_content.slideDown(_this.animationSpeed, function () {
+ box.removeClass("collapsed-box");
+ });
+ }
+ },
+ remove: function (element) {
+ //Find the box parent
+ var box = element.parents(".box").first();
+ box.slideUp(this.animationSpeed);
+ }
+ };
+}
+
+/* ------------------
+ * - Custom Plugins -
+ * ------------------
+ * All custom plugins are defined below.
+ */
+
+/*
+ * BOX REFRESH BUTTON
+ * ------------------
+ * This is a custom plugin to use with the component BOX. It allows you to add
+ * a refresh button to the box. It converts the box's state to a loading state.
+ *
+ * @type plugin
+ * @usage $("#box-widget").boxRefresh( options );
+ */
+(function ($) {
+
+ "use strict";
+
+ $.fn.boxRefresh = function (options) {
+
+ // Render options
+ var settings = $.extend({
+ //Refresh button selector
+ trigger: ".refresh-btn",
+ //File source to be loaded (e.g: ajax/src.php)
+ source: "",
+ //Callbacks
+ onLoadStart: function (box) {
+ return box;
+ }, //Right after the button has been clicked
+ onLoadDone: function (box) {
+ return box;
+ } //When the source has been loaded
+
+ }, options);
+
+ //The overlay
+ var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
+
+ return this.each(function () {
+ //if a source is specified
+ if (settings.source === "") {
+ if (window.console) {
+ window.console.log("Please specify a source first - boxRefresh()");
+ }
+ return;
+ }
+ //the box
+ var box = $(this);
+ //the button
+ var rBtn = box.find(settings.trigger).first();
+
+ //On trigger click
+ rBtn.on('click', function (e) {
+ e.preventDefault();
+ //Add loading overlay
+ start(box);
+
+ //Perform ajax call
+ box.find(".box-body").load(settings.source, function () {
+ done(box);
+ });
+ });
+ });
+
+ function start(box) {
+ //Add overlay and loading img
+ box.append(overlay);
+
+ settings.onLoadStart.call(box);
+ }
+
+ function done(box) {
+ //Remove overlay and loading img
+ box.find(overlay).remove();
+
+ settings.onLoadDone.call(box);
+ }
+
+ };
+
+})(jQuery);
+
+/*
+ * EXPLICIT BOX CONTROLS
+ * -----------------------
+ * This is a custom plugin to use with the component BOX. It allows you to activate
+ * a box inserted in the DOM after the app.js was loaded, toggle and remove box.
+ *
+ * @type plugin
+ * @usage $("#box-widget").activateBox();
+ * @usage $("#box-widget").toggleBox();
+ * @usage $("#box-widget").removeBox();
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.activateBox = function () {
+ $.AdminLTE.boxWidget.activate(this);
+ };
+
+ $.fn.toggleBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
+ $.AdminLTE.boxWidget.collapse(button);
+ };
+
+ $.fn.removeBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.remove, this);
+ $.AdminLTE.boxWidget.remove(button);
+ };
+
+})(jQuery);
+
+/*
+ * TODO LIST CUSTOM PLUGIN
+ * -----------------------
+ * This plugin depends on iCheck plugin for checkbox and radio inputs
+ *
+ * @type plugin
+ * @usage $("#todo-widget").todolist( options );
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.todolist = function (options) {
+ // Render options
+ var settings = $.extend({
+ //When the user checks the input
+ onCheck: function (ele) {
+ return ele;
+ },
+ //When the user unchecks the input
+ onUncheck: function (ele) {
+ return ele;
+ }
+ }, options);
+
+ return this.each(function () {
+
+ if (typeof $.fn.iCheck != 'undefined') {
+ $('input', this).on('ifChecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onCheck.call(ele);
+ });
+
+ $('input', this).on('ifUnchecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onUncheck.call(ele);
+ });
+ } else {
+ $('input', this).on('change', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ if ($('input', ele).is(":checked")) {
+ settings.onCheck.call(ele);
+ } else {
+ settings.onUncheck.call(ele);
+ }
+ });
+ }
+ });
+ };
+}(jQuery));
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js b/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js
new file mode 100755
index 0000000..00878d3
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js
@@ -0,0 +1,124 @@
+/*
+A simple jQuery function that can add listeners on attribute change.
+http://meetselva.github.io/attrchange/
+
+About License:
+Copyright (C) 2013-2014 Selvakumar Arumugam
+You may use attrchange plugin under the terms of the MIT Licese.
+https://github.com/meetselva/attrchange/blob/master/MIT-License.txt
+ */
+(function($) {
+ function isDOMAttrModifiedSupported() {
+ var p = document.createElement('p');
+ var flag = false;
+
+ if (p.addEventListener) {
+ p.addEventListener('DOMAttrModified', function() {
+ flag = true
+ }, false);
+ } else if (p.attachEvent) {
+ p.attachEvent('onDOMAttrModified', function() {
+ flag = true
+ });
+ } else { return false; }
+ p.setAttribute('id', 'target');
+ return flag;
+ }
+
+ function checkAttributes(chkAttr, e) {
+ if (chkAttr) {
+ var attributes = this.data('attr-old-value');
+
+ if (e.attributeName.indexOf('style') >= 0) {
+ if (!attributes['style'])
+ attributes['style'] = {}; //initialize
+ var keys = e.attributeName.split('.');
+ e.attributeName = keys[0];
+ e.oldValue = attributes['style'][keys[1]]; //old value
+ e.newValue = keys[1] + ':'
+ + this.prop("style")[$.camelCase(keys[1])]; //new value
+ attributes['style'][keys[1]] = e.newValue;
+ } else {
+ e.oldValue = attributes[e.attributeName];
+ e.newValue = this.attr(e.attributeName);
+ attributes[e.attributeName] = e.newValue;
+ }
+
+ this.data('attr-old-value', attributes); //update the old value object
+ }
+ }
+
+ //initialize Mutation Observer
+ var MutationObserver = window.MutationObserver
+ || window.WebKitMutationObserver;
+
+ $.fn.attrchange = function(a, b) {
+ if (typeof a == 'object') {//core
+ var cfg = {
+ trackValues : false,
+ callback : $.noop
+ };
+ //backward compatibility
+ if (typeof a === "function") { cfg.callback = a; } else { $.extend(cfg, a); }
+
+ if (cfg.trackValues) { //get attributes old value
+ this.each(function(i, el) {
+ var attributes = {};
+ for ( var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) {
+ attr = attrs.item(i);
+ attributes[attr.nodeName] = attr.value;
+ }
+ $(this).data('attr-old-value', attributes);
+ });
+ }
+
+ if (MutationObserver) { //Modern Browsers supporting MutationObserver
+ var mOptions = {
+ subtree : false,
+ attributes : true,
+ attributeOldValue : cfg.trackValues
+ };
+ var observer = new MutationObserver(function(mutations) {
+ mutations.forEach(function(e) {
+ var _this = e.target;
+ //get new value if trackValues is true
+ if (cfg.trackValues) {
+ e.newValue = $(_this).attr(e.attributeName);
+ }
+ if ($(_this).data('attrchange-status') === 'connected') { //execute if connected
+ cfg.callback.call(_this, e);
+ }
+ });
+ });
+
+ return this.data('attrchange-method', 'Mutation Observer').data('attrchange-status', 'connected')
+ .data('attrchange-obs', observer).each(function() {
+ observer.observe(this, mOptions);
+ });
+ } else if (isDOMAttrModifiedSupported()) { //Opera
+ //Good old Mutation Events
+ return this.data('attrchange-method', 'DOMAttrModified').data('attrchange-status', 'connected').on('DOMAttrModified', function(event) {
+ if (event.originalEvent) { event = event.originalEvent; }//jQuery normalization is not required
+ event.attributeName = event.attrName; //property names to be consistent with MutationObserver
+ event.oldValue = event.prevValue; //property names to be consistent with MutationObserver
+ if ($(this).data('attrchange-status') === 'connected') { //disconnected logically
+ cfg.callback.call(this, event);
+ }
+ });
+ } else if ('onpropertychange' in document.body) { //works only in IE
+ return this.data('attrchange-method', 'propertychange').data('attrchange-status', 'connected').on('propertychange', function(e) {
+ e.attributeName = window.event.propertyName;
+ //to set the attr old value
+ checkAttributes.call($(this), cfg.trackValues, e);
+ if ($(this).data('attrchange-status') === 'connected') { //disconnected logically
+ cfg.callback.call(this, e);
+ }
+ });
+ }
+ return this;
+ } else if (typeof a == 'string' && $.fn.attrchange.hasOwnProperty('extensions') &&
+ $.fn.attrchange['extensions'].hasOwnProperty(a)) { //extensions/options
+ return $.fn.attrchange['extensions'][a].call(this, b);
+ }
+ }
+})(jQuery); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js b/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js
new file mode 100755
index 0000000..b008cf2
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js
@@ -0,0 +1,57 @@
+$.validator.addMethod("equals", function(value, element, params) {
+ params = $.extend(
+ true, // deep extend
+ {
+ value: '',
+ caseSensitive: false
+ }, params);
+
+ if (!params.caseSensitive) {
+ params.value = params.value.toLowerCase();
+ value = value.toLowerCase();
+ }
+ return this.optional(element) || value == params.value;
+}, "Value is not correct.");
+
+$.validator.addMethod("notEquals", function(value, element, params) {
+ params = $.extend(
+ true, // deep extend
+ {
+ value: '',
+ caseSensitive: false
+ }, params);
+
+ if (!params.caseSensitive) {
+ params.value = params.value.toLowerCase();
+ value = value.toLowerCase();
+ }
+ return this.optional(element) || value != params.value;
+}, "Value is not correct.");
+
+$.validator.addMethod("noLeadingWhitespace", function(value, element) {
+ return this.optional(element) || /^\S.*$/i.test(value);
+}, "No leading whitespace allowed");
+
+$.validator.addMethod("noTrailingWhitespace", function(value, element) {
+ return this.optional(element) || /^.*\S$/i.test(value);
+}, "No trailing whitespace allowed");
+
+jQuery.validator.addMethod("memberOf", function(value, element, arr) {
+ return $.inArray(value, arr) != -1;
+}, "Data provided must match one of the provided options.");
+
+jQuery.validator.addMethod("notMemberOf", function(value, element, arr) {
+ return $.inArray(value, arr) == -1;
+}, "Data provided must NOT match one of the provided options.");
+
+jQuery.validator.addMethod("matchFormField", function(value, element, field) {
+ return value === $(element).closest('form').find("input[name=" + field + "]").val();
+}, "The specified fields must match.");
+
+jQuery.validator.addMethod("notMatchFormField", function(value, element, field) {
+ return value !== $(element).closest('form').find("input[name=" + field + "]").val();
+}, "The specified fields must NOT match.");
+
+$.validator.addMethod("username", function(value, element) {
+ return this.optional(element) || /^([a-z0-9\.\-_])+$/.test(value);
+}, "The field may only contain lowercase letters, digits, '.', '-', and '_'.");
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js b/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js
new file mode 100755
index 0000000..96f47bb
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js
@@ -0,0 +1,119 @@
+/**
+ * This file contains extra helper functions for Handlebars.js.
+ *
+ * @see http://handlebarsjs.com/#helpers
+ */
+
+ /**
+ * Improved comparison operator
+ * See https://stackoverflow.com/a/16315366/2970321
+ */
+Handlebars.registerHelper('ifx', function (v1, operator, v2, options) {
+ switch (operator) {
+ case '==':
+ return (v1 == v2) ? options.fn(this) : options.inverse(this);
+ case '===':
+ return (v1 === v2) ? options.fn(this) : options.inverse(this);
+ case '!=':
+ return (v1 != v2) ? options.fn(this) : options.inverse(this);
+ case '!==':
+ return (v1 !== v2) ? options.fn(this) : options.inverse(this);
+ case '<':
+ return (v1 < v2) ? options.fn(this) : options.inverse(this);
+ case '<=':
+ return (v1 <= v2) ? options.fn(this) : options.inverse(this);
+ case '>':
+ return (v1 > v2) ? options.fn(this) : options.inverse(this);
+ case '>=':
+ return (v1 >= v2) ? options.fn(this) : options.inverse(this);
+ case '&&':
+ return (v1 && v2) ? options.fn(this) : options.inverse(this);
+ case '||':
+ return (v1 || v2) ? options.fn(this) : options.inverse(this);
+ default:
+ return (v1 == v2) ? options.fn(this) : options.inverse(this);
+ }
+});
+
+/**
+ * Perform simple calculations.
+ *
+ * usage: {{calc x '+' 2}}
+ */
+Handlebars.registerHelper('calc', function (v1, operator, v2, options) {
+ lvalue = parseFloat(v1);
+ rvalue = parseFloat(v2);
+
+ return {
+ "+": lvalue + rvalue,
+ "-": lvalue - rvalue,
+ "*": lvalue * rvalue,
+ "/": lvalue / rvalue,
+ "%": lvalue % rvalue
+ }[operator];
+});
+
+/**
+ * format an ISO date using Moment.js
+ *
+ * moment syntax example: moment(Date("2011-07-18T15:50:52")).format("MMMM YYYY")
+ * usage: {{dateFormat creation_date format="MMMM YYYY"}}
+ * @requires momentjs http://momentjs.com/
+ */
+Handlebars.registerHelper('dateFormat', function(context, block) {
+ if (window.moment) {
+ var f = block.hash.format || "MMM Do, YYYY";
+ return moment(context).format(f);
+ } else {
+ // moment plugin not available. return data as is.
+ console.log("The moment.js plugin is not loaded. Please make sure you have included moment.js on this page.");
+ return context;
+ }
+});
+
+/**
+ * Format a phone number.
+ */
+Handlebars.registerHelper("phoneUSFormat", function(phoneNumber) {
+ if (typeof phoneNumber === 'undefined') {
+ return '';
+ }
+
+ phoneNumber = phoneNumber.toString();
+ return "(" + phoneNumber.substr(0,3) + ") " + phoneNumber.substr(3,3) + "-" + phoneNumber.substr(6,4);
+});
+
+/**
+ * Format currency (USD).
+ */
+Handlebars.registerHelper("currencyUsdFormat", function(amount) {
+ var parsedAmount = parseFloat(amount);
+ if (parsedAmount < 0) {
+ return "-$" + Math.abs(parsedAmount).toFixed(2);
+ } else {
+ return "$" + parsedAmount.toFixed(2);
+ }
+});
+
+/**
+ * Convert a string to a slug using speakingurl.js.
+ *
+ * @requires speakingurl https://pid.github.io/speakingurl/
+ */
+Handlebars.registerHelper('slug', function(text) {
+ return getSlug(text);
+});
+
+/**
+ * Equality helper for Handlebars
+ * http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional/21915381#21915381
+ * @deprecated since 4.1 - use ifx instead
+ * usage: {{ifCond apple orange}}
+ */
+Handlebars.registerHelper('ifCond', function(v1, v2, options) {
+ if(v1 == v2) {
+ return options.fn(this);
+ }
+
+ return options.inverse(this);
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/query-string.js b/main/app/sprinkles/core/assets/userfrosting/js/query-string.js
new file mode 100755
index 0000000..5e0d780
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/query-string.js
@@ -0,0 +1,65 @@
+/**
+ * @add jQuery.String
+ */
+$.String = $.extend($.String || {}, {
+ /**
+ * @function deparam
+ *
+ * Takes a string of name value pairs and returns a Object literal that represents those params.
+ *
+ * @param {String} params a string like <code>"foo=bar&person[age]=3"</code>
+ * @return {Object} A JavaScript Object that represents the params:
+ *
+ * {
+ * foo: "bar",
+ * person: {
+ * age: "3"
+ * }
+ * }
+ */
+ deparam: function(params){
+ var digitTest = /^\d+$/,
+ keyBreaker = /([^\[\]]+)|(\[\])/g,
+ plus = /\+/g,
+ paramTest = /([^?#]*)(#.*)?$/;
+
+ if(! params || ! paramTest.test(params) ) {
+ return {};
+ }
+
+
+ var data = {},
+ pairs = params.split('&'),
+ current;
+
+ for(var i=0; i < pairs.length; i++){
+ current = data;
+ var pair = pairs[i].split('=');
+
+ // if we find foo=1+1=2
+ if(pair.length != 2) {
+ pair = [pair[0], pair.slice(1).join("=")]
+ }
+
+ var key = decodeURIComponent(pair[0].replace(plus, " ")),
+ value = decodeURIComponent(pair[1].replace(plus, " ")),
+ parts = key.match(keyBreaker);
+
+ for ( var j = 0; j < parts.length - 1; j++ ) {
+ var part = parts[j];
+ if (!current[part] ) {
+ // if what we are pointing to looks like an array
+ current[part] = digitTest.test(parts[j+1]) || parts[j+1] == "[]" ? [] : {}
+ }
+ current = current[part];
+ }
+ lastPart = parts[parts.length - 1];
+ if(lastPart == "[]"){
+ current.push(value)
+ }else{
+ current[lastPart] = value;
+ }
+ }
+ return data;
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js b/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js
new file mode 100755
index 0000000..1be9c85
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js
@@ -0,0 +1,271 @@
+/*! Widget: sort2Hash (BETA) - updated 8/12/2017 (v2.28.15.uf) */
+/* Requires tablesorter v2.8+ and jQuery 1.7+
+ * by Rob Garrison
+ *
+ * Temporary patched version of widget to handle browser history issues (#712).
+ */
+;( function( $ ) {
+ 'use strict';
+ var ts = $.tablesorter || {},
+ s2h = ts.sort2Hash = {
+ init : function( c, wo ) {
+ var filter, temp, page, size,
+ table = c.table,
+ pager = c.pager,
+ hasSaveSort = ts.hasWidget( table, 'saveSort' ),
+ sort = s2h.decodeHash( c, wo, 'sort' );
+ if ( ( sort && !hasSaveSort ) || ( sort && hasSaveSort && wo.sort2Hash_overrideSaveSort ) ) {
+ s2h.convertString2Sort( c, wo, sort );
+ }
+ if ( ts.hasWidget( c.table, 'pager' ) ) {
+ temp = parseInt( s2h.decodeHash( c, wo, 'page' ), 10 );
+ page = pager.page = ( temp < 0 ? 0 : ( temp > pager.totalPages ? pager.totalPages - 1 : temp ) );
+ size = pager.size = parseInt( s2h.decodeHash( c, wo, 'size' ), 10 );
+ }
+ if ( ts.hasWidget( table, 'filter' ) ) {
+ filter = s2h.decodeHash( c, wo, 'filter' );
+ if ( filter ) {
+ filter = filter.split( wo.sort2Hash_separator );
+ c.$table.one( 'tablesorter-ready', function() {
+ setTimeout(function(){
+ c.$table.one( 'filterEnd', function() {
+ $(this).triggerHandler( 'pageAndSize', [ page, size ] );
+ });
+ // use the newest filter comparison code
+ if ( ts.filter.equalFilters ) {
+ temp = ts.filter.equalFilters( c, c.lastSearch, filter );
+ } else {
+ // quick n' dirty comparison... it will miss filter changes of
+ // the same value in a different column, see #1363
+ temp = ( c.lastSearch || [] ).join( '' ) !== ( filter || [] ).join( '' );
+ }
+ // don't set filters if they haven't changed
+ if ( !temp ) {
+ $.tablesorter.setFilters( table, filter, true );
+ }
+ }, 100 );
+ });
+ }
+ }
+ if ( !filter ) {
+ c.$table.one( 'tablesorter-ready', function() {
+ c.$table.triggerHandler( 'pageAndSize', [ page, size ] );
+ });
+ }
+
+ c.$table.on( 'sortEnd.sort2hash filterEnd.sort2hash pagerComplete.sort2Hash', function() {
+ if ( this.hasInitialized ) {
+ s2h.setHash( this.config, this.config.widgetOptions );
+ }
+ });
+ },
+
+ getTableId : function( c, wo ) {
+ // option > table id > table index on page
+ return wo.sort2Hash_tableId ||
+ c.table.id ||
+ 'table' + $( 'table' ).index( c.$table );
+ },
+ regexEscape : function( v ) {
+ return v.replace( /([\.\^\$\*\+\-\?\(\)\[\]\{\}\\\|])/g, '\\$1');
+ },
+ // convert 'first%20name,asc,last%20name,desc' into [[0,0], [1,1]]
+ convertString2Sort : function( c, wo, sortHash ) {
+ var regex, column, direction, temp, index, $cell,
+ arry = sortHash.split( wo.sort2Hash_separator ),
+ indx = 0,
+ len = arry.length,
+ sort = [];
+ while ( indx < len ) {
+ // column index or text
+ column = arry[ indx++ ];
+ temp = parseInt( column, 10 );
+ // ignore wo.sort2Hash_useHeaderText setting &
+ // just see if column contains a number
+ if ( isNaN( temp ) || temp > c.columns ) {
+ regex = new RegExp( '(' + s2h.regexEscape( column ) + ')', 'i' );
+ for ( index = 0; index < c.columns; index++ ) {
+ $cell = c.$headerIndexed[ index ];
+ if ( regex.test( $cell.attr( wo.sort2Hash_headerTextAttr ) ) ) {
+ column = index;
+ index = c.columns;
+ }
+ }
+ }
+ direction = arry[ indx++ ];
+ // ignore unpaired values
+ if ( typeof column !== 'undefined' && typeof direction !== 'undefined' ) {
+ // convert text to 0, 1
+ if ( isNaN( direction ) ) {
+ // default to ascending sort
+ direction = direction.indexOf( wo.sort2Hash_directionText[ 1 ] ) > -1 ? 1 : 0;
+ }
+ sort.push( [ column, direction ] );
+ }
+ }
+ if ( sort.length ) {
+ c.sortList = sort;
+ }
+ },
+
+ // convert [[0,0],[1,1]] to 'first%20name,asc,last%20name,desc'
+ convertSort2String : function( c, wo ) {
+ var index, txt, column, direction,
+ sort = [],
+ arry = c.sortList || [],
+ len = arry.length;
+ for ( index = 0; index < len; index++ ) {
+ column = arry[ index ][ 0 ];
+ txt = $.trim( c.$headerIndexed[ column ].attr( wo.sort2Hash_headerTextAttr ) );
+ sort.push( txt !== '' ? encodeURIComponent( txt ) : column );
+ direction = wo.sort2Hash_directionText[ arry[ index ][ 1 ] ];
+ sort.push( direction );
+ }
+ // join with separator
+ return sort.join( wo.sort2Hash_separator );
+ },
+
+ convertFilter2String : function( c, wo ) {
+ var index, txt, column, direction,
+ sort = [],
+ arry = c.sortList || [],
+ len = arry.length;
+ for ( index = 0; index < len; index++ ) {
+ column = arry[ index ][ 0 ];
+ txt = $.trim( c.$headerIndexed[ column ].attr( wo.sort2Hash_headerTextAttr ) );
+ column = typeof txt !== 'undefined' ? encodeURIComponent( txt ) : column;
+ sort.push( column );
+ direction = wo.sort2Hash_directionText[ arry[ index ][ 1 ] ];
+ sort.push( direction );
+ }
+ // join with separator
+ return sort.join( wo.sort2Hash_separator );
+ },
+
+ // Get URL Parameters (getParam)
+ // modified from http://www.netlobo.com/url_query_string_javascript.html
+ getParam : function ( name, hash, returnRegex ) {
+ if ( !hash ) { hash = window.location.hash; }
+ var regex = new RegExp( '[\\?&]' + s2h.regexEscape( name ) + '=([^&#]*)' ),
+ match = regex.exec( hash );
+ if ( returnRegex ) { return regex; }
+ return match === null ? '' : decodeURIComponent( match[ 1 ] );
+ },
+
+ // remove parameter from hash
+ removeParam : function( name, hash ) {
+ if ( !hash ) { hash = window.location.hash; }
+ var index,
+ regex = s2h.getParam( name, hash, true ),
+ result = [],
+ parts = hash.split( '&' ),
+ len = parts.length;
+ for ( index = 0; index < len; index++ ) {
+ // regex expects a leading '&'...
+ if ( !regex.test( '&' + parts[ index ] ) ) {
+ result.push( parts[ index ] );
+ }
+ }
+ return result.length ? result.join( '&' ) : '';
+ },
+
+ encodeHash : function( c, wo, component, value, rawValue ) {
+ var result = false,
+ tableId = s2h.getTableId( c, wo );
+ if ( typeof wo.sort2Hash_encodeHash === 'function' ) {
+ result = wo.sort2Hash_encodeHash( c, tableId, component, value, rawValue || value );
+ }
+ if ( result === false ) {
+ result = '&' + component + '[' + tableId + ']=' + value;
+ }
+ return result;
+ },
+
+ decodeHash : function( c, wo, component ) {
+ var result = false,
+ tableId = s2h.getTableId( c, wo );
+ if ( typeof wo.sort2Hash_decodeHash === 'function' ) {
+ // return a string
+ result = wo.sort2Hash_decodeHash( c, tableId, component );
+ }
+ if ( result === false ) {
+ result = s2h.getParam( component + '[' + tableId + ']' );
+ }
+ return result || '';
+ },
+
+ cleanHash : function( c, wo, component, hash ) {
+ var result = false,
+ tableId = s2h.getTableId( c, wo );
+ if ( typeof wo.sort2Hash_cleanHash === 'function' ) {
+ // can return an array or string
+ result = wo.sort2Hash_cleanHash( c, tableId, component, hash );
+ }
+ if ( result === false ) {
+ // parameter example: 'sort[table0]=0,0'
+ result = s2h.removeParam( component + '[' + tableId + ']', hash );
+ }
+ return result || '';
+ },
+
+ setHash : function( c, wo ) {
+ var str = '',
+ hash = window.location.hash,
+ hasPager = ts.hasWidget( c.table, 'pager' ),
+ hasFilter = ts.hasWidget( c.table, 'filter' ),
+ sortList = s2h.convertSort2String( c, wo ),
+ filters = ( hasFilter && c.lastSearch.join('') !== '' ? c.lastSearch : [] ),
+ filtersStr = encodeURIComponent( filters.join( c.widgetOptions.sort2Hash_separator ) ),
+ components = {
+ 'sort' : sortList ? s2h.encodeHash( c, wo, 'sort', sortList, c.sortList ) : '',
+ 'page' : hasPager ? s2h.encodeHash( c, wo, 'page', c.pager.page + 1 ) : '',
+ 'size' : hasPager ? s2h.encodeHash( c, wo, 'size', c.pager.size ) : '',
+ 'filter' : filtersStr ? s2h.encodeHash( c, wo, 'filter', filtersStr, filters ) : ''
+ };
+ // remove old hash
+ $.each( components, function( component, value ) {
+ hash = s2h.cleanHash( c, wo, component, hash );
+ str += value;
+ });
+
+ // Combine new hash with any existing hashes
+ var hashChar = c.widgetOptions.sort2Hash_hash;
+ var newHash = ( ( window.location.hash || '' ).replace( hashChar, '' ).length ? hash : wo.sort2Hash_hash ) + str;
+ var baseUrl = window.location.href.split(hashChar)[0];
+ // Ensure that there is a leading hash character
+ var firstChar = newHash[0];
+ if (firstChar != hashChar) {
+ newHash = hashChar + newHash;
+ }
+
+ // Update URL in browser
+ window.location.replace(baseUrl + newHash);
+ }
+ };
+
+ ts.addWidget({
+ id: 'sort2Hash',
+ priority: 60, // after saveSort & pager
+ options: {
+ sort2Hash_hash : '#', // hash prefix
+ sort2Hash_separator : '-', // don't '#' or '=' here
+ sort2Hash_headerTextAttr : 'data-header', // data attribute containing alternate header text
+ sort2Hash_directionText : [ 0, 1 ], // [ 'asc', 'desc' ],
+ sort2Hash_overrideSaveSort : false, // if true, override saveSort widget if saved sort available
+
+ // this option > table ID > table index on page
+ sort2Hash_tableId : null,
+ // custom hash processing functions
+ sort2Hash_encodeHash : null,
+ sort2Hash_decodeHash : null,
+ sort2Hash_cleanHash : null
+ },
+ init: function(table, thisWidget, c, wo) {
+ s2h.init( c, wo );
+ },
+ remove: function(table, c) {
+ c.$table.off( '.sort2hash' );
+ }
+ });
+
+})(jQuery);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-alerts.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-alerts.js
new file mode 100755
index 0000000..77f35c7
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-alerts.js
@@ -0,0 +1,289 @@
+/**
+ * ufAlerts jQuery plugin. Fetches and renders alerts from the UF alert stream.
+ *
+ * Based on template from https://github.com/jquery-boilerplate/jquery-boilerplate
+ *
+ * === USAGE ===
+
+ * ufAlerts can be initialized on any container element as follows:
+ *
+ * $('#myDiv').ufAlerts(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {string} url The absolute URL from which to fetch flash alerts.
+ * @param {bool} scrollToTop Whether to automatically scroll back to the top of the page after rendering alerts.
+ * @param {string} alertMessageClass The CSS class(es) to be applied to each alert message.
+ * @param {string} alertTemplateId The CSS id(es) for the Handlebar alert template.
+ * @param {bool} agglomerate Set to true to render all alerts together, applying styling for the highest-priority alert being rendered.
+ *
+ * == EVENTS ==
+ *
+ * uf-form triggers the following events:
+ *
+ * `fetch.ufAlerts`: triggered when the alerts have been successfully fetched from the server.
+ * `render.ufAlerts`: triggered when all alerts have been rendered and the call to render() has completed.
+ *
+ * == METHODS ==
+ *
+ * `fetch()`: Asynchronously gets alerts from the server.
+ * `push(options)`: Adds a alert of a specified type (danger, warning, info, success) to the internal collection of alerts.
+ * `clear()`: Removes all messages from the internal collection.
+ * `render()`: Renders the collection of alerts to the container, awaiting results of `fetch()` if required.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ */
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ // Define plugin name and defaults.
+ var pluginName = 'ufAlerts',
+ defaults = {
+ url: site.uri.public + '/alerts',
+ scrollToTop: true,
+ scrollWhenVisible: false,
+ agglomerate: false,
+ alertMessageClass: 'uf-alert-message',
+ alertTemplateId: 'uf-alert-template',
+ DEBUG: false
+ };
+
+ // Constructor
+ function Plugin(element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+ this.settings = $.extend(true, {}, defaults, options);
+ this._defaults = defaults;
+ this._name = pluginName;
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ // Plugin variables
+ this.alerts = [];
+ this._newAlertsPromise = $.Deferred().resolve();
+ this._alertTemplateHtml = $('#' + this.settings.alertTemplateId).html();
+ this._alertTypePriorities = {
+ danger: 3,
+ warning: 2,
+ success: 1,
+ info: 0
+ };
+ this._alertTypeIcon = {
+ danger: 'fa-ban',
+ warning: 'fa-warning',
+ success: 'fa-check',
+ info: 'fa-info'
+ };
+
+ return this;
+ }
+
+ // Functions
+ $.extend(Plugin.prototype, {
+ /**
+ * Clear all alerts from the current uf-alerts collection.
+ */
+ clear: function () {
+ // See http://stackoverflow.com/a/1232046/2970321
+ this.alerts.length = 0;
+
+ if (this.settings.agglomerate) {
+ this.element.toggleClass('alert', false)
+ .toggleClass('alert-info', false)
+ .toggleClass('alert-success', false)
+ .toggleClass('alert-warning', false)
+ .toggleClass('alert-danger', false);
+ }
+
+ // Clear any alert HTML
+ this.$element.empty();
+
+ return this.$element;
+ },
+ /**
+ * Fetches alerts from the alert stream
+ */
+ fetch: function () {
+ // Set a promise, so that any chained calls after fetch can wait until the messages have been retrieved
+ this._newAlertsPromise = $.ajax({
+ url: this.settings.url,
+ cache: false
+ }).then(
+ // Success
+ this._fetchSuccess.bind(this),
+ // Failure
+ this._fetchFailure.bind(this)
+ );
+
+ return this.$element;
+ },
+ /**
+ * Success callback for fetch
+ */
+ _fetchSuccess: function (alerts) {
+ if (alerts != null) this.alerts = $.merge(this.alerts, alerts);
+ this.$element.trigger('fetch.' + this._name);
+ },
+ /**
+ * Failure callback for fetch
+ */
+ _fetchFailure: function (response) {
+ this.$element.trigger('error.' + this._name);
+ if ((typeof site !== 'undefined') && site.debug.ajax && response.responseText) {
+ document.write(response.responseText);
+ document.close();
+ } else {
+ if (this.settings.DEBUG) {
+ console.warn('Error (' + response.status + '): ' + response.responseText);
+ }
+ }
+ },
+ /**
+ * Push a given message to the current uf-alerts collection.
+ */
+ push: function (options) {
+ this.alerts.push({
+ type: options[0],
+ message: options[1]
+ });
+
+ return this.$element;
+ },
+ /**
+ * Renders the alerts.
+ */
+ render: function () {
+ // Wait for promise completion, only if promise is unresolved.
+ if (this._newAlertsPromise.state() == 'resolved' || this._newAlertsPromise.state() == 'rejected') {
+ this._render();
+ }
+ else {
+ $.when(this._newAlertsPromise).then(this._render.bind(this));
+ }
+
+ return this.$element;
+ },
+ /*
+ * Internal private method that physically handles rendering operation.
+ */
+ _render: function () {
+ // Holds generated HTML
+ var alertHtml = '';
+ // Only compile alerts if there are alerts to display
+ if (this.alerts.length > 0) {
+ // Prepare template
+ var alertTemplate = Handlebars.compile(this._alertTemplateHtml, {noEscape: true});
+ var i;
+ // If agglomeration is enabled, set the container to the highest priority alert type
+ if (this.settings.agglomerate) {
+ // Holds generated agglomerated alerts
+ var alertMessage = '<ul>';
+
+ // Determine overall alert priority
+ var alertContainerType = 'info';
+ for (i = 0; i < this.alerts.length; i++) {
+ if (this._alertTypePriorities[this.alerts[i].type] > this._alertTypePriorities[alertContainerType]) {
+ alertContainerType = this.alerts[i].type;
+ }
+ }
+
+ // Compile each alert
+ var aggTemplate = Handlebars.compile('<li class=' + this.settings.alertMessageClass + '>{{ message }}</li>');
+ for (i = 0; i < this.alerts.length; i++) {
+ alertMessage += aggTemplate(this.alerts[i]);
+ }
+
+ alertMessage += '</ul>';
+
+ // Generate complete alert HTML
+ alertHtml = alertTemplate({
+ type: alertContainerType,
+ message: alertMessage,
+ icon: this._alertTypeIcon[alertContainerType]
+ });
+ }
+ else {
+ // Compile each alert.
+ for (i = 0; i < this.alerts.length; i++) {
+ var alert = this.alerts[i];
+
+ // Inject icon
+ alert.icon = this._alertTypeIcon[alert.type];
+
+ // Compile alert
+ alertHtml += alertTemplate(alert);
+ }
+ }
+ }
+ // Show alerts
+ this.$element.html(alertHtml);
+
+ // Scroll to top of alert location is new alerts output, and auto scrolling is enabled
+ if (this.settings.scrollToTop && alertHtml !== '') {
+ // Don't scroll if already visible, unless scrollWhenVisible is true
+ if (!this._alertsVisible() || this.settings.scrollWhenVisible) {
+ $('html, body').animate({scrollTop: this.$element.offset().top}, 'fast');
+ }
+ }
+
+ // Trigger render events
+ this.$element.trigger('render.' + this._name);
+ },
+ /**
+ * Returns true if alerts container is completely within the viewport.
+ */
+ _alertsVisible: function () {
+ var rect = this.element.getBoundingClientRect();
+ return (
+ rect.top >= 0 &&
+ rect.left >= 0 &&
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth)
+ );
+ },
+ /**
+ * Completely destroy the ufAlerts plugin on the element.
+ */
+ destroy: function () {
+ // Unbind any bound events
+ this.$element.off('.' + this._name);
+
+ // Remove plugin from element
+ this.$element.removeData(this._name);
+
+ return this.$element;
+ }
+ });
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function (methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ }
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' is private!');
+ }
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' does not exist.');
+ }
+ };
+})(jQuery, window, document); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js
new file mode 100755
index 0000000..ed3ecea
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js
@@ -0,0 +1,13 @@
+/**
+ * This plugin reloads the captcha in the specified element.
+ */
+(function( $ ) {
+ $.fn.captcha = function() {
+ // Set the new captcha image
+ $(this).attr('src', site.uri.public + "/account/captcha?" + new Date().getTime());
+
+ // Clear whatever the user entered for the captcha value last time
+ var target = $(this).data('target');
+ $(target).val("");
+ };
+}( jQuery ));
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js
new file mode 100755
index 0000000..a2afc6e
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js
@@ -0,0 +1,345 @@
+/**
+ * uf-collection plugin. Widget for attaching/detaching related items to a single parent item (e.g. roles for a user, etc).
+ *
+ * === USAGE ===
+ *
+ * uf-collection can be initialized on a div element as follows:
+ *
+ * $("#myCollection").ufCollection(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {bool} useDropdown Set to true if rows should be added using a select2 dropdown, false for free text inputs (see https://ux.stackexchange.com/a/15637/53990).
+ * @param {Object} dropdown The options to pass to the select2 plugin for the add item dropdown.
+ * @param {string} dropdown.ajax.url The url from which to fetch options (as JSON data) in the dropdown selector menu.
+ * @param {bool} selectOnClose Set to true if you want the currently highlighted dropdown item to be automatically added when the dropdown is closed for any reason.
+ * @param {string} dropdown.theme The select2 theme to use for the dropdown menu. Defaults to "default".
+ * @param {string} dropdown.placeholder Placeholder text to use in the dropdown menu before a selection is made. Defaults to "Item".
+ * @param {string} dropdown.width Width of the dropdown selector, when used. Defaults to "100%".
+ * @param {callback} transformDropdownSelection Custom transformation on objects from the dropdown before passing them to render in the collection table.
+ * @param {Object} dropdownControl a jQuery selector specifying the dropdown select2 control. Defaults to looking for a .js-select-new element inside the parent object.
+ * @param {string} dropdownTemplate A Handlebars template to use for rendering the dropdown items.
+ * @param {Object} rowContainer a jQuery selector specifying the place where rows should be added. Defaults to looking for the first tbody element inside the parent object.
+ * @param {string} rowTemplate A Handlebars template to use for rendering each row in the table.
+ *
+ * == EVENTS ==
+ *
+ * ufCollection triggers the following events:
+ *
+ * `rowAdd.ufCollection`: triggered when a new row is added to the collection.
+ * `rowDelete.ufCollection`: triggered when a row is removed from the collection.
+ * `rowTouch.ufCollection`: triggered when any inputs in a row are brought into focus.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ */
+;(function($, window, document, undefined) {
+ "use strict";
+
+ // Define plugin name and defaults.
+ var pluginName = "ufCollection",
+ defaults = {
+ useDropdown: true,
+ dropdown: {
+ ajax : {
+ url : "",
+ dataType : "json",
+ delay : 250,
+ data : function (params) {
+ return {
+ filters: {
+ info : params.term
+ }
+ };
+ },
+ processResults : function (data, params) {
+ // Process the data into dropdown options
+ var suggestions = [];
+ if (data && data.rows) {
+ suggestions = data.rows;
+ }
+ return {
+ results: suggestions
+ };
+ },
+ cache : true
+ },
+ placeholder : "Item",
+ selectOnClose : false, // Make a selection when they click out of the box/press the next button
+ theme : "default",
+ width : "100%",
+ },
+ transformDropdownSelection: function (item) {
+ return item;
+ },
+ dropdownControl : null,
+ dropdownTemplate: "",
+ rowContainer : null,
+ rowTemplate : "",
+ DEBUG : false
+ };
+
+ // Constructor
+ function Plugin (element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+ var lateDefaults = {
+ dropdownControl: this.$element.find('.js-select-new'),
+ rowContainer: this.$element.find('tbody').first()
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = defaults;
+ this._name = pluginName;
+
+ // Detect changes to element attributes
+ this.$element.attrchange({ callback: function (event) { this.element = event.target; }.bind(this) });
+
+ // Internal counter for adding rows to the collection. Gets updated every time `_createRow` is called.
+ this._rownum = 0;
+
+ // Keep track of last added row
+ this._lastRow = null;
+
+ // Handlebars template method
+ this._dropdownTemplateCompiled = Handlebars.compile(this.settings.dropdownTemplate);
+
+ this._rowTemplateCompiled = Handlebars.compile(this.settings.rowTemplate);
+
+ // Add container class
+ this.$element.toggleClass("uf-collection", true);
+
+ // Add bindings for any rows already present in the DOM
+ $.each(this.settings.rowContainer.find('.uf-collection-row'), $.proxy(function(idx, row) {
+ this._onNewRow($(row));
+ this._lastRow = row;
+ }, this));
+
+ // If we're using dropdown options, create the select2 and add bindings to add a new row when an option is selected
+ if (this.settings.useDropdown) {
+ this._initDropdownField(this.settings.dropdownControl);
+
+ this.settings.dropdownControl.on("select2:select", $.proxy(function(e) {
+ var item = $(e.target).select2("data")[0];
+ // Apply any transformations before rendering as a row
+ var transformed = this.settings.transformDropdownSelection(item);
+ this._createRow(transformed);
+ }, this));
+ }
+ else {
+ // Otherwise, add a new virgin row
+ this._createVirginRow();
+ }
+
+ return this;
+ }
+
+ // Functions
+ $.extend(Plugin.prototype, {
+ /**
+ * Add a new row to the collection, optionally passing in prepopulated template data.
+ */
+ addRow: function(options) {
+ // Grab params, if any
+ var params = {};
+ if (typeof options !== 'undefined') {
+ params = options[0];
+ }
+
+ this._createRow(params);
+
+ return this.$element;
+ },
+ /**
+ * Add a new 'virgin' row to the collection, optionally passing in prepopulated template data.
+ * Virgin rows are rows that have not yet been brought into focus by the user.
+ * When a virgin row is brought into focus, it loses its virgin status and a new virgin row is created.
+ */
+ addVirginRow: function(options) {
+ // Grab params, if any
+ var params = {};
+ if (typeof options !== 'undefined') {
+ params = options[0];
+ }
+
+ this._createVirginRow(params);
+
+ return this.$element;
+ },
+ /**
+ * Delete a target row.
+ */
+ deleteRow: function(row) {
+ this._deleteRow(row);
+
+ return this.$element;
+ },
+ /**
+ * Get the dropdown control for the collection, if one exists.
+ */
+ getDropdown: function() {
+ return this.settings.dropdownControl;
+ },
+ /**
+ * Get the last row added in the collection.
+ */
+ getLastRow: function () {
+ return this._lastRow;
+ },
+ /**
+ * Touch a target row.
+ */
+ touchRow: function(row) {
+ this._touchRow(row);
+
+ return this.$element;
+ },
+ /**
+ * Create a new row and attach the handler for deletion to the js-delete-row button
+ */
+ _createRow: function(params) {
+ params = $.extend(true,
+ {
+ id: "",
+ rownum: this._rownum
+ }, params);
+
+ // Generate the row and append to table
+ var newRowTemplate = this._rowTemplateCompiled(params),
+ newRow;
+
+ // Add the new row before any virgin rows in the table.
+ var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length;
+ if (virginRows) {
+ newRow = $(newRowTemplate).insertBefore(this.settings.rowContainer.find('.uf-collection-row-virgin:first'));
+ } else {
+ newRow = $(newRowTemplate).appendTo(this.settings.rowContainer);
+ }
+
+ this._lastRow = newRow;
+
+ // Add bindings and fire event
+ this._onNewRow(newRow);
+
+ return newRow;
+ },
+ /**
+ * Create a new, blank row with the 'virgin' status.
+ */
+ _createVirginRow: function(params) {
+ // Generate the row and append to table
+ var newRow = this._createRow(params);
+
+ // Set the row's 'virgin' status
+ newRow.addClass('uf-collection-row-virgin');
+ newRow.find('.js-delete-row').hide();
+
+ return newRow;
+ },
+ /**
+ * Delete a row from the collection.
+ */
+ _deleteRow: function(row) {
+ row.remove();
+ this.$element.trigger('rowDelete.ufCollection');
+ },
+ /**
+ * Add delete and touch bindings for a row, increment the internal row counter, and fire the rowAdd event
+ */
+ _onNewRow: function(row) {
+ // Trigger to delete row
+ row.find('.js-delete-row').on('click', $.proxy(function(e) {
+ this._deleteRow($(e.target).closest('.uf-collection-row'));
+ }, this));
+
+ // Once the new row comes into focus for the first time, it has been "touched"
+ row.find(':input').on('focus', $.proxy(function() {
+ this._touchRow(row);
+ }, this));
+
+ this._rownum += 1;
+
+ // Fire event when row has been constructed
+ this.$element.trigger('rowAdd.ufCollection', row);
+ },
+ /**
+ * Remove a row's virgin status, show the delete button, and add a new virgin row if needed
+ */
+ _touchRow: function(row) {
+ row.removeClass('uf-collection-row-virgin');
+ row.find('.js-delete-row').show();
+
+ this.$element.trigger('rowTouch.ufCollection', row);
+
+ // If we're not using dropdowns, assert that the table doesn't already have a virgin row. If not, create a new virgin row.
+ if (!this.settings.useDropdown) {
+ var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length;
+ if (!virginRows) {
+ this._createVirginRow();
+ }
+ }
+ },
+ /**
+ * Initialize the select2 dropdown for this collection on a specified control element.
+ */
+ _initDropdownField: function(field) {
+ var options = this.settings.dropdown;
+
+ if (!("templateResult" in options)) {
+ options.templateResult = $.proxy(function(item) {
+ // Display loading text if the item is marked as "loading"
+ if (item.loading) return item.text;
+
+ // Must wrap this in a jQuery selector to render as HTML
+ return $(this._dropdownTemplateCompiled(item));
+ }, this);
+ }
+ // Legacy options (<= v4.0.9)
+ if ("dataUrl" in this.settings) {
+ options.ajax.url = this.settings.dataUrl;
+ }
+ if ("ajaxDelay" in this.settings) {
+ options.ajax.delay = this.settings.ajaxDelay;
+ }
+ if ("dropdownTheme" in this.settings) {
+ options.theme = this.settings.dropdownTheme;
+ }
+ if ("placeholder" in this.settings) {
+ options.placeholder = this.settings.placeholder;
+ }
+ if ("selectOnClose" in this.settings) {
+ options.selectOnClose = this.settings.selectOnClose;
+ }
+ if ("width" in this.settings) {
+ options.width = this.settings.width;
+ }
+
+ return field.select2(options);
+ }
+ });
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function(methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ }
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions]( Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn( 'Method ' + methodOrOptions + ' is private!' );
+ }
+ }
+ else {
+ console.warn( 'Method ' + methodOrOptions + ' does not exist.' );
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js
new file mode 100755
index 0000000..a47f6b8
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js
@@ -0,0 +1,50 @@
+/**
+ * Copies text or control fields to clipboard. Wrap a .js-copy-target and .js-copy-trigger inside a common .js-copy-container.
+ */
+
+if (typeof $.uf === 'undefined') {
+ $.uf = {};
+}
+
+$.uf.copy = function (button) {
+ var _this = this;
+
+ var clipboard = new Clipboard(button, {
+ text: function(trigger) {
+ var el = $(trigger).closest('.js-copy-container').find('.js-copy-target');
+ if (el.is(':input')) {
+ return el.val();
+ } else {
+ return el.html();
+ }
+ }
+ });
+
+ clipboard.on('success', function(e) {
+ setTooltip(e.trigger, 'Copied!');
+ hideTooltip(e.trigger);
+ });
+
+ clipboard.on('error', function(e) {
+ setTooltip(e.trigger, 'Failed!');
+ hideTooltip(e.trigger);
+ });
+
+ function setTooltip(btn, message) {
+ $(btn)
+ .attr('data-original-title', message)
+ .tooltip('show');
+ }
+
+ function hideTooltip(btn) {
+ setTimeout(function() {
+ $(btn).tooltip('hide')
+ .attr('data-original-title', "");
+ }, 1000);
+ }
+
+ // Tooltip
+ $(button).tooltip({
+ trigger: 'click'
+ });
+};
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js
new file mode 100755
index 0000000..15952ab
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js
@@ -0,0 +1,297 @@
+/**
+ * uf-form plugin. Handles validation and submission for basic UserFrosting forms.
+ *
+ * This plugin uses the jQueryvalidation plugin (https://jqueryvalidation.org/) to perform instant, client-side form validation.
+ * UserFrosting forms must be wrapped in a <form> element, and contain a <button type=submit> element for submission.
+ *
+ * Forms are then set to submit via AJAX when the submit button is clicked.
+ *
+ * === USAGE ===
+ *
+ * uf-form can be initialized on a form element as follows:
+ *
+ * $('#myForm').ufForm(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {JSON} validators An object containing two keys, "rules" and "messages", which specify the jQueryvalidation rules to use.
+ * @param {Object} msgTarget a jQuery selector specifying the element where any error messages should be inserted. Defaults to looking for a container with class .js-form-alerts inside this form.
+ * @param {Callback} beforeSubmitCallback a callback function to execute immediately after form validation, before the form is submitted.
+ * @param {bool} binaryCheckboxes specify whether to submit checkboxes as binary values 0 and 1, instead of omitting unchecked checkboxes from submission.
+ *
+ * == EVENTS ==
+ *
+ * ufForm triggers the following events:
+ *
+ * `submitSuccess.ufForm`: triggered when the form is successfully submitted, after re-enabling the submit button.
+ * `submitError.ufForm`: triggered when the form submission (not validation) fails, after re-enabling the submit button
+ * and displaying any error messages.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ *
+ * @todo Implement proper fallback for when `set` function isn't supported by FormData.
+ */
+;(function($, window, document, undefined) {
+ 'use strict';
+
+ // Define plugin name and defaults.
+ var pluginName = 'ufForm',
+ defaults = {
+ validators: {
+ 'rules' : {},
+ 'messages': {}
+ },
+ submittingText : "<i class='fa fa-spinner fa-spin'></i>",
+ beforeSubmitCallback: null,
+ binaryCheckboxes : true, // submit checked/unchecked checkboxes as 0/1 values
+ keyupDelay : 0,
+ DEBUG: false
+ };
+
+ // Constructor
+ function Plugin (element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+ var lateDefaults = {
+ encType : (typeof this.$element.attr('enctype') !== 'undefined') ? this.$element.attr('enctype') : '',
+ msgTarget: this.$element.find('.js-form-alerts:first')
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = $.extend(true, {}, defaults, lateDefaults);
+ this._name = pluginName;
+ this._debugAjax = (typeof site !== 'undefined') && site.debug.ajax;
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ // Setup validator
+ this.validator = this.$element.validate({
+ rules : this.settings.validators.rules,
+ messages : this.settings.validators.messages,
+ submitHandler: $.proxy(this._submitHandler, this),
+ onkeyup : $.proxy(this._onKeyUp, this)
+ });
+
+ return this;
+ }
+
+ // Functions
+
+ /**
+ * Handles the form submission after successful client-side validation.
+ */
+ Plugin.prototype._submitHandler = function(form, event) {
+ // Execute any "before submit" callback
+ if (this.settings.beforeSubmitCallback) {
+ this.settings.beforeSubmitCallback();
+ }
+
+ var $form = $(form);
+
+ // Set "loading" text for submit button, if it exists, and disable button
+ var submitButton = $form.find('button[type=submit]');
+ if (submitButton) {
+ var submitButtonText = submitButton.html();
+ submitButton.prop('disabled', true);
+ submitButton.html(this.settings.submittingText);
+ }
+
+ // Get basic request parameters.
+ var reqParams = {
+ converters: {
+ // Override jQuery's strict JSON parsing
+ 'text json': function(result) {
+ try {
+ // First try to use native browser parsing
+ if (typeof JSON === 'object' && typeof JSON.parse === 'function') {
+ return JSON.parse(result);
+ } else {
+ return $.parseJSON(result);
+ }
+ } catch (e) {
+ // statements to handle any exceptions
+ console.warn('Could not parse expected JSON response.');
+ return {};
+ }
+ }
+ },
+
+ dataType: this._debugAjax ? 'html' : 'json',
+ type: this.$element.attr('method'),
+ url: this.$element.attr('action')
+ };
+
+ // Get the form encoding type from the users HTML, and chose an encoding form.
+ if (this.settings.encType.toLowerCase() === 'multipart/form-data') {
+ reqParams.data = this._multipartData($form);
+ // add additional params to fix jquery errors
+ reqParams.cache = false;
+ reqParams.contentType = false;
+ reqParams.processData = false;
+ } else {
+ reqParams.data = this._urlencodeData($form);
+ }
+
+ // Submit the form via AJAX
+ $.ajax(reqParams).then(
+ // Submission successful
+ $.proxy(function(data, textStatus, jqXHR) {
+ // Restore button text and re-enable submit button
+ if (submitButton) {
+ submitButton.prop('disabled', false );
+ submitButton.html(submitButtonText);
+ }
+
+ this.$element.trigger('submitSuccess.ufForm', [data, textStatus, jqXHR]);
+ return jqXHR;
+ }, this),
+ // Submission failed
+ $.proxy(function(jqXHR, textStatus, errorThrown) {
+ // Restore button text and re-enable submit button
+ if (submitButton) {
+ submitButton.prop('disabled', false );
+ submitButton.html(submitButtonText);
+ }
+ // Error messages
+ if (this._debugAjax && jqXHR.responseText) {
+ this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]);
+ document.write(jqXHR.responseText);
+ document.close();
+ } else {
+ if (this.settings.DEBUG) {
+ console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText );
+ }
+ // Display errors on failure
+ // TODO: ufAlerts widget should have a 'destroy' method
+ if (!this.settings.msgTarget.data('ufAlerts')) {
+ this.settings.msgTarget.ufAlerts();
+ } else {
+ this.settings.msgTarget.ufAlerts('clear');
+ }
+
+ this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ this.settings.msgTarget.on('render.ufAlerts', $.proxy(function () {
+ this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]);
+ }, this));
+ }
+ return jqXHR;
+ }, this)
+ );
+ };
+
+ /**
+ * Helper function for encoding data as urlencoded
+ */
+ Plugin.prototype._urlencodeData = function(form) {
+ // Serialize and post to the backend script in ajax mode
+ var serializedData;
+ if (this.settings.binaryCheckboxes) {
+ serializedData = form.find(':input').not(':checkbox').serialize();
+ // Get unchecked checkbox values, set them to 0
+ form.find('input[type=checkbox]:enabled').each(function() {
+ if ($(this).is(':checked')) {
+ serializedData += '&' + encodeURIComponent(this.name) + '=1';
+ } else {
+ serializedData += '&' + encodeURIComponent(this.name) + '=0';
+ }
+ });
+ }
+ else {
+ serializedData = form.find(':input').serialize();
+ }
+
+ return serializedData;
+ };
+
+ /**
+ * Helper function for encoding data as multipart/form-data
+ */
+ Plugin.prototype._multipartData = function(form) {
+ // Use FormData to wrap form contents.
+ // https://developer.mozilla.org/en/docs/Web/API/FormData
+ var formData = new FormData(form[0]);
+ // Serialize and post to the backend script in ajax mode
+ if (this.settings.binaryCheckboxes) {
+ // Get unchecked checkbox values, set them to 0.
+ var checkboxes = form.find('input[type=checkbox]:enabled');
+ // Feature detection. Several browsers don't support `set`
+ if (typeof formData.set !== 'function') {
+ this.settings.msgTarget.ufAlerts('push', 'danger', "Your browser is missing a required feature. This form will still attempt to submit, but if it fails, you'll need to use Chrome for desktop or FireFox for desktop.");
+ } else {
+ checkboxes.each(function() {
+ if ($(this).is(':checked')) {
+ // this replaces checkbox value with 1 (as we're using binaryCheckboxes).
+ formData.set(this.name, 1);
+ // this explicitly adds unchecked boxes.
+ } else {
+ formData.set(this.name, 0);
+ }
+ });
+ }
+ }
+
+ return formData;
+ };
+
+ Plugin.prototype._onKeyUp = function(element, event) {
+ var validator = this.validator;
+ // See http://stackoverflow.com/questions/41363409/jquery-validate-add-delay-to-keyup-validation
+ setTimeout(function() {
+ // Avoid revalidate the field when pressing one of the following keys
+ // Shift => 16
+ // Ctrl => 17
+ // Alt => 18
+ // Caps lock => 20
+ // End => 35
+ // Home => 36
+ // Left arrow => 37
+ // Up arrow => 38
+ // Right arrow => 39
+ // Down arrow => 40
+ // Insert => 45
+ // Num lock => 144
+ // AltGr key => 225
+ var excludedKeys = [
+ 16, 17, 18, 20, 35, 36, 37,
+ 38, 39, 40, 45, 144, 225
+ ];
+
+ if ( event.which === 9 && validator.elementValue( element ) === '' || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
+ return;
+ } else if ( element.name in validator.submitted || element.name in validator.invalid ) {
+ validator.element( element );
+ }
+ }, this.settings.keyupDelay);
+ };
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function(methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ }
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions]( Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn( 'Method ' + methodOrOptions + ' is private!' );
+ }
+ }
+ else {
+ console.warn( 'Method ' + methodOrOptions + ' does not exist.' );
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js
new file mode 100755
index 0000000..2d447dd
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js
@@ -0,0 +1,26 @@
+/**
+ * Contains code that should be initialized in all UF pages.
+ */
+
+$(document).ready(function() {
+
+ // Override Bootstrap's tendency to steal focus from child elements in modals (such as select2).
+ // See https://github.com/select2/select2/issues/1436#issuecomment-21028474
+ $.fn.modal.Constructor.prototype.enforceFocus = function() {};
+
+ // Link all copy buttons
+ $.uf.copy('.js-copy-trigger');
+
+ // Display page alerts
+ if ($("#alerts-page").length) {
+ $("#alerts-page").ufAlerts();
+ $("#alerts-page").ufAlerts('fetch').ufAlerts('render');
+ }
+
+ // Set any JS variables that might be missing from config.js.twig
+ if (typeof site.uf_table === 'undefined') {
+ site['uf_table'] = {
+ use_loading_transition: true
+ };
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js
new file mode 100755
index 0000000..3969ad6
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js
@@ -0,0 +1,49 @@
+/**
+ * Set jQuery.validate settings for bootstrap integration
+ */
+jQuery.validator.setDefaults({
+ highlight: function(element) {
+ var formGroup = jQuery(element).closest('.form-group');
+ formGroup.addClass('has-error has-feedback');
+ formGroup.removeClass('has-success');
+ formGroup.find('.form-control-feedback').remove();
+ formGroup.find('.form-control-icon').show();
+
+ // Hide any help block text
+ formGroup.find('.help-block').hide();
+ },
+ unhighlight: function(element) {
+ var formGroup = jQuery(element).closest('.form-group');
+
+ formGroup.removeClass('has-error');
+
+ // Completely remove the error block, rather than just clearing the text (jqueryvalidation's default action)
+ formGroup.find('.error-block').remove();
+
+ // Re-show any help block text
+ formGroup.find('.help-block').show();
+
+ // Reshow any non-feedback icons if there is an error
+ if (formGroup.hasClass('has-error')) {
+ formGroup.find('.form-control-icon').show();
+ }
+ },
+ errorElement: 'p',
+ errorClass: 'error-block',
+ errorPlacement: function(error, element) {
+ if(element.parent('.input-group').length) {
+ error.insertAfter(element.parent());
+ } else {
+ error.insertAfter(element);
+ }
+ },
+ success: function(element) {
+ var formGroup = jQuery(element).closest('.form-group');
+ formGroup.addClass('has-success has-feedback');
+ formGroup.find('.form-control-feedback').remove();
+ // Hide any non-feedback icons
+ formGroup.find('.form-control-icon').hide();
+ // Add a new check mark
+ jQuery(element).after('<i class="fa fa-check form-control-feedback" aria-hidden="true"></i>');
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js
new file mode 100755
index 0000000..b84a59a
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js
@@ -0,0 +1,192 @@
+/**
+ * ufModal plugin. Handles modal windows that dynamically their fetch content from a specified URL.
+ *
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman https://alexanderweissman.com
+ */
+(function( $ )
+{
+ /**
+ * The plugin namespace, ie for $('.selector').ufModal(options)
+ *
+ * Also the id for storing the object state via $('.selector').data()
+ */
+ var PLUGIN_NS = 'ufModal';
+
+ var Plugin = function ( target, options )
+ {
+
+ this.$T = $(target);
+
+ /** #### OPTIONS #### */
+ this.options= $.extend(
+ true, // deep extend
+ {
+ sourceUrl : "",
+ ajaxParams: {},
+ msgTarget : null,
+ DEBUG: false
+ },
+ options
+ );
+
+ this.modal = null;
+
+ this._init( target );
+
+ return this;
+ };
+
+ /** #### INITIALISER #### */
+ Plugin.prototype._init = function ( target )
+ {
+ var base = this;
+ var $el = $(target);
+
+ // Delete any existing modals attached to the element (should have been deleted already anyway)
+ if ($el.find(".modal").length) {
+ $el.find(".modal").remove();
+ }
+
+ // Fetch and render the form
+ $.ajax({
+ type: "GET",
+ url: base.options.sourceUrl,
+ data: base.options.ajaxParams,
+ cache: false
+ })
+ .then(
+ // Fetch successful
+ function (data) {
+ // Append the form as a modal dialog to the body
+ base.modal = $(data);
+ $el.append(base.modal);
+
+ base.modal.modal('show');
+
+ // Bind modal to be deleted when closed
+ base.modal.on("hidden.bs.modal", function () {
+ base.destroy();
+ });
+
+ base.$T.trigger('renderSuccess.ufModal');
+ return data;
+ },
+ // Fetch failed
+ function (data) {
+ // Error messages
+ if ((typeof site !== "undefined") && site.debug.ajax && data.responseText) {
+ base.$T.trigger('renderError.ufModal');
+ document.write(data.responseText);
+ document.close();
+ } else {
+ if (base.options.DEBUG) {
+ console.log("Error (" + data.status + "): " + data.responseText );
+ }
+ // Display errors on failure
+ // TODO: ufAlerts widget should have a 'destroy' method
+ if (!base.options.msgTarget.data('ufAlerts')) {
+ base.options.msgTarget.ufAlerts();
+ } else {
+ base.options.msgTarget.ufAlerts('clear');
+ }
+
+ base.options.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ base.options.msgTarget.on("render.ufAlerts", function () {
+ base.$T.trigger('renderError.ufModal');
+ });
+ }
+
+ base.destroy();
+
+ return data;
+ }
+ );
+ };
+
+ Plugin.prototype.destroy = function () {
+ var base = this;
+ var $el = base.$T;
+
+ // Delete the plugin object
+ base.delete;
+
+ // Remove the modal from the selector
+ if (base.modal) {
+ base.modal.remove();
+ }
+
+ // Unbind any modal events bound to the selector
+ $el.off('.ufModal');
+
+ // Remove plugin name from selector's data-* attribute
+ $el.removeData(PLUGIN_NS);
+ };
+
+ Plugin.prototype.getModal = function () {
+ return this.modal;
+ };
+
+ /**
+ * EZ Logging/Warning (technically private but saving an '_' is worth it imo)
+ */
+ Plugin.prototype.DLOG = function ()
+ {
+ if (!this.DEBUG) return;
+ for (var i in arguments) {
+ console.log( PLUGIN_NS + ': ', arguments[i] );
+ }
+ }
+ Plugin.prototype.DWARN = function ()
+ {
+ this.DEBUG && console.warn( arguments );
+ }
+
+
+/*###################################################################################
+ * JQUERY HOOK
+ ###################################################################################*/
+
+ /**
+ * Generic jQuery plugin instantiation method call logic
+ *
+ * Method options are stored via jQuery's data() method in the relevant element(s)
+ * Notice, myActionMethod mustn't start with an underscore (_) as this is used to
+ * indicate private methods on the PLUGIN class.
+ */
+ $.fn[ PLUGIN_NS ] = function( methodOrOptions )
+ {
+ if (!$(this).length) {
+ return $(this);
+ }
+ var instance = $(this).data(PLUGIN_NS);
+
+ // CASE: action method (public method on PLUGIN class)
+ if ( instance
+ && methodOrOptions.indexOf('_') != 0
+ && instance[ methodOrOptions ]
+ && typeof( instance[ methodOrOptions ] ) == 'function' ) {
+
+ return instance[ methodOrOptions ]( Array.prototype.slice.call( arguments, 1 ) );
+
+
+ // CASE: argument is options object or empty = initialise
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
+
+ instance = new Plugin( $(this), methodOrOptions ); // ok to overwrite if this is a re-init
+ $(this).data( PLUGIN_NS, instance );
+ return $(this);
+
+ // CASE: method called before init
+ } else if ( !instance ) {
+ console.warn( 'Plugin must be initialised before using method: ' + methodOrOptions );
+
+ // CASE: invalid method
+ } else if ( methodOrOptions.indexOf('_') == 0 ) {
+ console.warn( 'Method ' + methodOrOptions + ' is private!' );
+ } else {
+ console.warn( 'Method ' + methodOrOptions + ' does not exist.' );
+ }
+ };
+})(jQuery); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js
new file mode 100755
index 0000000..77aa30a
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js
@@ -0,0 +1,704 @@
+/**
+ * uf-table plugin. Sets up a Tablesorter table with sorting, pagination, and search, and fetches data from a JSON API.
+ *
+ * This plugin depends on query-string.js, which is used to convert a query string into a JSON object.
+ *
+ * jQuery plugin template adapted from https://gist.github.com/Air-Craft/1300890
+ *
+ * === USAGE ===
+ *
+ * Create a container element, and within it place your table, paging controls, and Handlebars templates for rendering the cells.
+ *
+ * - Your table should have a unique id, and your paging controls should be wrapped in an element with the `.js-uf-table-pager` class.
+ * - Create a button with the `.js-uf-table-download` class, and it will be automatically bound to trigger an AJAX request for downloading the table (CSV, etc).
+ *
+ <div id="widget-users">
+ <table id="table-users" class="tablesorter table table-bordered table-hover table-striped" data-sortlist="[[0, 0]]">
+ <thead>
+ <tr>
+ <th class="sorter-metatext" data-column-name="name" data-column-template="#user-table-column-info">User <i class="fa fa-sort"></i></th>
+ <th class="sorter-metanum" data-column-name="last_activity" data-column-template="#user-table-column-last-activity">Last Activity <i class="fa fa-sort"></i></th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+ </table>
+
+ <script id="user-table-column-info" type="text/x-handlebars-template">
+ <td data-text="{{row.last_name}}">
+ <strong>
+ <a href="{{site.uri.public}}/users/u/{{row.user_name}}">{{row.first_name}} {{row.last_name}} ({{row.user_name}})</a>
+ </strong>
+ <div>
+ <i class="fa fa-envelope"></i> <a href="mailto:{{row.email}}">{{row.email}}</a>
+ </div>
+ </td>
+ </script>
+
+ <script id="user-table-column-last-activity" type="text/x-handlebars-template">
+ {{#if row.last_activity_at }}
+ <td data-num="{{dateFormat row.last_activity_at format='x'}}">
+ {{dateFormat row.last_activity_at format="dddd"}}<br>{{dateFormat row.last_activity_at format="MMM Do, YYYY h:mm a"}}
+ <br>
+ <i>{{row.last_activity.description}}</i>
+ </td>
+ {{ else }}
+ <td data-num="0">
+ <i>Unknown</i>
+ </td>
+ {{/if }}
+ </script>
+
+ <div class="pager pager-lg tablesorter-pager js-uf-table-pager">
+ <span class="pager-control first" title="First page"><i class="fa fa-angle-double-left"></i></span>
+ <span class="pager-control prev" title="Previous page"><i class="fa fa-angle-left"></i></span>
+ <span class="pagedisplay"></span>
+ <span class="pager-control next" title="Next page"><i class="fa fa-angle-right"></i></span>
+ <span class="pager-control last" title= "Last page"><i class="fa fa-angle-double-right"></i></span>
+ <br><br>
+ Jump to Page: <select class="gotoPage"></select> &bull; Show:
+ <select class="pagesize">
+ <option value="5">5</option>
+ <option value="10">10</option>
+ </select>
+ </div>
+
+ <button class="btn btn-sm btn-default js-uf-table-download">Download CSV</button>
+ </div>
+ *
+ * Initialize ufTable on your container object:
+ *
+ * $("#widget-users").ufTable(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {string} dataUrl The absolute URL from which to fetch table data.
+ * @param {mixed} addParams An object containing any additional key-value pairs that you want appended to the AJAX requests.
+ * @param {mixed} tablesorter An object containing tablesorter's configuration options (https://mottie.github.io/tablesorter/docs/#Configuration)
+ * @param {mixed} pager An object containing tablesorter's paging options (https://mottie.github.io/tablesorter/docs/#pager)
+ *
+ * == EVENTS ==
+ *
+ * ufTable triggers the following events:
+ *
+ * `pagerComplete.ufTable`: triggered when the tablesorter pager plugin has completed rendering of the table.
+ *
+ * == METHODS ==
+ *
+ * `getTableStateVars( table )`: fetches the current page size, page number, sort order, sort field, and column filters.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ */
+;(function($, window, document, undefined) {
+ 'use strict';
+
+ // Define plugin name and defaults.
+ var pluginName = 'ufTable',
+ defaults = {
+ DEBUG : false,
+ site : site, // global site variables
+ dataUrl : '',
+ msgTarget : $('#alerts-page'),
+ addParams : {},
+ filterAllField : '_all',
+ useLoadingTransition : true,
+ rowTemplate : null,
+ columnTemplates : {},
+ tablesorter : {
+ debug: false,
+ theme : 'bootstrap',
+ widthFixed: true,
+ // Set up pagination of data via an AJAX source
+ // See http://jsfiddle.net/Mottie/uwZc2/
+ // Also see https://mottie.github.io/tablesorter/docs/example-pager-ajax.html
+ widgets: ['saveSort', 'sort2Hash', 'filter', 'pager', 'columnSelector', 'reflow2'],
+ widgetOptions : {
+ columnSelector_layout : '<label><input type="checkbox"> <span>{name}</span></label>',
+ filter_cssFilter: 'form-control',
+ filter_saveFilters : true,
+ filter_serversideFiltering : true,
+ filter_selectSource : {
+ '.filter-select' : function() { return null; }
+ },
+
+ // apply disabled classname to the pager arrows when the rows at either extreme is visible
+ pager_updateArrows: true,
+
+ // starting page of the pager (zero based index)
+ pager_startPage: 0,
+
+ // Number of visible rows
+ pager_size: 10,
+
+ // Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js)
+ pager_savePages: true,
+
+ // if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty
+ // table row set to a height to compensate; default is false
+ pager_fixedHeight: false,
+
+ // remove rows from the table to speed up the sort of large tables.
+ // setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled.
+ pager_removeRows: false, // removing rows in larger tables speeds up the sort
+
+ // target the pager markup - see the HTML block below
+ pager_css: {
+ errorRow : 'uf-table-error-row', // error information row
+ disabled : 'disabled' // Note there is no period "." in front of this class name
+ },
+
+ // Must be initialized with a 'data' key
+ pager_ajaxObject: {
+ data: {},
+ dataType: 'json'
+ },
+
+ // hash prefix
+ sort2Hash_hash : '#',
+ // don't '#' or '=' here
+ sort2Hash_separator : '|',
+ // this option > table ID > table index on page
+ sort2Hash_tableId : null,
+ // if true, show header cell text instead of a zero-based column index
+ sort2Hash_headerTextAttr : 'data-column-name',
+ // direction text shown in the URL e.g. [ 'asc', 'desc' ]
+ sort2Hash_directionText : [ 'asc', 'desc' ], // default values
+ // if true, override saveSort widget sort, if used & stored sort is available
+ sort2Hash_overrideSaveSort : true, // default = false
+ }
+ }
+ };
+
+ // Constructor
+ function Plugin (element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+
+ var lateDefaults = {
+ download: {
+ button: this.$element.find('.js-uf-table-download'),
+ callback: $.proxy(this._onDownload, this)
+ },
+ info: {
+ container: this.$element.find('.js-uf-table-info'),
+ callback: $.proxy(this._renderInfoMessages, this)
+ },
+ overlay: {
+ container: this.$element.find('.js-uf-table-overlay')
+ },
+ tableElement: this.$element.find('.tablesorter'),
+ tablesorter: {
+ widgetOptions: {
+ columnSelector_container : this.$element.find('.js-uf-table-cs-options'),
+ filter_external : this.$element.find('.js-uf-table-search input'),
+
+ // Pager selectors
+ pager_selectors: {
+ container : this.$element.find('.js-uf-table-pager'),
+ first : '.first', // go to first page arrow
+ prev : '.prev', // previous page arrow
+ next : '.next', // next page arrow
+ last : '.last', // go to last page arrow
+ gotoPage : '.gotoPage', // go to page selector - select dropdown that sets the current page
+ pageDisplay : '.pagedisplay', // location of where the "output" is displayed
+ pageSize : '.pagesize' // page size selector - select dropdown that sets the "size" option
+ },
+ // We need to use $.proxy to properly bind the context for callbacks that will be called by Tablesorter
+
+ // Generate the URL for the AJAX request, with the relevant parameters
+ pager_customAjaxUrl: $.proxy(this._generateUrl, this),
+
+ // Callback to process the response from the AJAX request
+ pager_ajaxProcessing: $.proxy(this._processAjax, this),
+
+ // Callback to display errors
+ pager_ajaxError: $.proxy(this._pagerAjaxError, this),
+
+ sort2Hash_encodeHash: $.proxy(this._encodeHash, this),
+
+ sort2Hash_decodeHash: $.proxy(this._decodeHash, this),
+
+ sort2Hash_cleanHash: $.proxy(this._cleanHash, this)
+ }
+ }
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = defaults;
+ this._name = pluginName;
+ this._debugAjax = (typeof this.settings.site !== 'undefined') && this.settings.site.debug.ajax;
+
+ // Fall back to attributes from data-*, default values if not specified in options
+ var pagerContainer = this.settings.tablesorter.widgetOptions.pager_selectors.container;
+ var infoContainer = this.settings.info.container;
+ var dataAttributeDefaults = {
+ info: {
+ messageEmptyRows: infoContainer.data('message-empty-rows') ?
+ infoContainer.data('message-empty-rows') :
+ "Sorry, we've got nothing here."
+ },
+ tablesorter: {
+ widgetOptions: {
+ // possible variables: {size}, {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
+ // also {page:input} & {startRow:input} will add a modifiable input in place of the value
+ pager_output: pagerContainer.data('output-template') ?
+ pagerContainer.data('output-template') :
+ '{startRow} to {endRow} of {filteredRows} ({totalRows})' // default if not set on data-* attribute
+ }
+ }
+ };
+
+ this.settings = $.extend(true, {}, dataAttributeDefaults, this.settings);
+
+ // Check that tableElement exists
+ var tableElement = this.settings.tableElement;
+ if (!tableElement.length) {
+ if (window.console && console.error) {
+ console.error('ufTable could not be initialized: wrapper element does not exist, or does not contain a matched tableElement (see https://learn.userfrosting.com/client-side-code/components/tables )');
+ }
+ return;
+ }
+
+ // Copy over dataUrl to pager_ajaxUrl
+ this.settings.tablesorter.widgetOptions.pager_ajaxUrl = this.settings.dataUrl;
+
+ // Set up 'loading' overlays
+ if (this.settings.useLoadingTransition) {
+ var overlay = this.settings.overlay.container;
+ tableElement.bind('sortStart filterStart pageMoved', function() {
+ overlay.removeClass('hidden');
+ }).bind('pagerComplete updateComplete', function() {
+ overlay.addClass('hidden');
+ });
+ }
+
+ // Set up tablesorter and pager
+ this.ts = tableElement.tablesorter(this.settings.tablesorter);
+
+ // Map default column template selectors based on data-column-template attribute in each column header
+ var columns = this.ts[0].config.$headerIndexed;
+ var columnTemplates = {};
+ for (var col = 0; col < columns.length; col++) {
+ var columnName = columns[col].data('column-name');
+ if (!columnName && this.settings.DEBUG) {
+ console.error('Column number ' + col + ' is missing a data-column-name attribute.');
+ }
+ columnTemplates[columnName] = columns[col].data('column-template');
+ }
+
+ // Merge in any column template selectors that were set in the ctor options
+ columnTemplates = $.extend(true, columnTemplates, this.settings.columnTemplates);
+
+ // Locate and compile templates for any string-identified column renderers
+ // At the same time, build out a numerically indexed array of templates
+ this.columnTemplatesIndexed = [];
+ for (var col = 0; col < columns.length; col++) {
+ var columnName = columns[col].data('column-name');
+ if (!columnTemplates[columnName] && this.settings.DEBUG) {
+ console.error("No template found for column '" + columnName + "'.");
+ }
+ var columnTemplate = columnTemplates[columnName];
+ if (typeof columnTemplate === 'string') {
+ this.columnTemplatesIndexed.push(Handlebars.compile($(columnTemplate).html()));
+ } else {
+ this.columnTemplatesIndexed.push(columnTemplate);
+ }
+ }
+
+ // Locate and compile row template
+ this.rowTemplate = Handlebars.compile('<tr>');
+ // If rowTemplateSelector is set, then find the DOM element that it references, which contains the template
+ if (this.settings.rowTemplate) {
+ var rowTemplate = this.settings.rowTemplate;
+ if (typeof rowTemplate === 'string') {
+ this.rowTemplate = Handlebars.compile($(this.settings.rowTemplate).html());
+ } else {
+ this.rowTemplate = rowTemplate;
+ }
+ }
+
+ // Link CSV download button
+ this.settings.download.button.on('click', this.settings.download.callback);
+
+ // Allow clicking on the labels in the table menu without closing the menu
+ $(this.settings.tablesorter.widgetOptions.columnSelector_container).find('label').on('click', function(e) {
+ e.stopPropagation();
+ });
+
+ // Propagate our own pagerComplete event
+ this.ts.on('pagerComplete', $.proxy(function () {
+ this.$element.trigger('pagerComplete.ufTable');
+ }, this));
+
+ // Show info messages when there are no rows/no results
+ this.ts.on('filterEnd filterReset pagerComplete', this.settings.info.callback);
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ return this;
+ }
+
+ /**
+ * Get state variables for this table, as required by the AJAX data source: sorts, filters, size, page
+ */
+ Plugin.prototype.getTableStateVars = function(table) {
+ var base = this;
+
+ // Get sort column and order
+ var sortOrders = {
+ '0': 'asc',
+ '1': 'desc'
+ };
+
+ // Set sorts in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API
+ var sortList = table.config.sortList;
+ var sorts = {};
+ for (var i = 0; i < sortList.length; i++) {
+ var columnIndex = sortList[i][0];
+ var columnDirection = sortOrders[sortList[i][1]]; // Converts to 'asc' or 'desc'
+ if (sortList[i]) {
+ var columnName = table.config.$headerIndexed[columnIndex].data('column-name');
+ sorts[columnName] = columnDirection;
+ }
+ }
+
+ // Set filters in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API
+ var filterList = base.getSavedFilters(table);
+ var filters = {};
+ for (i = 0; i < filterList.length; i++) {
+ if (filterList[i]) {
+ var columnName = base.settings.filterAllField;
+
+ if (table.config.$headerIndexed[i]) {
+ columnName = table.config.$headerIndexed[i].data('column-name');
+ }
+
+ filters[columnName] = filterList[i];
+ }
+ }
+
+ var state = {
+ size: table.config.pager.size,
+ page: table.config.pager.page,
+ sorts: sorts,
+ filters: filters
+ };
+
+ return state;
+ };
+
+ /**
+ * Get saved filters from the browser local storage. Those should always be up to date
+ */
+ Plugin.prototype.getSavedFilters = function(table) {
+
+ // Fallback to `getFilters` or empty in case of failure
+ var filterList = $.tablesorter.getFilters(table) || [];
+
+ // Overwrite list with saved filter for filter-select not setup by ts
+ var isArray, saved,
+ wo = table.config.widgetOptions;
+ if ( wo.filter_saveFilters && $.tablesorter.storage ) {
+ saved = $.tablesorter.storage( table, 'tablesorter-filters' ) || [];
+ isArray = $.isArray( saved );
+ // make sure we're not just getting an empty array
+ if ( !( isArray && saved.join( '' ) === '' || !isArray ) ) {
+ filterList = $.tablesorter.filter.processFilters( saved );
+ }
+ }
+
+ return filterList;
+ };
+
+ /**
+ * Generate the AJAX url.
+ * Used as the default callback for pager_customAjaxUrl
+ * @private
+ */
+ Plugin.prototype._generateUrl = function(table, url) {
+ var tableState = this.getTableStateVars(table);
+
+ if (this.settings.DEBUG) {
+ console.log(tableState);
+ }
+
+ $.extend(table.config.pager.ajaxObject.data, tableState);
+
+ // Merge in any additional parameters
+ $.extend(table.config.pager.ajaxObject.data, this.settings.addParams);
+
+ return url;
+ };
+ /**
+ * Process data returned from the AJAX request and rendering the table cells.
+ * Used as the default callback for pager_ajaxProcessing
+ * @private
+ */
+ Plugin.prototype._processAjax = function(data) {
+ var ts = this.ts[0];
+ var json = {},
+ rows = '';
+
+ if (data) {
+ var size = data.rows.length;
+
+ // Render table rows and cells via Handlebars
+ for (var row = 0; row < size; row++) {
+ var cellData = {
+ rownum: row,
+ row : data.rows[row], // It is safe to use the data from the API because Handlebars escapes HTML
+ site : this.settings.site
+ };
+
+ rows += this.rowTemplate(cellData);
+
+ for (var col = 0; col < this.columnTemplatesIndexed.length; col++) {
+ rows += this.columnTemplatesIndexed[col](cellData);
+ }
+
+ rows += '</tr>';
+ }
+
+ // Initialize any dropdown filters
+ var columns = ts.config.$headerIndexed;
+ this._ajaxInitFilterSelects(columns, data.listable);
+
+ json.total = data.count; // Get total rows without pagination
+ json.filteredRows = data.count_filtered; // no filtering
+ json.rows = $(rows);
+ json.output = data.output;
+ } else {
+ json.total = 0;
+ json.filteredRows = 0;
+ json.rows = '';
+ }
+
+ return json;
+ };
+
+ /**
+ * Initialize filter select menus using the ajax `listable` values
+ * @private
+ */
+ Plugin.prototype._ajaxInitFilterSelects = function(columns, listable) {
+ var ts = this.ts[0];
+ var filters = this.getSavedFilters(ts);
+ // Find columns with `.filter-select` and match them to column numbers based on their data-column-name
+ for (var col = 0; col < columns.length; col++) {
+ var column = columns[col];
+ // If the column is designated for filter-select, get the listables from the data and recreate it
+ if (column.hasClass('filter-select')) {
+ var columnName = column.data('column-name');
+ if (listable[columnName]) {
+ $.tablesorter.filter.buildSelect(ts, col, listable[columnName], true);
+ // If there is a filter actually set for this column, update the selected option.
+ if (filters[col]) {
+ var selectControl = $(ts).find(".tablesorter-filter[data-column='" + col + "']");
+ selectControl.val(filters[col]);
+ }
+ }
+ }
+ }
+ };
+
+ /**
+ * Implements handler for the "download CSV" button.
+ * Default callback for download.callback
+ * @private
+ */
+ Plugin.prototype._onDownload = function () {
+ var tableState = this.getTableStateVars(this.ts[0]);
+ tableState.format = 'csv';
+ delete tableState.page;
+ delete tableState.size;
+
+ // Merge in any additional request parameters
+ $.extend(tableState, this.settings.addParams);
+
+ // Causes download to begin
+ window.location = this.settings.dataUrl + '?' + $.param(tableState);
+ };
+
+ /**
+ * Handle pager ajax errors.
+ * @private
+ */
+ Plugin.prototype._pagerAjaxError = function(c, jqXHR, settings, exception) {
+ this._ajaxError(jqXHR);
+
+ // Let TS handle the in-table error message
+ return '';
+ };
+
+ /**
+ * Handle ajax error
+ * @private
+ */
+ Plugin.prototype._ajaxError = function(jqXHR) {
+ if (typeof jqXHR === 'object') {
+ // Error messages
+ if (this._debugAjax && jqXHR.responseText) {
+ document.write(jqXHR.responseText);
+ document.close();
+ } else {
+ if (this.settings.DEBUG) {
+ console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText );
+ }
+ // Display errors on failure
+ // TODO: ufAlerts widget should have a 'destroy' method
+ if (!this.settings.msgTarget.data('ufAlerts')) {
+ this.settings.msgTarget.ufAlerts();
+ } else {
+ this.settings.msgTarget.ufAlerts('clear');
+ }
+
+ this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ }
+ }
+ };
+
+ /**
+ * Render info messages, such as when there are no results.
+ * Default callback for info.callback
+ * @private
+ */
+ Plugin.prototype._renderInfoMessages = function () {
+ var table = this.ts[0];
+ var infoMessages = this.settings.info.container;
+ if (table.config.pager) {
+ infoMessages.html('');
+ var fr = table.config.pager.filteredRows;
+ if (fr === 0) {
+ infoMessages.html(this.settings.info.messageEmptyRows);
+ }
+ }
+ };
+
+ /**
+ * Encode the current table state variables into a URL hash.
+ * Default callback for sort2Hash_encodeHash
+ * @private
+ */
+ Plugin.prototype._encodeHash = function(config, tableId, component, value, rawValue) {
+ var wo = config.widgetOptions;
+ if ( component === 'filter' ) {
+ // rawValue is an array of filter values, numerically indexed
+ var encodedFilters = '';
+ var len = rawValue.length;
+ for (var index = 0; index < len; index++) {
+ if (rawValue[index]) {
+ var columnName = this.settings.filterAllField;
+ if (config.$headerIndexed[index]) {
+ columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr);
+ }
+ encodedFilters += '&filter[' + tableId + '][' + columnName + ']=' + encodeURIComponent(rawValue[index]);
+ }
+ }
+ return encodedFilters;
+ } else if ( component === 'sort' ) {
+ // rawValue is an array of sort pairs [columnNum, sortDirection]
+ var encodedFilters = '';
+ var len = rawValue.length;
+ for (var index = 0; index < len; index++) {
+ var columnNum = rawValue[index][0];
+ var sortDirection = rawValue[index][1];
+ var columnName = $(config.$headerIndexed[columnNum][0]).attr(wo.sort2Hash_headerTextAttr);
+ encodedFilters += '&sort[' + tableId + '][' + columnName + ']=' + wo.sort2Hash_directionText[sortDirection];
+ }
+ return encodedFilters;
+ }
+ return false;
+ };
+
+ /**
+ * Decode the current table state variables from the URL hash.
+ * Default callback for sort2Hash_decodeHash
+ * @private
+ */
+ Plugin.prototype._decodeHash = function(config, tableId, component) {
+ var wo = config.widgetOptions;
+ var result;
+ // Convert hash into JSON object
+ var urlObject = $.String.deparam(window.location.hash);
+ delete urlObject[wo.sort2Hash_hash]; // Remove hash character
+ if (component === 'filter') {
+ var decodedFilters = [];
+ // Extract filter names and values for the specified table
+ var pageFilters = urlObject.filter ? urlObject.filter : [];
+ if (pageFilters[tableId]) {
+ var tableFilters = pageFilters[tableId];
+ // Build a numerically indexed array of filter values
+ var len = config.$headerIndexed.length;
+ for (var index = 0; index < len; index++) {
+ var columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr);
+ if (tableFilters[columnName] && tableFilters[columnName] != this.settings.filterAllField) {
+ decodedFilters.push(tableFilters[columnName]);
+ } else {
+ decodedFilters.push('');
+ }
+ }
+ // Convert array of filter values to a delimited string
+ result = decodedFilters.join(wo.sort2Hash_separator);
+ // make sure to use decodeURIComponent on the result
+ return decodeURIComponent(result);
+ } else {
+ return '';
+ }
+ }
+ return false;
+ };
+
+ /**
+ * Clean up URL hash.
+ * Default callback for sort2Hash_cleanHash
+ * @private
+ */
+ Plugin.prototype._cleanHash = function(config, tableId, component, hash) {
+ var wo = config.widgetOptions;
+ // Convert hash to JSON object
+ var urlObject = $.String.deparam(hash);
+ delete urlObject[wo.sort2Hash_hash]; // Remove hash character
+ // Remove specified component for specified table
+ if (urlObject[component]) {
+ if (urlObject[component][tableId]) {
+ delete urlObject[component][tableId];
+ }
+ // Delete entire component if no other tables remaining
+ if (jQuery.isEmptyObject(urlObject[component])) {
+ delete urlObject[component];
+ }
+ }
+ // Convert modified JSON object back into serialized representation
+ var result = decodeURIComponent(jQuery.param(urlObject));
+ return result.length ? result : '';
+ };
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function(methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ } else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions]( Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn( 'Method ' + methodOrOptions + ' is private!' );
+ }
+ } else {
+ console.warn( 'Method ' + methodOrOptions + ' does not exist.' );
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js
new file mode 100755
index 0000000..444b4ac
--- /dev/null
+++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js
@@ -0,0 +1,53 @@
+// Parser for sorting integers, timestamps, etc based on metadata from <td> attributes
+// Adapted from http://mottie.github.io/tablesorter/docs/example-parsers-advanced.html
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'metanum',
+ is: function(s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function(s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns metadata, or cell text (s) if it doesn't exist
+ return $cell.attr('data-num') || s;
+
+ },
+ // set type to numeric
+ type: 'numeric'
+});
+
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'metatext',
+ is: function(s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function(s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns metadata, or cell text (s) if it doesn't exist
+ return $cell.attr('data-text') || s;
+
+ },
+
+ type: 'text'
+});
+
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'isblank',
+ is: function(s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function(s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns 1 if blank (whitespace), 0 otherwise
+ var isBlank = $cell.html().trim() == "&nbsp;" ? 1 : 0;
+ return isBlank;
+
+ },
+
+ type: 'numeric'
+});