From ebde3cbdd324b8ece65cbe06c92b80b68c899932 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Wed, 13 Apr 2016 13:18:18 +0200
Subject: [PATCH] Fix ionic-material  CSS (used compiled SCSS)

---
 www/index.html                             |   11 +-
 www/lib/ionic/css/ionic.material.css       | 2933 ++++++++++++++++++++
 www/lib/ionic/css/ionic.material.min.css   |   12 +
 www/lib/ionic/js/ionic.material.js         |  957 +++++++
 www/lib/ionic/js/ionic.material.min.js     |   14 +
 www/lib/ionic/js/ionic.material.min.js.map |    1 +
 6 files changed, 3918 insertions(+), 10 deletions(-)
 create mode 100644 www/lib/ionic/css/ionic.material.css
 create mode 100644 www/lib/ionic/css/ionic.material.min.css
 create mode 100644 www/lib/ionic/js/ionic.material.js
 create mode 100644 www/lib/ionic/js/ionic.material.min.js
 create mode 100644 www/lib/ionic/js/ionic.material.min.js.map

diff --git a/www/index.html b/www/index.html
index 3f56984a4..e80f051e6 100644
--- a/www/index.html
+++ b/www/index.html
@@ -7,29 +7,20 @@
 
 
     <link href="lib/ionic/css/ionic.css" rel="stylesheet">
-    <!--<link href="lib/ion-md-input/css/ion-md-input.css" rel="stylesheet">-->
-    <link href="lib/ionic-material/dist/ionic.material.min.css" rel="stylesheet">
-
-    <!--<link rel="stylesheet" type="text/css" href="lib/ionic-material-design-lite/dist/css/ionic.material-design-lite.min.css">-->
 
     <!-- compiled css output -->
     <link href="css/ionic.app.css" rel="stylesheet">
 
-    <!--<link rel="stylesheet" href="https://cdn.rawgit.com/mhartington/ion-md-input/master/css/ion-md-input.css" />-->
-
     <link href="css/style.css" rel="stylesheet">
     <link href="css/style.market.css" rel="stylesheet">
 
     <!-- ionic/angularjs js -->
     <script src="lib/ionic/js/ionic.bundle.js"></script>
+    <script src="lib/ionic/js/ionic.material.min.js"></script>
     <script src="lib/ionic/js/angular/angular-resource.min.js"></script>
     <script src="lib/ionic/js/angular/angular-translate.min.js"></script>
     <script src="lib/ionic/js/angular/angular-translate-loader-static-files.min.js"></script>
     <script src="lib/ionic/js/angular/angular-messages.min.js"></script>
-    <script src="lib/ionic-material/dist/ionic.material.min.js"></script>
-    <!--<script src="https://cdn.rawgit.com/mhartington/ion-md-input/master/js/ion-md-input.js">-->
-    <!--</script>-->
-    <!--<script src="lib/ionic-material-design-lite/dist/js/ionic.material-design-lite.min.js"></script>-->
 
     <script src="js/vendor/moment.min.js"></script>
     <script src="js/vendor/numeral.js"></script>
diff --git a/www/lib/ionic/css/ionic.material.css b/www/lib/ionic/css/ionic.material.css
new file mode 100644
index 000000000..acfce890b
--- /dev/null
+++ b/www/lib/ionic/css/ionic.material.css
@@ -0,0 +1,2933 @@
+/* Directives : MD Label
+==================================*/
+.item-md-label {
+  display: block;
+  background: transparent;
+  box-shadow: none;
+  margin-left: 12px;
+  margin-right: 12px;
+  padding: 30px 0 0; }
+
+.item-md-label .input-label {
+  position: absolute;
+  padding: 5px 0 0;
+  z-index: 2;
+  -webkit-transform: translate3d(0, -30px, 0) scale(1);
+  transform: translate3d(0, -30px, 0) scale(1);
+  -webkit-transition: all 0.2s ease;
+  transition: all 0.2s ease;
+  color: #fff;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+  -webkit-transform-origin: 0;
+  -ms-transform-origin: 0;
+  transform-origin: 0; }
+
+.item-md-label input {
+  background-color: rgba(0, 0, 0, 0.6);
+  bottom: 0;
+  color: #fff;
+  letter-spacing: 0.25rem;
+  padding: 20px 10px;
+  position: relative;
+  z-index: 1; }
+
+.item-md-label .highlight {
+  position: absolute;
+  bottom: 0;
+  height: 2px;
+  left: 0;
+  width: 100%;
+  -webkit-transform: translate3d(-100%, 0, 0);
+  transform: translate3d(-100%, 0, 0);
+  -webkit-transition: all 0.15s ease;
+  transition: all 0.15s ease;
+  z-index: 1; }
+
+.item-md-label .highlight-light {
+  background: #fff; }
+
+.item-md-label .highlight-stable {
+  background: #f8f8f8; }
+
+.item-md-label .highlight-positive {
+  background: #387ef5; }
+
+.item-md-label .highlight-calm {
+  background: #11c1f3; }
+
+.item-md-label .highlight-balanced {
+  background: #33cd5f; }
+
+.item-md-label .highlight-energized {
+  background: #ffc900; }
+
+.item-md-label .highlight-assertive {
+  background: #ef473a; }
+
+.item-md-label .highlight-royal {
+  background: #886aea; }
+
+.item-md-label .highlight-dark {
+  background: #444; }
+
+.item-md-label .input-label {
+  letter-spacing: 0.25rem;
+  padding: 0 10px; }
+
+.item-md-label input:focus ~ .input-label, .item-md-label input.used ~ .input-label {
+  font-weight: bold;
+  opacity: 0.7;
+  filter: alpha(opacity=70);
+  padding: 0;
+  text-transform: uppercase;
+  -webkit-transform: translate3d(0, -60px, 0) scale(0.9);
+  transform: translate3d(0, -60px, 0) scale(0.9); }
+
+.item-md-label input:focus ~ .highlight {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+/* Bar - Header - Expanded
+==================================*/
+.expanded .bar.bar-header,
+.bar.bar-header.expanded {
+  height: 75px; }
+
+.expanded.bar.bar-header .title,
+.bar.bar-header.expanded .title {
+  bottom: 0;
+  top: initial;
+  padding-left: 16px; }
+
+.expanded .bar.bar-header .title.fab-left,
+.bar.bar-header.expanded .title.fab-left {
+  bottom: 0;
+  left: 90px;
+  position: absolute;
+  right: initial;
+  top: initial; }
+
+.expanded .bar.bar-header .title.fab-right,
+.bar.bar-header.expanded .title.fab-right {
+  bottom: 0;
+  left: 4px;
+  position: absolute;
+  top: initial;
+  right: initial; }
+
+.expanded .bar.bar-header + .button-fab,
+.bar.bar-header.expanded + .button-fab {
+  top: 50px; }
+
+.expanded .bar.bar-header.push-down,
+.bar.bar-header.expanded.push-down {
+  height: 44px;
+  overflow: hidden; }
+
+.expanded .bar.bar-header,
+.bar.bar-header.expanded {
+  -webkit-transition: height 1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: height 1s cubic-bezier(0.55, 0, 0.1, 1);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.expanded .bar.bar-header + .button-fab,
+.bar.bar-header.expanded + .button-fab {
+  -webkit-transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 1.1s cubic-bezier(0.55, 0, 0.1, 1);
+  -webkit-transform: translate3d(0, 0, 0) scale(1);
+  transform: translate3d(0, 0, 0) scale(1); }
+
+.expanded .bar.bar-header.push-down + .button-fab,
+.bar.bar-header.expanded.push-down + .button-fab {
+  top: 0;
+  -webkit-transform: translate3d(-100px, -100px, 0) scale(2.5);
+  transform: translate3d(-100px, -100px, 0) scale(2.5); }
+
+.expanded .bar.bar-header.push-down .title,
+.bar.bar-header.expanded.push-down .title {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  left: initial;
+  right: initial; }
+
+.expanded .bar.bar-header .title,
+.bar.bar-header.expanded .title {
+  opacity: 1;
+  filter: alpha(opacity=100);
+  -webkit-transition: all 2s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 2s cubic-bezier(0.55, 0, 0.1, 1); }
+
+.expanded .bar.bar-header .title, .bar.bar-header.expanded .title {
+  bottom: 0;
+  left: 42px !important;
+  top: initial; }
+
+.expanded.has-header-fab-left .bar.bar-header .title, .bar.bar-header.expanded.has-header-fab-left .title {
+  left: 76px !important; }
+
+/* Bar
+==================================*/
+.bar {
+  z-index: 2;
+  font-size: 1.3em;
+  width: 100%;
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); }
+
+.bar .button {
+  min-width: 38px;
+  z-index: 3; }
+
+.bar .no-text span.back-text {
+  display: none; }
+
+.bar .title sup {
+  opacity: 0.7; }
+
+.bar.bar-header .button + .title {
+  text-align: left;
+  left: 35px;
+  line-height: 46px; }
+
+/* Button Bar
+==================================*/
+.button-bar {
+  box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); }
+
+.button-bar > .button {
+  box-shadow: none;
+  /*    line-height: initial; */ }
+
+.button-bar > .button .icon:before,
+.button-bar > .button:before {
+  line-height: initial; }
+
+.bar-footer .button-fab {
+  position: absolute;
+  top: -26px;
+  bottom: initial; }
+
+.bar-footer .buttons-left .button-fab {
+  left: 8px; }
+
+.bar-footer .buttons-right .button-fab {
+  right: 8px; }
+
+.bar .button.button-clear {
+  box-shadow: none; }
+
+.left-buttons .button-fab {
+  left: 8px;
+  top: 16px; }
+
+.right-buttons .button-fab {
+  right: 8px;
+  top: 16px; }
+
+.fab-left.title-left,
+.fab-left.title.title-left {
+  left: 68px; }
+
+/* Button : FAB
+==================================*/
+.button.button-fab,
+.bar .button.button-fab {
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
+  z-index: 9999;
+  width: 56px;
+  height: 56px;
+  max-height: initial;
+  max-width: initial;
+  border-radius: 50%;
+  border-radius: 50%;
+  overflow: hidden;
+  padding: 0;
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  -webkit-transition: 0.3s fade-in-out;
+  transition: 0.3s fade-in-out;
+  -webkit-transition-property: -webkit-transform, box-shadow;
+  transition-property: transform, box-shadow; }
+
+.button.button-fab.button-fab-bottom-right,
+.bar .button.button-fab.button-fab-bottom-right {
+  top: auto;
+  right: 16px;
+  bottom: 16px;
+  left: auto;
+  position: absolute; }
+
+.button.button-fab.button-fab-bottom-left,
+.bar .button.button-fab.button-fab-bottom-left {
+  top: auto;
+  right: auto;
+  bottom: 16px;
+  left: 16px;
+  position: absolute; }
+
+.button.button-fab.button-fab-top-right,
+.bar .button.button-fab.button-fab-top-right {
+  top: 32px;
+  right: 16px;
+  bottom: auto;
+  left: auto;
+  position: absolute; }
+
+.button.button-fab.button-fab-top-left,
+.bar .button.button-fab.button-fab-top-left {
+  top: 32px;
+  right: auto;
+  bottom: auto;
+  left: 16px;
+  position: absolute; }
+
+.button.button-fab.button-fab-top-left.expanded,
+.button.button-fab.button-fab-top-right.expanded,
+.bar .button.button-fab.button-fab-top-left.expanded,
+.bar .button.button-fab.button-fab-top-right.expanded {
+  top: 48px; }
+
+.button.button-fab i,
+.bar .button.button-fab i {
+  font-size: 2.5rem;
+  margin-top: 0; }
+
+.button.button-fab.mini,
+.bar .button.button-fab.mini {
+  width: 40px;
+  height: 40px; }
+
+.button.button-fab.mini i,
+.bar .button.button-fab.mini i {
+  font-size: 2rem; }
+
+/* Motion */
+.motion {
+  -webkit-transition: all 0.5s ease-out;
+  transition: all 0.5s ease-out; }
+
+.fade {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spin-back {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important;
+  transform: translateZ(0) rotate(360deg) scale(0) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spiral {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important;
+  transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spiral-back {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important;
+  transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.menu-open .avatar {
+  opacity: 1;
+  filter: alpha(opacity=100);
+  -webkit-transform: translateZ(0) rotate(0) scale(1) !important;
+  transform: translateZ(0) rotate(0) scale(1) !important;
+  -webkit-transition: all 0.3s ease-out !important;
+  transition: all 0.3s ease-out !important; }
+
+.button.button-fab.button-fab-top-left.motion {
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-transform: translate3d(-120px, 60px, 0);
+  transform: translate3d(-120px, 60px, 0);
+  -webkit-transition: all 0.1s ease-out;
+  transition: all 0.1s ease-out; }
+
+.button.button-fab.button-fab-top-right.motion {
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-transform: translate3d(120px, 60px, 0);
+  transform: translate3d(120px, 60px, 0);
+  -webkit-transition: all 0.1s ease-out;
+  transition: all 0.1s ease-out; }
+
+.button.button-fab.button-fab-bottom-left.motion {
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-transform: translate3d(-120px, 60px, 0);
+  transform: translate3d(-120px, 60px, 0);
+  -webkit-transition: all 0.1s ease-out;
+  transition: all 0.1s ease-out; }
+
+.button.button-fab.button-fab-bottom-right.motion {
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-transform: translate3d(120px, 60px, 0);
+  transform: translate3d(120px, 60px, 0);
+  -webkit-transition: all 0.1s ease-out;
+  transition: all 0.1s ease-out; }
+
+.spin {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(0) scale(0) !important;
+  transform: translateZ(0) rotate(0) scale(0) !important;
+  -webkit-transition: all 0.3s ease-out !important;
+  transition: all 0.3s ease-out !important; }
+
+.spin.on {
+  -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important;
+  transform: translateZ(0) rotate(-360deg) scale(1) !important; }
+
+.flap {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important;
+  transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flap.on {
+  -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important;
+  transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.drop {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) scale(3) !important;
+  transform: translateZ(0) scale(3) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.drop.on {
+  -webkit-transform: translateZ(0) scale(1) !important;
+  transform: translateZ(0) scale(1) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flip {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotateY(0) scale(0) !important;
+  transform: translateZ(0) rotateY(0) scale(0) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flip.on {
+  -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important;
+  transform: translateZ(0) rotateY(-720deg) scale(1) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+/* Button : Floating
+==================================*/
+.button.button-floating, .bar .button.button-floating {
+  display: inline-block;
+  color: #FFF;
+  position: relative;
+  z-index: 1;
+  width: 37px;
+  height: 37px;
+  line-height: 37px;
+  padding: 0;
+  border-radius: 50%;
+  background-clip: padding-box;
+  -webkit-transition: 0.3s;
+  transition: 0.3s;
+  cursor: pointer; }
+
+.button.button-floating i, .bar .button.button-floating i {
+  width: inherit;
+  display: inline-block;
+  text-align: center;
+  color: #FFF;
+  font-size: 1.6rem;
+  line-height: 37px; }
+
+.button.button-floating.button-large, .bar .button.button-floating.button-large {
+  width: 55.5px;
+  height: 55.5px; }
+
+.button.button-floating.button-large i, .bar .button.button-floating.button-large i {
+  line-height: 55.5px; }
+
+/* Button
+==================================*/
+.button,
+.button.button-large,
+.button.button-flat,
+.bar .button,
+.bar .button.button-large,
+.bar .button.button-flat {
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
+  display: inline-block;
+  height: 36px;
+  padding: 0 2rem;
+  border-radius: 2px;
+  background-clip: padding-box;
+  text-transform: uppercase;
+  border: none;
+  outline: 0;
+  -webkit-tap-highlight-color: transparent; }
+
+.button.disabled,
+.button.disabled.button-large,
+.button.button-floating.disabled,
+.button.button-large.disabled,
+.button.button:disabled,
+.button.button-large:disabled,
+.button.button-large:disabled,
+.button.button-floating:disabled,
+.bar .button.disabled,
+.bar .button.disabled.button-large,
+.bar .button.button-floating.disabled,
+.bar .button.button-large.disabled,
+.bar .button.button:disabled,
+.bar .button.button-large:disabled,
+.bar .button.button-large:disabled,
+.bar .button.button-floating:disabled {
+  background-color: #DFDFDF;
+  box-shadow: none;
+  color: #9F9F9F; }
+
+.button.disabled:hover,
+.button.disabled.button-large:hover,
+.button.button-floating.disabled:hover,
+.button.button-large.disabled:hover,
+.button.button:disabled:hover,
+.button.button-large:disabled:hover,
+.button.button-large:disabled:hover,
+.button.button-floating:disabled:hover,
+.bar .button.disabled:hover,
+.bar .button.disabled.button-large:hover,
+.bar .button.button-floating.disabled:hover,
+.bar .button.button-large.disabled:hover,
+.bar .button.button:disabled:hover,
+.bar .button.button-large:disabled:hover,
+.bar .button.button-large:disabled:hover,
+.bar .button.button-floating:disabled:hover {
+  background-color: #DFDFDF;
+  color: #9F9F9F; }
+
+.button i,
+.button.button-large i,
+.button.button-floating i,
+.button.button-large i,
+.button.button-flat i,
+.bar .button i,
+.bar .button.button-large i,
+.bar .button.button-floating i,
+.bar .button.button-large i,
+.bar .button.button-flat i {
+  font-size: 1.3rem; }
+
+.button-bar .button {
+  border-radius: 0; }
+
+.button,
+.button-large,
+.bar .button,
+.bar .button-large {
+  text-decoration: none;
+  text-align: center;
+  letter-spacing: 0.5px;
+  -webkit-transition: 0.2s ease-out;
+  transition: 0.2s ease-out;
+  cursor: pointer; }
+
+.button {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  position: relative;
+  outline: none;
+  margin: 0;
+  /* background: transparent; */
+  white-space: nowrap;
+  text-align: center;
+  text-transform: uppercase;
+  font-weight: 500;
+  font-style: inherit;
+  font-variant: inherit;
+  font-size: inherit;
+  text-decoration: none;
+  cursor: pointer;
+  overflow: hidden;
+  -webkit-transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), -webkit-transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
+  transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); }
+
+.button:focus {
+  outline: none; }
+
+.button.ng-hide {
+  -webkit-transition: none;
+  transition: none; }
+
+.button.cornered {
+  border-radius: 0; }
+
+.button.raised {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.button-outline,
+.button-outline:hover,
+.button-outline:active {
+  border-style: solid;
+  border-width: 1px; }
+
+.button.button-outline.button-assertive,
+.button.button-outline.button-balanced,
+.button.button-outline.button-calm,
+.button.button-outline.button-dark,
+.button.button-outline.button-energized,
+.button.button-outline.button-light,
+.button.button-outline.button-positive,
+.button.button-outline.button-royal,
+.button.button-outline.button-stable,
+.button.button-outline {
+  border-color: rgba(0, 0, 0, 0.1); }
+
+.button-flat,
+.bar .button-flat {
+  box-shadow: none;
+  background-color: transparent;
+  color: #343434;
+  cursor: pointer; }
+
+.button.button-flat.disabled,
+.bar .button.button-flat.disabled {
+  color: #b3b3b3; }
+
+.button.button-large i,
+.bar .button.button-large i {
+  font-size: 1.6rem; }
+
+.button-pin-header.button-floating {
+  position: absolute;
+  z-index: 1000; }
+
+.button-pin-header.button-pin-left {
+  left: 24px;
+  top: -24px; }
+
+.button-pin-header.button-pin-right {
+  right: 24px;
+  top: -24px; }
+
+.button:not([disabled]).raised:focus,
+.button:not([disabled]).raised:hover,
+.button:not([disabled]).floating:focus,
+.button:not([disabled]).floating:hover {
+  -webkit-transform: translate3d(0, -1px, 0);
+  transform: translate3d(0, -1px, 0); }
+
+.button.button-flat {
+  box-shadow: none;
+  /* background: transparent; */
+  color: inherit; }
+
+.button.button-flat:hover {
+  color: inherit; }
+
+.button.button-flat,
+.button.button-flat:hover,
+.button.button-flat:active {
+  color: #fff; }
+
+.button.button-clear,
+.button.button-clear:hover,
+.button.button-clear:active {
+  background: transparent; }
+
+.button-full.ink,
+.button-block.ink {
+  display: block; }
+
+/* Card
+==================================*/
+.card-item.item {
+  border: none;
+  padding-bottom: 4px;
+  padding-top: 4px; }
+
+.card-item.item:first-child {
+  padding-top: 16px; }
+
+.card {
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26);
+  display: block;
+  margin: 8px;
+  padding: 0;
+  position: relative; }
+
+.card .image {
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 5px; }
+
+.card img {
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26);
+  display: block;
+  max-width: 100%;
+  max-height: initial;
+  position: static; }
+
+.card.card-gallery img {
+  border: none;
+  box-shadow: none;
+  display: block; }
+
+.card .card-footer {
+  font-size: 90%;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+  padding-top: 10px; }
+
+.card > .item {
+  border: none; }
+
+.card.card-gallery > .item {
+  background: inherit; }
+
+.card .icon + .icon {
+  padding-left: 1rem; }
+
+.card.animate-fade-in {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transform: translate3d(-30px, 1px, 0);
+  -webkit-transition: all 1s ease-in-out; }
+
+.card.animate-fade-in.done {
+  opacity: 1;
+  filter: alpha(opacity=100);
+  -webkit-transform: translate3d(0, 0, 0); }
+
+.card .item.item-avatar {
+  min-height: 88px;
+  padding-left: 88px; }
+
+/* Hero
+==================================*/
+.hero {
+  background-size: cover;
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26);
+  color: #fff;
+  height: 200px;
+  position: relative;
+  text-align: center;
+  -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  width: 100%; }
+
+.hero > * {
+  -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.hero + .mid-bar {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  height: initial;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.hero .hero-icon {
+  box-shadow: 0px 0 2px 0 rgba(0, 0, 0, 0.26);
+  border-radius: 50%;
+  display: inline-block;
+  font-size: 65px;
+  height: 150px;
+  padding: 10px 30px;
+  line-height: 136px;
+  width: 150px; }
+
+.hero.no-header {
+  height: 244px; }
+
+.hero > .content {
+  bottom: 0;
+  position: absolute;
+  text-align: center;
+  width: 100%;
+  z-index: 1; }
+
+.hero > .content > .avatar {
+  background-position: center;
+  background-size: cover;
+  border: solid 1px rgba(255, 255, 255, 0.8);
+  border-radius: 50%;
+  display: inline-block;
+  height: 88px;
+  left: auto;
+  margin-bottom: 10px;
+  position: relative;
+  width: 88px; }
+
+.hero h1 .hero h2, .hero h3, .hero h4, .hero h5, .hero h6 {
+  color: #fff;
+  margin: 0; }
+
+.hero h4 {
+  color: rgba(255, 255, 255, 0.7);
+  margin: 3px 0 16px; }
+
+.hero h1 > a, .hero h2 > a, .hero h3 > a, .hero h4 > a, .hero h5 > a, .hero h6 > a {
+  text-decoration: none; }
+
+.hero + .button-bar {
+  border-radius: 0;
+  margin-top: 0; }
+
+.hero + .button-bar > .button:first-child, .hero + .button-bar > .button:last-child {
+  border-radius: 0; }
+
+.hero .hero-icon {
+  color: #fff;
+  font-size: 96px; }
+
+.hero .hero-icon + h1 {
+  color: white;
+  letter-spacing: 0.15rem; }
+
+.hero .button, .hero .button.button-large, .hero .button.button-flat {
+  margin: 0; }
+
+.hero h1.title {
+  color: #fff;
+  font-size: 23px;
+  margin: 0;
+  text-align: left;
+  padding-left: 80px;
+  line-height: 59px; }
+
+.hero + .mid-bar {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  height: initial;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.hero > * {
+  -webkit-transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: opacity 2.5s cubic-bezier(0.55, 0, 0.1, 1);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+/* Item
+==================================*/
+.item {
+  font-size: 14px;
+  width: 100%; }
+
+.item-icon-left .icon {
+  left: 16px; }
+
+.item-icon-right .icon {
+  right: 16px; }
+
+/*
+.list .item.item-icon-right {
+    padding-right: 60px;
+}
+*/
+.item-thumbnail-left > img:first-child, .item-thumbnail-left .item-image, .item-thumbnail-left .item-content > img:first-child, .item-thumbnail-left .item-content .item-image {
+  border-radius: 50%; }
+
+.tab-item.activated {
+  height: calc(100% + 3px);
+  /* Stretch */ }
+
+/* List
+==================================*/
+.content + .list {
+  padding-top: 0; }
+
+.list .item {
+  border: none;
+  /*
+    padding-left: 16px;
+    padding-right: 16px;
+    */
+  min-height: 48px;
+  text-align: left; }
+
+.list .item.tabs {
+  padding: initial; }
+
+.list .item.item-bg-image {
+  max-height: 150px;
+  min-height: 150px; }
+
+.list .item.item-bg-image > img {
+  height: 100%;
+  left: 0;
+  max-width: initial;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  position: absolute;
+  top: 0;
+  width: 100%;
+  z-index: 0; }
+
+.list a.item {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.list .item.item-bg-image h1, .list .item.item-bg-image h2, .list .item.item-bg-image h3, .list .item.item-bg-image h4, .list .item.item-bg-image h5, .list .item.item-bg-image h6 {
+  color: #fff;
+  font-weight: bold;
+  position: relative;
+  text-shadow: 0 0 3px rgba(0, 0, 0, 0.95);
+  z-index: 1; }
+
+.list .item.item-bg-image h2 {
+  font-size: 24px; }
+
+.list .item.item-bg-image h2 {
+  font-size: 24px; }
+
+.list .item.item-bg-image p {
+  color: white;
+  font-size: 17px;
+  position: relative;
+  text-shadow: 0 0 4px rgba(0, 0, 0, 0.95);
+  z-index: 1; }
+
+.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content {
+  min-height: 80px; }
+
+/* List: Thumbnails
+==================================*/
+.item-thumbnail-left, .card > .item.item-thumbnail-left, .item-thumbnail-left .item-content {
+  padding-left: 106px; }
+
+.item-thumbnail-right, .card > .item.item-thumbnail-right, .item-thumbnail-right .item-content {
+  padding-right: 106px; }
+
+/* List: Avatar
+==================================*/
+.item-avatar > img:first-child, .item-avatar .item-image, .item-avatar .item-content > img:first-child, .item-avatar .item-content .item-image, .item-avatar-left > img:first-child, .item-avatar-left .item-image, .item-avatar-left .item-content > img:first-child, .item-avatar-left .item-content .item-image {
+  border-radius: 50%;
+  left: 16px;
+  max-height: 40px;
+  max-width: 40px; }
+
+/*
+.item-avatar, .list .item-avatar {
+    padding-left: 100px;
+}
+*/
+.avatar, .item-avatar .avatar {
+  background-position: center;
+  background-size: cover;
+  border-radius: 50%;
+  display: inline-block;
+  height: 56px;
+  left: 16px;
+  position: absolute;
+  width: 56px; }
+
+/* List: Gallery
+==================================*/
+.list.half {
+  display: inline-block;
+  float: left;
+  margin: 0;
+  padding: 0;
+  width: 50%; }
+
+.list.half:first-child {
+  padding: 16px 8px 16px 16px; }
+
+.list.half:last-child {
+  padding: 16px 16px 16px 8px; }
+
+.list.half:first-child .card.card-gallery {
+  margin-left: 0;
+  margin-right: 0; }
+
+.list.half:last-child .card.card-gallery {
+  margin-left: 0;
+  margin-right: 0; }
+
+.list.condensed-space > .card, .list.condensed-space > .item {
+  margin: 0px 0px 2px; }
+
+.list .card.card-gallery {
+  display: block;
+  float: left;
+  margin: 0 0 0 13px;
+  padding: 0;
+  width: auto; }
+
+.list.half .item {
+  width: 100%; }
+
+.list.half .item.card {
+  margin-bottom: 16px; }
+
+.list .card.card-gallery.item h2 {
+  padding: 12px; }
+
+.list .item.item-gallery img {
+  width: 100%; }
+
+.item.item-divider {
+  border-top: solid 1px rgba(0, 0, 0, 0.12);
+  font-size: 14px;
+  font-weight: bold;
+  height: 48px;
+  line-height: 48px;
+  color: rgba(0, 0, 0, 0.54); }
+  .item.item-divider:first-child {
+    border: none; }
+
+.item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content, .card > .item-avatar {
+  padding-left: 72px; }
+
+.item.active, .item.activated, .item-complex.active .item-content, .item-complex.activated .item-content, .item .item-content.active, .item .item-content.activated {
+  background-color: transparent; }
+
+.list-inset {
+  margin: 20px 30px;
+  border-left: solid 1px #ccc;
+  border-radius: 0;
+  background-color: #fff; }
+
+.list .item.item-floating-label,
+.item-floating-label {
+  border-bottom: solid 1px #ccc; }
+
+.loader {
+  position: relative;
+  margin: 0px auto;
+  width: 100px;
+  height: 100px;
+  zoom: 1.7; }
+
+.circular {
+  -webkit-animation: rotate 2s linear infinite;
+  animation: rotate 2s linear infinite;
+  height: 100px;
+  position: relative;
+  width: 100px; }
+
+.path {
+  stroke-dasharray: 1,200;
+  stroke-dashoffset: 0;
+  -webkit-animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
+  animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
+  stroke-linecap: round; }
+
+@-webkit-keyframes rotate {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg); } }
+
+@keyframes rotate {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg); } }
+
+@-webkit-keyframes dash {
+  0% {
+    stroke-dasharray: 1,200;
+    stroke-dashoffset: 0; }
+  50% {
+    stroke-dasharray: 89,200;
+    stroke-dashoffset: -35; }
+  100% {
+    stroke-dasharray: 89,200;
+    stroke-dashoffset: -124; } }
+
+@keyframes dash {
+  0% {
+    stroke-dasharray: 1,200;
+    stroke-dashoffset: 0; }
+  50% {
+    stroke-dasharray: 89,200;
+    stroke-dashoffset: -35; }
+  100% {
+    stroke-dasharray: 89,200;
+    stroke-dashoffset: -124; } }
+
+@-webkit-keyframes color {
+  100%, 0% {
+    stroke: #d62d20; }
+  40% {
+    stroke: #0057e7; }
+  66% {
+    stroke: #008744; }
+  80%, 90% {
+    stroke: #ffa700; } }
+
+@keyframes color {
+  100%, 0% {
+    stroke: #d62d20; }
+  40% {
+    stroke: #0057e7; }
+  66% {
+    stroke: #008744; }
+  80%, 90% {
+    stroke: #ffa700; } }
+
+/* Layouts: Login
+==================================*/
+.login {
+  background-position: 25% 25%;
+  background-size: 180% 180%;
+  height: 100%;
+  -webkit-transition: all 1.5s ease-in-out;
+  transition: all 1.5s ease-in-out; }
+
+.login .item {
+  margin: 0 12px;
+  padding-left: 0;
+  padding-right: 0;
+  width: initial; }
+
+.login .button-bar {
+  bottom: 0;
+  margin: 28px 12px 0;
+  width: initial; }
+
+.login .light-bg {
+  background-color: #fff; }
+
+.icon.hero-icon:before {
+  line-height: 130px; }
+
+/* Mask
+==================================*/
+.hero.has-mask:after, .item.has-mask:after, .card.has-mask:after {
+  content: '';
+  background: -webkit-linear-gradient(top, transparent 0%, rgba(0, 0, 0, 0.6) 100%);
+  height: 100%;
+  left: 0;
+  position: absolute;
+  top: 0;
+  z-index: 0;
+  width: 100%; }
+
+.hero.has-mask-reverse:after, .item.has-mask-reverse:after, .card.has-mask-reverse:after {
+  content: '';
+  background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.6) 0%, transparent 100%);
+  height: 100%;
+  left: 0;
+  position: absolute;
+  top: 0;
+  z-index: 0;
+  width: 100%; }
+
+/* Menu */
+.menu-bottom {
+  bottom: 16px;
+  left: 16px;
+  right: 16px;
+  position: absolute; }
+
+.menu-top {
+  top: 16px;
+  left: 16px;
+  right: 16px;
+  position: absolute; }
+
+.menu .avatar {
+  top: 16px;
+  left: 16px;
+  height: 65px;
+  width: 65px; }
+
+.menu .bar.bar-header.expanded {
+  box-shadow: none;
+  min-height: 150px;
+  color: #fff; }
+
+.menu-open .bar.bar-header.expanded {
+  background-position: 0;
+  background-size: 100%; }
+
+.has-expanded-header {
+  top: 150px !important; }
+
+.motion {
+  -webkit-transition: all 0.5s ease-out;
+  transition: all 0.5s ease-out; }
+
+.fade {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spin-back {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(360deg) scale(0) !important;
+  transform: translateZ(0) rotate(360deg) scale(0) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spiral {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important;
+  transform: translateZ(0) rotate(-360deg) scale(0) translate(-120px) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.spiral-back {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important;
+  transform: translateZ(0) rotate(360deg) scale(0) translate(120px) !important;
+  -webkit-transition: all 0.1s ease-out !important;
+  transition: all 0.1s ease-out !important; }
+
+.menu-open .avatar {
+  opacity: 1;
+  filter: alpha(opacity=100);
+  -webkit-transform: translateZ(0) rotate(0) scale(1) !important;
+  transform: translateZ(0) rotate(0) scale(1) !important;
+  -webkit-transition: all 0.3s ease-out !important;
+  transition: all 0.3s ease-out !important; }
+
+.spin {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotate(0) scale(0) !important;
+  transform: translateZ(0) rotate(0) scale(0) !important;
+  -webkit-transition: all 0.3s ease-out !important;
+  transition: all 0.3s ease-out !important; }
+
+.spin.on {
+  -webkit-transform: translateZ(0) rotate(-360deg) scale(1) !important;
+  transform: translateZ(0) rotate(-360deg) scale(1) !important; }
+
+.flap {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important;
+  transform: translateZ(0) rotateX(0) scale(0) translate(-120px) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flap.on {
+  -webkit-transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important;
+  transform: translateZ(0) rotateX(-720deg) scale(1) translate(0) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.drop {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) scale(3) !important;
+  transform: translateZ(0) scale(3) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.drop.on {
+  -webkit-transform: translateZ(0) scale(1) !important;
+  transform: translateZ(0) scale(1) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flip {
+  -webkit-backface-visibility: hidden !important;
+  backface-visibility: hidden !important;
+  -webkit-transform: translateZ(0) rotateY(0) scale(0) !important;
+  transform: translateZ(0) rotateY(0) scale(0) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+.flip.on {
+  -webkit-transform: translateZ(0) rotateY(-720deg) scale(1) !important;
+  transform: translateZ(0) rotateY(-720deg) scale(1) !important;
+  -webkit-transition: all 0.5s ease-out !important;
+  transition: all 0.5s ease-out !important; }
+
+/* Utilities
+==================================*/
+.bold {
+  font-weight: bold; }
+
+.static {
+  position: static; }
+
+.pull-left {
+  float: left; }
+
+.pull-right {
+  float: right; }
+
+.double-padding, .ionic-content.double-padding {
+  padding: 16px; }
+
+.double-padding-x {
+  padding-left: 16px;
+  padding-right: 16px; }
+
+.double-padding-y {
+  padding-top: 16px;
+  padding-bottom: 16px; }
+
+.outline {
+  border-style: solid;
+  border-width: 1px; }
+
+.border-top {
+  border-top: solid 1px #ccc;
+  padding-top: 30px; }
+
+.no-border {
+  border: none; }
+
+.circle {
+  border-radius: 50%; }
+
+.no-padding, .list.no-padding, .bar.no-padding, .button-bar.no-padding, .card.no-padding, .button.no-padding, .item.no-padding {
+  padding: 0; }
+
+.flat, .flat.tabs, .flat.button, .flat.button.icon, .flat.hero {
+  box-shadow: none;
+  -webkit-box-shadow: none; }
+
+/* Utilities : Padding
+==================================*/
+.im-wrapper, .padding {
+  padding: 16px !important; }
+
+.padding-bottom {
+  padding-bottom: 16px !important; }
+
+.padding-top {
+  padding-top: 16px !important; }
+
+.padding-left {
+  padding-left: 16px !important; }
+
+.padding-right {
+  padding-right: 16px !important; }
+
+.no-padding-bottom {
+  padding-bottom: 0 !important; }
+
+.no-padding-top {
+  padding-top: 0 !important; }
+
+.no-padding-left {
+  padding-left: 0 !important; }
+
+.no-padding-right {
+  padding-right: 0 !important; }
+
+/* Utilities : Depth
+==================================*/
+.z1 {
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); }
+
+/* Utilities : Color
+==================================*/
+.bar.bar-positive.darker {
+  background-color: #164FAB; }
+
+/* TODO: Expand to other colors */
+.bar.bar-positive.dark-positive-bg {
+  background-color: #2C5CAD; }
+
+/* TODO: Expand to other colors */
+.muted {
+  color: #C3C3C3; }
+
+.clear-bg {
+  background: transparent; }
+
+/* Motion: Blinds
+==================================*/
+.animate-blinds .item,
+.animate-blinds .item {
+  visibility: hidden; }
+
+.animate-blinds .item,
+.animate-blinds .item {
+  -ms-transform: scale3d(0.8, 0, 1);
+  -webkit-transform: scale3d(0.8, 0, 1);
+  transform: scale3d(0.8, 0, 1);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+
+.animate-blinds .item-bg-image > img.background,
+.animate-blinds .item-bg-image > img.background {
+  box-shadow: none;
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1); }
+
+.animate-blinds .in,
+.animate-blinds.done > *,
+.animate-blinds .in,
+.animate-blinds.done > * {
+  -ms-transform: translate3d(0, 0, 0);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.animate-blinds .in,
+.animate-blinds.done .item,
+.animate-blinds .in,
+.animate-blinds.done .item {
+  visibility: visible; }
+
+.animate-blinds .item,
+.animate-blinds .item {
+  visibility: hidden; }
+
+.animate-blinds .item,
+.animate-blinds .item {
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.animate-blinds .in,
+.animate-blinds.done,
+.animate-blinds .in,
+.animate-blinds.done {
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-blinds .in,
+.animate-blinds.done,
+.animate-blinds .in,
+.animate-blinds.done {
+  visibility: visible; }
+
+.animate-blinds.done .in,
+.animate-blinds.done .in {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-blinds .has-mask-reverse:after,
+.animate-blinds .has-mask-reverse:after {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out; }
+
+.animate-blinds.done .has-mask-reverse:after,
+.animate-blinds.done .has-mask-reverse:after {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-blinds .out,
+.animate-blinds .out {
+  -ms-transform: scale3d(0, 0, 1);
+  -webkit-transform: scale3d(0, 0, 1);
+  transform: scale3d(0, 0, 1); }
+
+/* Motion: Pan In Left
+==================================*/
+.animate-pan-in-left,
+.animate-pan-in-left {
+  background-position: 0% 0%; }
+
+/* Motion: Ripple
+==================================*/
+.animate-ripple .done,
+.animate-ripple .done {
+  visibility: hidden; }
+
+.animate-ripple .done,
+.animate-ripple .done {
+  -ms-transform: scale3d(0.8, 0, 1);
+  -webkit-transform: scale3d(0.8, 0, 1);
+  transform: scale3d(0.8, 0, 1);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+
+.animate-ripple .item-bg-image img.background,
+.animate-ripple .item-bg-image img.background {
+  box-shadow: none;
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1); }
+
+.animate-ripple .in, .animate-ripple.done,
+.animate-ripple .in, .animate-ripple.done {
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1); }
+
+.animate-ripple .in, .animate-ripple.done,
+.animate-ripple .in, .animate-ripple.done {
+  visibility: visible; }
+
+.animate-ripple .item {
+  -ms-transform: scale3d(0, 0, 1);
+  -webkit-transform: scale3d(0, 0, 1);
+  transform: scale3d(0, 0, 1);
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.animate-ripple .item.in {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-ripple .done {
+  visibility: hidden; }
+
+.animate-ripple .done,
+.animate-ripple .done {
+  -ms-transform: scale3d(0.8, 0, 1);
+  -webkit-transform: scale3d(0.8, 0, 1);
+  transform: scale3d(0.8, 0, 1);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+
+/* Uncomment if you want images to fade in after the card
+
+  .animate-ripple .in .item-bg-image img:last-child,
+  .animate-ripple .in .item-bg-image img:last-child { 
+    opacity: 0;
+  }
+
+    .animate-ripple.done .item-bg-image img:last-child,
+    .animate-ripple.done .item-bg-image img:last-child {
+    opacity: 1;
+    -moz-transition: all 1s ease-in-out;
+    -o-transition: all 1s ease-in-out;
+    -webkit-transition: all 1s ease-in-out;
+    transition: all 1s ease-in-out;
+    }
+
+    .animate-ripple .item-bg-image img:last-child,
+  .animate-ripple .item-bg-image img:last-child {
+    box-shadow: none;
+    -moz-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+  .animate-ripple .in .item-bg-image img:last-child,
+  .animate-ripple .in .item-bg-image img:last-child { 
+    opacity: 0;
+  }
+
+.animate-ripple.done .item-bg-image img:last-child,
+.animate-ripple.done .item-bg-image img:last-child {
+  opacity: 1;
+    -moz-transition: all 0.3s ease-in-out;
+    -o-transition: all 0.3s ease-in-out;
+    -webkit-transition: all 0.3s ease-in-out;
+    transition: all 0.3s ease-in-out;
+}
+
+.animate-ripple .in,
+.animate-ripple .in {
+    opacity: 0.6;
+}
+*/
+.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done {
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out; }
+
+.animate-ripple .in, .animate-ripple.done, .animate-ripple .in, .animate-ripple.done {
+  visibility: visible; }
+
+.animate-ripple.done .in, .animate-ripple.done .in {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-ripple .has-mask-reverse:after, .animate-ripple .has-mask-reverse:after {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out; }
+
+.animate-ripple.done .has-mask-reverse:after, .animate-ripple.done .has-mask-reverse:after {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-ripple .out, .animate-ripple .out {
+  -ms-transform: scale3d(0, 0, 1);
+  -webkit-transform: scale3d(0, 0, 1);
+  transform: scale3d(0, 0, 1); }
+
+/* Motion: Slide / Fade In
+==================================*/
+.animate-fade-slide-in .item,
+.animate-fade-slide-in .item {
+  visibility: hidden; }
+
+.animate-fade-slide-in .item,
+.animate-fade-slide-in .item {
+  -ms-transform: scale3d(0.8, 0, 1);
+  -webkit-transform: scale3d(0.8, 0, 1);
+  transform: scale3d(0.8, 0, 1);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+
+.animate-fade-slide-in .item-bg-image img.background,
+.animate-fade-slide-in .item-bg-image img.background {
+  box-shadow: none;
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1); }
+
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done .item,
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done .item {
+  -ms-transform: translate3d(0, 0, 0);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done .item,
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done .item {
+  visibility: visible; }
+
+.list .item.item-bg-image,
+.list .item.item-bg-image {
+  max-height: 150px; }
+
+.animate-fade-slide-in .item,
+.animate-fade-slide-in .item {
+  visibility: hidden; }
+
+.animate-fade-slide-in .item,
+.animate-fade-slide-in .item {
+  -ms-transform: translate3d(-250px, 250px, 0);
+  -webkit-transform: translate3d(-250px, 250px, 0);
+  transform: translate3d(-250px, 250px, 0);
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1);
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done,
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done {
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: all 0.5s ease-in-out;
+  transition: all 0.5s ease-in-out;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done,
+.animate-fade-slide-in .in,
+.animate-fade-slide-in.done {
+  visibility: visible; }
+
+.animate-fade-slide-in.done .in,
+.animate-fade-slide-in.done .in {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in .has-mask-reverse:after,
+.animate-fade-slide-in .has-mask-reverse:after {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out; }
+
+.animate-fade-slide-in.done .has-mask-reverse:after,
+.animate-fade-slide-in.done .has-mask-reverse:after {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in .out,
+.animate-fade-slide-in .out {
+  -ms-transform: scale3d(0, 0, 1);
+  -webkit-transform: scale3d(0, 0, 1);
+  transform: scale3d(0, 0, 1); }
+
+/* Motion: Slide In Right
+==================================*/
+.animate-fade-slide-in-right .item,
+.animate-fade-slide-in-right .item {
+  visibility: hidden; }
+
+.animate-fade-slide-in-right .item,
+.animate-fade-slide-in-right .item {
+  -ms-transform: scale3d(0.8, 0, 1);
+  -webkit-transform: scale3d(0.8, 0, 1);
+  transform: scale3d(0.8, 0, 1);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+
+.animate-fade-slide-in-right .item-bg-image > img.background,
+.animate-fade-slide-in-right .item-bg-image > img.background {
+  box-shadow: none;
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1); }
+
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done > *,
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done > * {
+  -ms-transform: translate3d(0, 0, 0);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done .item,
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done .item {
+  visibility: visible; }
+
+.animate-fade-slide-in-right .item,
+.animate-fade-slide-in-right .item {
+  visibility: hidden; }
+
+.animate-fade-slide-in-right .item,
+.animate-fade-slide-in-right .item {
+  -ms-transform: translate3d(250px, 250px, 0);
+  -webkit-transform: translate3d(250px, 250px, 0);
+  transform: translate3d(250px, 250px, 0);
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: transform 0.5s cubic-bezier(0.55, 0, 0.1, 1);
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done,
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done {
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done,
+.animate-fade-slide-in-right .in,
+.animate-fade-slide-in-right.done {
+  visibility: visible; }
+
+.animate-fade-slide-in-right.done .in,
+.animate-fade-slide-in-right.done .in {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in-right .has-mask-reverse:after,
+.animate-fade-slide-in-right .has-mask-reverse:after {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out; }
+
+.animate-fade-slide-in-right.done .has-mask-reverse:after,
+.animate-fade-slide-in-right.done .has-mask-reverse:after {
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.animate-fade-slide-in-right .out,
+.animate-fade-slide-in-right .out {
+  -ms-transform: scale3d(0, 0, 1);
+  -webkit-transform: scale3d(0, 0, 1);
+  transform: scale3d(0, 0, 1); }
+
+/* Motion: Slide Up
+==================================*/
+.slide-up,
+.slide-up,
+.hero.slide-up {
+  height: 100%;
+  overflow: hidden;
+  text-align: center; }
+
+.slide-up {
+  -webkit-transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  transition: all 1s cubic-bezier(0.55, 0, 0.1, 1);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+
+.slide-up *,
+.slide-up *,
+.hero.slide-up * {
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.hero.slide-up + .mid-bar,
+.slide-up + .mid-bar,
+.slide-up + .mid-bar {
+  height: 100%;
+  opacity: 0.7;
+  filter: alpha(opacity=70);
+  -webkit-transform: translate3d(100%, -240px, 0);
+  transform: translate3d(100%, -240px, 0); }
+
+/*!
+ * Waves v0.5.4
+ * http://fian.my.id/Waves 
+ * 
+ * Copyright 2014 Alfiana E. Sibuea and other contributors 
+ * Forked by Zach Fitzgerald and other contributors for Ionic Material
+ *
+ * Released under the MIT license 
+ * https://github.com/fians/Waves/blob/master/LICENSE 
+ *
+ */
+.ink, .button-fab, .button-flat, .button-raised, .button-clear, .popup .button {
+  position: relative;
+  cursor: pointer;
+  /*display: inline-block;*/
+  overflow: hidden;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  -webkit-tap-highlight-color: transparent;
+  -webkit-transition: all 0.3s ease-out;
+  -moz-transition: all 0.3s ease-out;
+  -o-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out; }
+
+.ink-ripple {
+  position: absolute;
+  border-radius: 50%;
+  width: 100px;
+  height: 100px;
+  margin-top: -50px;
+  margin-left: -50px;
+  opacity: 0;
+  background-color: rgba(255, 255, 255, 0.4);
+  -webkit-transition: all 0.5s ease-out;
+  -moz-transition: all 0.5s ease-out;
+  -o-transition: all 0.5s ease-out;
+  transition: all 0.5s ease-out;
+  -webkit-transition-property: -webkit-transform, opacity;
+  -moz-transition-property: -moz-transform, opacity;
+  -o-transition-property: -o-transform, opacity;
+  transition-property: transform, opacity;
+  -webkit-transform: scale(0);
+  -moz-transform: scale(0);
+  -ms-transform: scale(0);
+  -o-transform: scale(0);
+  transform: scale(0);
+  pointer-events: none; }
+
+.ink-notransition {
+  -webkit-transition: none !important;
+  -moz-transition: none !important;
+  -o-transition: none !important;
+  transition: none !important; }
+
+.button-fab,
+.button-flat,
+.button-clear,
+.button-raised,
+.ink-button,
+.ink-circle {
+  -webkit-transform: translateZ(0);
+  -moz-transform: translateZ(0);
+  -ms-transform: translateZ(0);
+  -o-transform: translateZ(0);
+  transform: translateZ(0); }
+
+.button-fab.activated,
+.button-flat.activated,
+.button-raised.activated,
+.button-clear.activated,
+.ink-button.activated,
+.ink.activated,
+.ink-circle.activated,
+.popup .button.activated,
+.button-fab:active,
+.button-flat:active,
+.button-raised:active,
+.button-clear:active,
+.ink-button:active,
+.ink:active,
+.ink-circle:active,
+.popup .button:active {
+  -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); }
+
+.ink-button,
+.ink-button:visited,
+.ink-button:link,
+.button-fab,
+.button-fab:visited,
+.button-fab:link,
+.button-flat,
+.button-flat:visited,
+.button-flat:link,
+.button-raised,
+.button-raised:visited,
+.button-raised:link,
+.button-clear,
+.button-clear:visited,
+.button-clear:link,
+.ink-button-input {
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  border: none;
+  outline: none;
+  /*  color: inherit; */
+  /*  background-color: rgba(0, 0, 0, 0); */
+  font-size: 14px;
+  text-align: center;
+  text-decoration: none;
+  z-index: 1; }
+
+.ink-button {
+  padding: 10px 15px;
+  border-radius: 2px; }
+
+.ink-button-input {
+  margin: 0;
+  padding: 10px 15px; }
+
+.ink-input-wrapper {
+  border-radius: 2px;
+  vertical-align: bottom; }
+
+.ink-input-wrapper.ink-button {
+  padding: 0; }
+
+.ink-input-wrapper .ink-button-input {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 1; }
+
+.ink-circle {
+  text-align: center;
+  width: 2.5em;
+  height: 2.5em;
+  line-height: 2.5em;
+  border-radius: 50%; }
+
+.ink-float {
+  -webkit-mask-image: none;
+  -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12);
+  box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); }
+
+.ink-float:active {
+  -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3);
+  box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); }
+
+.ink-block {
+  display: block; }
+
+.ink-ripple {
+  z-index: 0;
+  /* Firefox Bug: link not triggered unless -1 z-index */ }
+
+/* Handled elsewhere
+.button-fab,.button-raised,.button-flat,.ink-circle,.list a.item {
+    -webkit-mask-image: none;
+}
+*/
+.button-clear .ink-ripple,
+*[class$="-clear"] > .ink-ripple,
+*[class$="-light"] > .ink-ripple,
+*[class$="-stable"] > .ink-ripple,
+*[class$="-100"] > .ink-ripple,
+.list .ink-ripple,
+.ink-dark .ink-ripple {
+  background-color: rgba(0, 0, 0, 0.2); }
+
+.tab-item {
+  position: relative;
+  /* for Ink */ }
+
+/* Ionic Overrides
+==================================*/
+* {
+  font-family: "RobotoDraft","Roboto","Helvetica Neue", "Segoe UI", sans-serif; }
+
+.rounded {
+  border-radius: 4px; }
+
+a {
+  cursor: pointer; }
+
+.has-header.expanded {
+  /* Expanded modifier */
+  top: 76px; }
+
+/* Bar Overrides
+==================================*/
+.bar {
+  border-bottom: none;
+  padding: 0; }
+
+.bar .button {
+  min-height: 44px;
+  min-width: 44px;
+  max-width: 48px;
+  margin-bottom: 0;
+  max-height: 44px;
+  width: 48px; }
+
+.bar .title + .buttons.buttons-right {
+  right: 0;
+  top: 0; }
+
+/* Title Overrides
+==================================*/
+.title-left,
+.title.title-left {
+  left: 48px; }
+
+.title-right,
+.title.title-right {
+  left: 48px; }
+
+/* Background Colors
+==================================*/
+.positive-bg,
+.button-positive,
+.bar .button-positive,
+.header-positive,
+.button-bar-positive,
+.bar-positive,
+.positive-border,
+.positive-bg:hover,
+.bar .button-positive:hover,
+.button-positive:hover,
+.header-positive:hover,
+.button-bar-positive:hover,
+.bar-positive:hover,
+.positive-border:hover,
+.positive-bg:active,
+.bar .button-positive:active,
+.button-positive:active,
+.header-positive:active,
+.button-bar-positive:active,
+.bar-positive:active,
+.positive-border:active,
+.positive-bg.activated,
+.bar .button-positive.activated,
+.button-positive.activated,
+.header-positive.activated,
+.button-bar-positive.activated,
+.bar-positive.activated,
+.positive-border.activated {
+  background-color: #3F51B5;
+  color: #fff; }
+
+.positive-900-bg,
+.button-positive-900,
+.bar .button-positive-900,
+.header-positive-900,
+.button-bar-positive-900,
+.bar-positive-900,
+.positive-900-border,
+.positive-900-bg:hover,
+.button-positive-900:hover,
+.bar .button-positive-900:hover,
+.header-positive-900:hover,
+.button-bar-positive-900:hover,
+.bar-positive-900:hover,
+.positive-900-border:hover,
+.positive-900-bg:active,
+.bar .button-positive-900:active,
+.button-positive-900:active,
+.header-positive-900:active,
+.button-bar-positive-900:active,
+.bar-positive-900:active,
+.positive-900-border:active,
+.positive-900-bg.activated,
+.button-positive-900.activated,
+.bar .button-positive-900.activated,
+.header-positive-900.activated,
+.button-bar-positive-900.activated,
+.bar-positive-900.activated,
+.positive-900-border.activated {
+  background-color: #1A237E;
+  color: #fff; }
+
+.positive-100-bg,
+.button-positive-100,
+.bar .button-positive-100,
+.header-positive-100,
+.button-bar-positive-100,
+.bar-positive-100,
+.positive-100-border,
+.positive-100-bg:hover,
+.button-positive-100:hover,
+.bar .button-positive-100:hover,
+.header-positive-100:hover,
+.button-bar-positive-100:hover,
+.bar-positive-100:hover,
+.positive-100-border:hover,
+.positive-100-bg:active,
+.button-positive-100:active,
+.bar .button-positive-100:active,
+.header-positive-100:active,
+.button-bar-positive-100:active,
+.bar-positive-100:active,
+.positive-100-border:active,
+.positive-100-bg.activated,
+.button-positive-100.activated,
+.bar .button-positive-100.activated,
+.header-positive-100.activated,
+.button-bar-positive-100.activated,
+.bar-positive-100.activated,
+.positive-100-border.activated {
+  background-color: #C5CAE9;
+  color: #fff; }
+
+.calm-bg,
+.button-calm,
+.bar .button-calm,
+.header-calm,
+.button-bar-calm,
+.bar-calm,
+.calm-border,
+.calm-bg:hover,
+.button-calm:hover,
+.bar .button-calm:hover,
+.header-calm:hover,
+.button-bar-calm:hover,
+.bar-calm:hover,
+.calm-border:hover,
+.calm-bg:active,
+.button-calm:active,
+.bar .button-calm:active,
+.header-calm:active,
+.button-bar-calm:active,
+.bar-calm:active,
+.calm-border:active,
+.calm-bg.activated,
+.button-calm.activated,
+.bar .button-calm.activated,
+.header-calm.activated,
+.button-bar-calm.activated,
+.bar-calm.activated,
+.calm-border.activated {
+  background-color: #2196F3;
+  color: #fff; }
+
+.calm-900-bg,
+.button-calm-900,
+.bar .button-calm-900,
+.header-calm-900,
+.button-bar-calm-900,
+.bar-calm-900,
+.calm-900-border,
+.calm-900-bg:hover,
+.button-calm-900:hover,
+.bar .button-calm-900:hover,
+.header-calm-900:hover,
+.button-bar-calm-900:hover,
+.bar-calm-900:hover,
+.calm-900-border:hover,
+.calm-900-bg:active,
+.button-calm-900:active,
+.bar .button-calm-900:active,
+.header-calm-900:active,
+.button-bar-calm-900:active,
+.bar-calm-900:active,
+.calm-900-border:active,
+.calm-900-bg.activated,
+.button-calm-900.activated,
+.bar .button-calm-900.activated,
+.header-calm-900.activated,
+.button-bar-calm-900.activated,
+.bar-calm-900.activated,
+.calm-900-border.activated {
+  background-color: #0D47A1;
+  color: #fff; }
+
+.calm-100-bg,
+.button-calm-100,
+.bar .button-calm-100,
+.header-calm-100,
+.button-bar-calm-100,
+.bar-calm-100,
+.calm-100-border,
+.calm-100-bg:hover,
+.button-calm-100:hover,
+.bar .button-calm-100:hover,
+.header-calm-100:hover,
+.button-bar-calm-100:hover,
+.bar-calm-100:hover,
+.calm-100-border:hover,
+.calm-100-bg:active,
+.button-calm-100:active,
+.bar .button-calm-100:active,
+.header-calm-100:active,
+.button-bar-calm-100:active,
+.bar-calm-100:active,
+.calm-100-border:active,
+.calm-100-bg.activated,
+.button-calm-100.activated,
+.bar .button-calm-100.activated,
+.header-calm-100.activated,
+.button-bar-calm-100.activated,
+.bar-calm-100.activated,
+.calm-100-border.activated {
+  background-color: #BBDEFB;
+  color: #fff; }
+
+.royal-bg,
+.button-royal,
+.bar .button-royal,
+.header-royal,
+.button-bar-royal,
+.bar-royal,
+.royal-border,
+.royal-bg:hover,
+.button-royal:hover,
+.bar .button-royal:hover,
+.header-royal:hover,
+.button-bar-royal:hover,
+.bar-royal:hover,
+.royal-border:hover,
+.royal-bg:active,
+.button-royal:active,
+.bar .button-royal:active,
+.header-royal:active,
+.button-bar-royal:active,
+.bar-royal:active,
+.royal-border:active,
+.royal-bg.activated,
+.button-royal.activated,
+.bar .button-royal.activated,
+.header-royal.activated,
+.button-bar-royal.activated,
+.bar-royal.activated,
+.royal-border.activated {
+  background-color: #673AB7;
+  color: #fff; }
+
+.royal-900-bg,
+.button-royal-900,
+.bar .button-royal-900,
+.header-royal-900,
+.button-bar-royal-900,
+.bar-royal-900,
+.royal-900-border,
+.royal-900-bg:hover,
+.button-royal-900:hover,
+.bar .button-royal-900:hover,
+.header-royal-900:hover,
+.button-bar-royal-900:hover,
+.bar-royal-900:hover,
+.royal-900-border:hover,
+.royal-900-bg:active,
+.button-royal-900:active,
+.bar .button-royal-900:active,
+.header-royal-900:active,
+.button-bar-royal-900:active,
+.bar-royal-900:active,
+.royal-900-border:active,
+.royal-900-bg.activated,
+.button-royal-900.activated,
+.bar .button-royal-900.activated,
+.header-royal-900.activated,
+.button-bar-royal-900.activated,
+.bar-royal-900.activated,
+.royal-900-border.activated {
+  background-color: #311B92;
+  color: #fff; }
+
+.royal-100-bg,
+.button-royal-100,
+.bar .button-royal-100,
+.header-royal-100,
+.button-bar-royal-100,
+.bar-royal-100,
+.royal-100-border,
+.royal-100-bg:hover,
+.button-royal-100:hover,
+.bar .button-royal-100:hover,
+.header-royal-100:hover,
+.button-bar-royal-100:hover,
+.bar-royal-100:hover,
+.royal-100-border:hover,
+.royal-100-bg:active,
+.button-royal-100:active,
+.bar .button-royal-100:active,
+.header-royal-100:active,
+.button-bar-royal-100:active,
+.bar-royal-100:active,
+.royal-100-border:active,
+.royal-100-bg.activated,
+.button-royal-100.activated,
+.bar .button-royal-100.activated,
+.header-royal-100.activated,
+.button-bar-royal-100.activated,
+.bar-royal-100.activated,
+.royal-100-border.activated {
+  background-color: #D1C4E9;
+  color: #fff; }
+
+.balanced-bg,
+.button-balanced,
+.bar .button-balanced,
+.header-balanced,
+.button-bar-balanced,
+.bar-balanced,
+.balanced-border,
+.balanced-bg:hover,
+.button-balanced:hover,
+.bar .button-balanced:hover,
+.header-balanced:hover,
+.button-bar-balanced:hover,
+.bar-balanced:hover,
+.balanced-border:hover,
+.balanced-bg:active,
+.button-balanced:active,
+.bar .button-balanced:active,
+.header-balanced:active,
+.button-bar-balanced:active,
+.bar-balanced:active,
+.balanced-border:active,
+.balanced-bg.activated,
+.button-balanced.activated,
+.bar .button-balanced.activated,
+.header-balanced.activated,
+.button-bar-balanced.activated,
+.bar-balanced.activated,
+.balanced-border.activated {
+  background-color: #4CAF50;
+  color: #fff; }
+
+.balanced-900-bg,
+.button-balanced-900,
+.bar .button-balanced-900,
+.header-balanced-900,
+.button-bar-balanced-900,
+.bar-balanced-900,
+.balanced-900-border,
+.balanced-900-bg:hover,
+.button-balanced-900:hover,
+.bar .button-balanced-900:hover,
+.header-balanced-900:hover,
+.button-bar-balanced-900:hover,
+.bar-balanced-900:hover,
+.balanced-900-border:hover,
+.balanced-900-bg:active,
+.button-balanced-900:active,
+.bar .button-balanced-900:active,
+.header-balanced-900:active,
+.button-bar-balanced-900:active,
+.bar-balanced-900:active,
+.balanced-900-border:active,
+.balanced-900-bg.activated,
+.button-balanced-900.activated,
+.bar .button-balanced-900.activated,
+.header-balanced-900.activated,
+.button-bar-balanced-900.activated,
+.bar-balanced-900.activated,
+.balanced-900-border.activated {
+  background-color: #1B5E20;
+  color: #fff; }
+
+.balanced-100-bg,
+.button-balanced-100,
+.bar .button-balanced-100,
+.header-balanced-100,
+.button-bar-balanced-100,
+.bar-balanced-100,
+.balanced-100-border,
+.balanced-100-bg:hover,
+.button-balanced-100:hover,
+.bar .balanced-100-bg:hover,
+.header-balanced-100:hover,
+.button-bar-balanced-100:hover,
+.bar-balanced-100:hover,
+.balanced-100-border:hover,
+.balanced-100-bg:active,
+.button-balanced-100:active,
+.bar .button-balanced-100:active,
+.header-balanced-100:active,
+.button-bar-balanced-100:active,
+.bar-balanced-100:active,
+.balanced-100-border:active,
+.balanced-100-bg.activated,
+.button-balanced-100.activated,
+.bar .button-balanced-100.activated,
+.header-balanced-100.activated,
+.button-bar-balanced-100.activated,
+.bar-balanced-100.activated,
+.balanced-100-border.activated {
+  background-color: #C8E6C9;
+  color: #fff; }
+
+.energized-bg,
+.button-energized,
+.bar .button-energized,
+.header-energized,
+.button-bar-energized,
+.bar-energized,
+.energized-border,
+.energized-bg:hover,
+.button-energized:hover,
+.bar .button-energized:hover,
+.header-energized:hover,
+.button-bar-energized:hover,
+.bar-energized:hover,
+.energized-border:hover,
+.energized-bg:active,
+.button-energized:active,
+.bar .button-energized:active,
+.header-energized:active,
+.button-bar-energized:active,
+.bar-energized:active,
+.energized-border:active,
+.energized-bg.activated,
+.button-energized.activated,
+.bar .button-energized.activated,
+.header-energized.activated,
+.button-bar-energized.activated,
+.bar-energized.activated,
+.energized-border.activated {
+  background-color: #FF9800;
+  color: #fff; }
+
+.energized-900-bg,
+.button-energized-900,
+.bar .button-energized-900,
+.header-energized-900,
+.button-bar-energized-900,
+.bar-energized-900,
+.energized-900-border,
+.energized-900-bg:hover,
+.button-energized-900:hover,
+.bar .button-energized-900:hover,
+.header-energized-900:hover,
+.button-bar-energized-900:hover,
+.bar-energized-900:hover,
+.energized-900-border:hover,
+.energized-900-bg:active,
+.button-energized-900:active,
+.bar .button-energized-900:active,
+.header-energized-900:active,
+.button-bar-energized-900:active,
+.bar-energized-900:active,
+.energized-900-border:active,
+.energized-900-bg.activated,
+.button-energized-900.activated,
+.bar .button-energized-900.activated,
+.header-energized-900.activated,
+.button-bar-energized-900.activated,
+.bar-energized-900.activated,
+.energized-900-border.activated {
+  background-color: #E65100;
+  color: #fff; }
+
+.energized-100-bg,
+.button-energized-100,
+.bar .button-energized-100,
+.header-energized-100,
+.button-bar-energized-100,
+.bar-energized-100,
+.energized-100-border,
+.energized-100-bg:hover,
+.button-energized-100:hover,
+.bar .button-energized-100:hover,
+.header-energized-100:hover,
+.button-bar-energized-100:hover,
+.bar-energized-100:hover,
+.energized-100-border:hover,
+.energized-100-bg:active,
+.button-energized-100:active,
+.bar .button-energized-100:active,
+.header-energized-100:active,
+.button-bar-energized-100:active,
+.bar-energized-100:active,
+.energized-100-border:active,
+.energized-100-bg.activated,
+.button-energized-100.activated,
+.bar .button-energized-100.activated,
+.header-energized-100.activated,
+.button-bar-energized-100.activated,
+.bar-energized-100.activated,
+.energized-100-border.activated {
+  background-color: #FFE0B2; }
+
+.assertive-bg,
+.button-assertive,
+.bar .button-assertive,
+.header-assertive,
+.button-bar-assertive,
+.bar-assertive,
+.assertive-border,
+.assertive-bg:hover,
+.button-assertive:hover,
+.bar .button-assertive:hover,
+.header-assertive:hover,
+.button-bar-assertive:hover,
+.bar-assertive:hover,
+.assertive-border:hover,
+.assertive-bg:active,
+.button-assertive:active,
+.bar .button-assertive:active,
+.header-assertive:active,
+.button-bar-assertive:active,
+.bar-assertive:active,
+.assertive-border:active,
+.assertive-bg.activated,
+.button-assertive.activated,
+.bar .button-assertive.activated,
+.header-assertive.activated,
+.button-bar-assertive.activated,
+.bar-assertive.activated,
+.assertive-border.activated {
+  background-color: #F44336;
+  color: #fff; }
+
+.assertive-900-bg,
+.button-assertive-900,
+.bar .button-assertive-900,
+.header-assertive-900,
+.button-bar-assertive-900,
+.bar-assertive-900,
+.assertive-900-border,
+.assertive-900-bg:hover,
+.button-assertive-900:hover,
+.bar .button-assertive-900:hover,
+.header-assertive-900:hover,
+.button-bar-assertive-900:hover,
+.bar-assertive-900:hover,
+.assertive-900-border:hover,
+.assertive-900-bg:active,
+.button-assertive-900:active,
+.bar .button-assertive-900:active,
+.header-assertive-900:active,
+.button-bar-assertive-900:active,
+.bar-assertive-900:active,
+.assertive-900-border:active,
+.assertive-900-bg.activated,
+.button-assertive-900.activated,
+.bar .button-assertive-900.activated,
+.header-assertive-900.activated,
+.button-bar-assertive-900.activated,
+.bar-assertive-900.activated,
+.assertive-900-border.activated {
+  background-color: #B71C1C;
+  color: #fff; }
+
+.assertive-100-bg,
+.button-assertive-100,
+.bar .button-assertive-100,
+.header-assertive-100,
+.button-bar-assertive-100,
+.bar-assertive-100,
+.assertive-100-border,
+.assertive-100-bg:hover,
+.button-assertive-100:hover,
+.bar .button-assertive-100:hover,
+.header-assertive-100:hover,
+.button-bar-assertive-100:hover,
+.bar-assertive-100:hover,
+.assertive-100-border:hover,
+.assertive-100-bg:active,
+.button-assertive-100:active,
+.bar .button-assertive-100:active,
+.header-assertive-100:active,
+.button-bar-assertive-100:active,
+.bar-assertive-100:active,
+.assertive-100-border:active,
+.assertive-100-bg.activated,
+.bar .button-assertive-100.activated,
+.button-assertive-100.activated,
+.header-assertive-100.activated,
+.button-bar-assertive-100.activated,
+.bar-assertive-100.activated,
+.assertive-100-border.activated {
+  background-color: #FFCDD2;
+  color: #fff; }
+
+.stable-bg,
+.button-stable,
+.bar .button-stable,
+.header-stable,
+.button-bar-stable,
+.bar-stable,
+.stable-border,
+.stable-bg:hover,
+.button-stable:hover,
+.bar .button-stable:hover,
+.header-stable:hover,
+.button-bar-stable:hover,
+.bar-stable:hover,
+.stable-border:hover,
+.stable-bg:active,
+.button-stable:active,
+.bar .button-stable:active,
+.header-stable:active,
+.button-bar-stable:active,
+.bar-stable:active,
+.stable-border:active,
+.stable-bg.activated,
+.button-stable.activated,
+.bar .button-stable.activated,
+.header-stable.activated,
+.button-bar-stable.activated,
+.bar-stable.activated,
+.stable-border.activated {
+  background-color: #E0E0E0;
+  color: #fff; }
+
+/* Text Colors
+==================================*/
+.positive,
+.positive *,
+*.positive,
+.positive:hover,
+.positive:hover *,
+*.positive:hover,
+.positive:active,
+.positive:active *,
+*.positive:active {
+  color: #3F51B5; }
+
+.positive-900,
+.positive-900 *,
+*.positive-900,
+.positive-900:hover,
+.positive-900:hover *,
+*.positive-900:hover,
+.positive-900:active,
+.positive-900:active *,
+*.positive-900:active {
+  color: #3F51B5; }
+
+.positive-100,
+.positive-100 *,
+*.positive-100,
+.positive-100:hover,
+.positive-100:hover *,
+*.positive-100:hover,
+.positive-100:active,
+.positive-100:active *,
+*.positive-100:active {
+  color: #C5CAE9; }
+
+.calm-100,
+.calm-100 *,
+*.calm-100,
+.calm-100:hover,
+.calm-100:hover *,
+*.calm-100:hover,
+.calm-100:active,
+.calm-100:active *,
+*.calm-100:active {
+  color: #2196F3; }
+
+.calm-900,
+.calm-900 *,
+*.calm-900,
+.calm-900:hover,
+.calm-900:hover *,
+*.calm-900:hover,
+.calm-900:active,
+.calm-900:active *,
+*.calm-900:active {
+  color: #0D47A1; }
+
+.calm-100,
+.calm-100 *,
+*.calm-100,
+.calm-100:hover,
+.calm-100:hover *,
+*.calm-100:hover,
+.calm-100:active,
+.calm-100:active *,
+*.calm-100:active {
+  color: #BBDEFB; }
+
+.royal,
+.royal *,
+*.royal,
+.royal:hover,
+.royal:hover *,
+*.royal:hover,
+.royal:active,
+.royal:active *,
+*.royal:active {
+  color: #673AB7; }
+
+.royal-900,
+.royal-900 *,
+*.royal-900,
+.royal-900:hover,
+.royal-900:hover *,
+*.royal-900:hover,
+.royal-900:active,
+.royal-900:active *,
+*.royal-900:active {
+  color: #311B92; }
+
+.royal-100,
+.royal-100 *,
+*.royal-100,
+.royal-100:hover,
+.royal-100:hover *,
+*.royal-100:hover,
+.royal-100:active,
+.royal-100:active *,
+*.royal-100:active {
+  color: #D1C4E9; }
+
+.balanced,
+.balanced *,
+*.balanced,
+.balanced:hover,
+.balanced:hover *,
+*.balanced:hover,
+.balanced:active,
+.balanced:active *,
+*.balanced:active {
+  color: #4CAF50; }
+
+.balanced-900,
+.balanced-900 *,
+*.balanced-900,
+.balanced-900:hover,
+.balanced-900:hover *,
+*.balanced-900:hover,
+.balanced-900:active,
+.balanced-900:active *,
+*.balanced-900:active {
+  color: #1B5E20; }
+
+.balanced-100,
+.balanced-100 *,
+*.balanced-100,
+.balanced-100:hover,
+.balanced-100:hover *,
+*.balanced-100:hover,
+.balanced-100:active,
+.balanced-100:active *,
+*.balanced-100:active {
+  color: #C8E6C9; }
+
+.energized,
+.energized *,
+*.energized,
+.energized:hover,
+.energized:hover *,
+*.energized:hover,
+.energized:active,
+.energized:active *,
+*.energized:active {
+  color: #FF9800; }
+
+.energized-900,
+.energized-900 *,
+*.energized-900,
+.energized-900:hover,
+.energized-900:hover *,
+*.energized-900:hover,
+.energized-900:active,
+.energized-900:active *,
+*.energized-900:active {
+  color: #E65100; }
+
+.energized-100,
+.energized-100 *,
+*.energized-100,
+.energized-100:hover,
+.energized-100:hover *,
+*.energized-100:hover,
+.energized-100:active,
+.energized-100:active *,
+*.energized-100:active {
+  color: #FFE0B2; }
+
+.assertive,
+.assertive *,
+*.assertive,
+.assertive:hover,
+.assertive:hover *,
+*.assertive:hover,
+.assertive:active,
+.assertive:active *,
+*.assertive:active {
+  color: #F44336; }
+
+.assertive-900,
+.assertive-900 *,
+*.assertive-900,
+.assertive-900:hover,
+.assertive-900:hover *,
+*.assertive-900:hover,
+.assertive-900:active,
+.assertive-900:active *,
+*.assertive-900:active {
+  color: #B71C1C; }
+
+.assertive-100,
+.assertive-100 *,
+*.assertive-100,
+.assertive-100:hover,
+.assertive-100:hover *,
+*.assertive-100:hover,
+.assertive-100:active,
+.assertive-100:active *,
+*.assertive-100:active {
+  color: #FFCDD2; }
+
+.stable,
+.stable *,
+*.stable,
+.stable:hover,
+.stable:hover *,
+*.stable:hover,
+.stable:active,
+.stable:active *,
+*.stable:active {
+  color: #E0E0E0; }
+
+.light,
+.light *,
+*.light,
+.light:hover,
+.light:hover *,
+*.light:hover,
+.light:active,
+.light:active *,
+*.light:active {
+  color: #fff; }
+
+.dark,
+.dark *,
+*.dark,
+.dark:hover,
+.dark:hover *,
+*.dark:hover,
+.dark:active,
+.dark:active *,
+*.dark:active {
+  color: #444; }
+
+.light-border {
+  border-color: #ddd; }
+
+.navbar-default .navbar-nav > li > a {
+  margin: 0;
+  padding-right: 26px;
+  padding-left: 26px;
+  border-top: 3px solid transparent;
+  color: #BFD5C9;
+  opacity: 1; }
+
+/* Mid-Bar
+==================================*/
+.mid-bar {
+  padding: 16px; }
+
+.mid-bar h1,
+.mid-bar h2,
+.mid-bar h3,
+.mid-bar h4,
+.mid-bar h5,
+.mid-bar h6 {
+  color: #fff;
+  margin-bottom: 5px; }
+
+.mid-bar p {
+  color: rgba(255, 255, 255, 0.5);
+  margin-bottom: 0; }
+
+/* Item
+==================================*/
+.item-avatar,
+.item-avatar .item-content,
+.item-avatar-left,
+.item-avatar-left .item-content,
+.card > .item-avatar {
+  padding-left: 95px; }
+
+.item,
+.item-complex .item-content,
+.item-radio .item-content {
+  background-color: transparent; }
+
+.dark-bg h2,
+.item.dark-bg h2 {
+  color: #fff; }
+
+.tabs-striped .tabs {
+  box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.26); }
+
+.bar .button.button-clear {
+  color: #fff; }
+
+.bar .button.button-icon .icon:before,
+.bar .button.button-icon.icon-left:before,
+.bar .button.button-icon.icon-right:before,
+.bar .button.button-icon:before {
+  vertical-align: top;
+  font-size: 24px; }
+
+.menu {
+  background-color: transparent; }
+
+.button-icon.button.active,
+.button-icon.button.activated {
+  opacity: initial; }
+
+/* Popover
+==================================*/
+.popover {
+  opacity: 0;
+  position: absolute;
+  right: 8px;
+  transform: translate(50%, -50%) scale(0, 0);
+  transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
+  top: 8px; }
+
+.popover.ng-enter {
+  opacity: 1;
+  transform: translate(0, -14px) scale(1, 1);
+  transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; }
+
+.popover.ng-leave {
+  opacity: 0;
+  transform: translate(50%, -50%) scale(0, 0);
+  transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out; }
+
+/* Button
+==================================*/
+.button {
+  overflow: hidden !important; }
diff --git a/www/lib/ionic/css/ionic.material.min.css b/www/lib/ionic/css/ionic.material.min.css
new file mode 100644
index 000000000..7b6eb5cb9
--- /dev/null
+++ b/www/lib/ionic/css/ionic.material.min.css
@@ -0,0 +1,12 @@
+.item-md-label{display:block;background:0 0;box-shadow:none;margin-left:12px;margin-right:12px;padding:30px 0 0}.item-md-label .input-label{position:absolute;z-index:2;-webkit-transform:translate3d(0,-30px,0) scale(1);transform:translate3d(0,-30px,0) scale(1);-webkit-transition:all .2s ease;transition:all .2s ease;color:#fff;opacity:.5;filter:alpha(opacity=50);-webkit-transform-origin:0;-ms-transform-origin:0;transform-origin:0}.item-md-label input{background-color:rgba(0,0,0,.6);bottom:0;color:#fff;letter-spacing:.25rem;padding:20px 10px;position:relative;z-index:1}.item-md-label .highlight{position:absolute;bottom:0;height:2px;left:0;width:100%;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);-webkit-transition:all .15s ease;transition:all .15s ease;z-index:1}.item-md-label .highlight-light{background:#fff}.item-md-label .highlight-stable{background:#f8f8f8}.item-md-label .highlight-positive{background:#387ef5}.item-md-label .highlight-calm{background:#11c1f3}.item-md-label .highlight-balanced{background:#33cd5f}.item-md-label .highlight-energized{background:#ffc900}.item-md-label .highlight-assertive{background:#ef473a}.item-md-label .highlight-royal{background:#886aea}.item-md-label .highlight-dark{background:#444}.item-md-label .input-label{letter-spacing:.25rem;padding:0 10px}.item-md-label input.used~.input-label,.item-md-label input:focus~.input-label{font-weight:700;opacity:.7;filter:alpha(opacity=70);padding:0;text-transform:uppercase;-webkit-transform:translate3d(0,-60px,0) scale(.9);transform:translate3d(0,-60px,0) scale(.9)}.item-md-label input:focus~.highlight{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bar.bar-header.expanded,.expanded .bar.bar-header{height:75px}.bar.bar-header.expanded .title,.expanded.bar.bar-header .title{bottom:0;top:initial;padding-left:16px}.bar.bar-header.expanded .title.fab-left,.expanded .bar.bar-header .title.fab-left{bottom:0;left:90px;position:absolute;right:initial;top:initial}.bar.bar-header.expanded .title.fab-right,.expanded .bar.bar-header .title.fab-right{bottom:0;left:4px;position:absolute;top:initial;right:initial}.bar.bar-header.expanded+.button-fab,.expanded .bar.bar-header+.button-fab{top:50px}.bar.bar-header.expanded.push-down,.expanded .bar.bar-header.push-down{height:44px;overflow:hidden}.bar.bar-header.expanded,.expanded .bar.bar-header{-webkit-transition:height 1s cubic-bezier(.55,0,.1,1);transition:height 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bar.bar-header.expanded+.button-fab,.expanded .bar.bar-header+.button-fab{-webkit-transition:all 1.1s cubic-bezier(.55,0,.1,1);transition:all 1.1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1)}.bar.bar-header.expanded.push-down+.button-fab,.expanded .bar.bar-header.push-down+.button-fab{top:0;-webkit-transform:translate3d(-100px,-100px,0) scale(2.5);transform:translate3d(-100px,-100px,0) scale(2.5)}.bar.bar-header.expanded.push-down .title,.expanded .bar.bar-header.push-down .title{opacity:0;filter:alpha(opacity=0);left:initial;right:initial}.bar.bar-header.expanded .title,.expanded .bar.bar-header .title{opacity:1;filter:alpha(opacity=100);-webkit-transition:all 2s cubic-bezier(.55,0,.1,1);transition:all 2s cubic-bezier(.55,0,.1,1);bottom:0;left:42px!important;top:initial}.bar.bar-header.expanded.has-header-fab-left .title,.expanded.has-header-fab-left .bar.bar-header .title{left:76px!important}.bar{z-index:2;font-size:1.3em;width:100%;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar .button{z-index:3}.bar .no-text span.back-text{display:none}.bar .title sup{opacity:.7}.bar.bar-header .button+.title{text-align:left;left:35px;line-height:46px}.button-bar{box-shadow:0 1px 3px rgba(0,0,0,.15)}.button-bar>.button{box-shadow:none}.button-bar>.button .icon:before,.button-bar>.button:before{line-height:initial}.bar-footer .button-fab{position:absolute;top:-26px;bottom:initial}.bar-footer .buttons-left .button-fab{left:8px}.bar-footer .buttons-right .button-fab{right:8px}.bar .button.button-clear{box-shadow:none}.left-buttons .button-fab{left:8px;top:16px}.right-buttons .button-fab{right:8px;top:16px}.fab-left.title-left,.fab-left.title.title-left{left:68px}.bar .button.button-fab,.button.button-fab{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);z-index:9999;width:56px;height:56px;max-height:initial;max-width:initial;border-radius:50%;border-radius:50%;overflow:hidden;padding:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:.3s fade-in-out;transition:.3s fade-in-out;-webkit-transition-property:-webkit-transform,box-shadow;transition-property:transform,box-shadow}.bar .button.button-fab.button-fab-bottom-right,.button.button-fab.button-fab-bottom-right{top:auto;right:16px;bottom:16px;left:auto;position:absolute}.bar .button.button-fab.button-fab-bottom-left,.button.button-fab.button-fab-bottom-left{top:auto;right:auto;bottom:16px;left:16px;position:absolute}.bar .button.button-fab.button-fab-top-right,.button.button-fab.button-fab-top-right{top:32px;right:16px;bottom:auto;left:auto;position:absolute}.bar .button.button-fab.button-fab-top-left,.button.button-fab.button-fab-top-left{top:32px;right:auto;bottom:auto;left:16px;position:absolute}.bar .button.button-fab.button-fab-top-left.expanded,.bar .button.button-fab.button-fab-top-right.expanded,.button.button-fab.button-fab-top-left.expanded,.button.button-fab.button-fab-top-right.expanded{top:48px}.bar .button.button-fab i,.button.button-fab i{font-size:2.5rem;margin-top:0}.bar .button.button-fab.mini,.button.button-fab.mini{width:40px;height:40px}.bar .button.button-fab.mini i,.button.button-fab.mini i{font-size:2rem}.button.button-fab.button-fab-top-left.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(-120px,60px,0);transform:translate3d(-120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-top-right.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(120px,60px,0);transform:translate3d(120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-bottom-left.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(-120px,60px,0);transform:translate3d(-120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.button.button-fab.button-fab-bottom-right.motion{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(120px,60px,0);transform:translate3d(120px,60px,0);-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.bar .button.button-floating,.button.button-floating{display:inline-block;color:#FFF;position:relative;z-index:1;width:37px;height:37px;line-height:37px;padding:0;border-radius:50%;background-clip:padding-box;-webkit-transition:.3s;transition:.3s;cursor:pointer}.bar .button.button-floating i,.button.button-floating i{width:inherit;display:inline-block;text-align:center;color:#FFF;line-height:37px}.bar .button.button-floating.button-large,.button.button-floating.button-large{width:55.5px;height:55.5px}.bar .button.button-floating.button-large i,.button.button-floating.button-large i{line-height:55.5px}.bar .button,.bar .button.button-flat,.bar .button.button-large,.button,.button.button-flat,.button.button-large{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);display:inline-block;height:36px;padding:0 2rem;border-radius:2px;background-clip:padding-box;text-transform:uppercase;border:none;outline:0;-webkit-tap-highlight-color:transparent}.bar .button.button-floating.disabled,.bar .button.button-floating:disabled,.bar .button.button-large.disabled,.bar .button.button-large:disabled,.bar .button.button:disabled,.bar .button.disabled,.bar .button.disabled.button-large,.button.button-floating.disabled,.button.button-floating:disabled,.button.button-large.disabled,.button.button-large:disabled,.button.button:disabled,.button.disabled,.button.disabled.button-large{background-color:#DFDFDF;box-shadow:none;color:#9F9F9F}.bar .button.button-floating.disabled:hover,.bar .button.button-floating:disabled:hover,.bar .button.button-large.disabled:hover,.bar .button.button-large:disabled:hover,.bar .button.button:disabled:hover,.bar .button.disabled.button-large:hover,.bar .button.disabled:hover,.button.button-floating.disabled:hover,.button.button-floating:disabled:hover,.button.button-large.disabled:hover,.button.button-large:disabled:hover,.button.button:disabled:hover,.button.disabled.button-large:hover,.button.disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.bar .button i,.bar .button.button-flat i,.bar .button.button-floating i,.bar .button.button-large i,.button i,.button.button-flat i,.button.button-floating i,.button.button-large i{font-size:1.3rem}.button-bar .button{border-radius:0}.bar .button,.bar .button-large,.button,.button-large{text-decoration:none;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;outline:0;margin:0;white-space:nowrap;text-align:center;text-transform:uppercase;font-weight:500;font-style:inherit;font-variant:inherit;font-size:inherit;text-decoration:none;cursor:pointer;-webkit-transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),-webkit-transform .4s cubic-bezier(.25,.8,.25,1);transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),transform .4s cubic-bezier(.25,.8,.25,1)}.button:focus{outline:0}.button.ng-hide{-webkit-transition:none;transition:none}.button.cornered{border-radius:0}.button.raised{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.button-outline,.button-outline:active,.button-outline:hover{border-style:solid;border-width:1px}.button.button-outline,.button.button-outline.button-assertive,.button.button-outline.button-balanced,.button.button-outline.button-calm,.button.button-outline.button-dark,.button.button-outline.button-energized,.button.button-outline.button-light,.button.button-outline.button-positive,.button.button-outline.button-royal,.button.button-outline.button-stable{border-color:rgba(0,0,0,.1)}.bar .button-flat,.button-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.bar .button.button-flat.disabled,.button.button-flat.disabled{color:#b3b3b3}.bar .button.button-large i,.button.button-large i{font-size:1.6rem}.button-pin-header.button-floating{position:absolute;z-index:1000}.button-pin-header.button-pin-left{left:24px;top:-24px}.button-pin-header.button-pin-right{right:24px;top:-24px}.button:not([disabled]).floating:focus,.button:not([disabled]).floating:hover,.button:not([disabled]).raised:focus,.button:not([disabled]).raised:hover{-webkit-transform:translate3d(0,-1px,0);transform:translate3d(0,-1px,0)}.button.button-flat{box-shadow:none}.button.button-flat,.button.button-flat:active,.button.button-flat:hover{color:#fff}.button.button-clear,.button.button-clear:active,.button.button-clear:hover{background:0 0}.button-block.ink,.button-full.ink{display:block}.card-item.item{border:none;padding-bottom:4px;padding-top:4px}.card-item.item:first-child{padding-top:16px}.card{box-shadow:0 2px 5px 0 rgba(0,0,0,.26);display:block;margin:8px;padding:0;position:relative}.card .image{display:block;margin-top:10px;margin-bottom:5px}.card img{box-shadow:0 2px 5px 0 rgba(0,0,0,.26);display:block;max-width:100%;max-height:initial;position:static}.card.card-gallery img{border:none;box-shadow:none;display:block}.card .card-footer{font-size:90%;opacity:.8;filter:alpha(opacity=80);padding-top:10px}.card>.item{border:none}.card.card-gallery>.item{background:inherit}.card .icon+.icon{padding-left:1rem}.card.animate-fade-in{opacity:0;filter:alpha(opacity=0);-webkit-transform:translate3d(-30px,1px,0);-webkit-transition:all 1s ease-in-out}.card.animate-fade-in.done{opacity:1;filter:alpha(opacity=100);-webkit-transform:translate3d(0,0,0)}.card .item.item-avatar{min-height:88px;padding-left:88px}.hero{background-size:cover;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);color:#fff;height:200px;position:relative;text-align:center;-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);width:100%}.hero .hero-icon{box-shadow:0 0 2px 0 rgba(0,0,0,.26);border-radius:50%;display:inline-block;height:150px;padding:10px 30px;line-height:136px;width:150px}.hero.no-header{height:244px}.hero>.content{bottom:0;position:absolute;text-align:center;width:100%;z-index:1}.hero>.content>.avatar{background-position:center;background-size:cover;border:solid 1px rgba(255,255,255,.8);border-radius:50%;display:inline-block;height:88px;left:auto;margin-bottom:10px;position:relative;width:88px}.hero h1 .hero h2,.hero h3,.hero h4,.hero h5,.hero h6{color:#fff;margin:0}.hero h4{color:rgba(255,255,255,.7);margin:3px 0 16px}.hero h1>a,.hero h2>a,.hero h3>a,.hero h4>a,.hero h5>a,.hero h6>a{text-decoration:none}.hero+.button-bar{border-radius:0;margin-top:0}.hero+.button-bar>.button:first-child,.hero+.button-bar>.button:last-child{border-radius:0}.hero .hero-icon{color:#fff;font-size:96px}.hero .hero-icon+h1{color:#fff;letter-spacing:.15rem}.hero .button,.hero .button.button-flat,.hero .button.button-large{margin:0}.hero h1.title{color:#fff;font-size:23px;margin:0;text-align:left;padding-left:80px;line-height:59px}.hero+.mid-bar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);height:initial;opacity:1;filter:alpha(opacity=100)}.hero>*{-webkit-transition:opacity 2.5s cubic-bezier(.55,0,.1,1);transition:opacity 2.5s cubic-bezier(.55,0,.1,1);opacity:1;filter:alpha(opacity=100)}.item{font-size:14px;width:100%}.item-icon-left .icon{left:16px}.item-icon-right .icon{right:16px}.item-thumbnail-left .item-content .item-image,.item-thumbnail-left .item-content>img:first-child,.item-thumbnail-left .item-image,.item-thumbnail-left>img:first-child{border-radius:50%}.tab-item.activated{height:calc(100% + 3px)}.content+.list{padding-top:0}.list .item{border:none;min-height:48px;text-align:left}.list .item.tabs{padding:initial}.list .item.item-bg-image{min-height:150px}.list .item.item-bg-image>img{height:100%;left:0;max-width:initial;opacity:.65;filter:alpha(opacity=65);position:absolute;top:0;width:100%;z-index:0}.list a.item{opacity:1;filter:alpha(opacity=100)}.list .item.item-bg-image h1,.list .item.item-bg-image h2,.list .item.item-bg-image h3,.list .item.item-bg-image h4,.list .item.item-bg-image h5,.list .item.item-bg-image h6{color:#fff;font-weight:700;position:relative;text-shadow:0 0 3px rgba(0,0,0,.95);z-index:1}.list .item.item-bg-image h2{font-size:24px}.list .item.item-bg-image p{color:#fff;font-size:17px;position:relative;text-shadow:0 0 4px rgba(0,0,0,.95);z-index:1}.item-avatar,.item-avatar .item-content,.item-avatar-left,.item-avatar-left .item-content{min-height:80px}.card>.item.item-thumbnail-left,.item-thumbnail-left,.item-thumbnail-left .item-content{padding-left:106px}.card>.item.item-thumbnail-right,.item-thumbnail-right,.item-thumbnail-right .item-content{padding-right:106px}.item-avatar .item-content .item-image,.item-avatar .item-content>img:first-child,.item-avatar .item-image,.item-avatar-left .item-content .item-image,.item-avatar-left .item-content>img:first-child,.item-avatar-left .item-image,.item-avatar-left>img:first-child,.item-avatar>img:first-child{border-radius:50%;left:16px;max-height:40px;max-width:40px}.avatar,.item-avatar .avatar{background-position:center;background-size:cover;border-radius:50%;display:inline-block;height:56px;left:16px;position:absolute;width:56px}.list.half{display:inline-block;float:left;margin:0;padding:0;width:50%}.list.half:first-child{padding:16px 8px 16px 16px}.list.half:last-child{padding:16px 16px 16px 8px}.list.half:first-child .card.card-gallery,.list.half:last-child .card.card-gallery{margin-left:0;margin-right:0}.list.condensed-space>.card,.list.condensed-space>.item{margin:0 0 2px}.list .card.card-gallery{display:block;float:left;margin:0 0 0 13px;padding:0;width:auto}.list.half .item{width:100%}.list.half .item.card{margin-bottom:16px}.list .card.card-gallery.item h2{padding:12px}.list .item.item-gallery img{width:100%}.item.item-divider{border-top:solid 1px rgba(0,0,0,.12);font-size:14px;font-weight:700;height:48px;line-height:48px;color:rgba(0,0,0,.54)}.item.item-divider:first-child{border:none}.item .item-content.activated,.item .item-content.active,.item-complex.activated .item-content,.item-complex.active .item-content,.item.activated,.item.active{background-color:transparent}.list-inset{margin:20px 30px;border-left:solid 1px #ccc;border-radius:0;background-color:#fff}.item-floating-label,.list .item.item-floating-label{border-bottom:solid 1px #ccc}.loader{position:relative;margin:0 auto;width:100px;height:100px;zoom:1.7}.circular{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100px;position:relative;width:100px}.path{stroke-dasharray:1,200;stroke-dashoffset:0;-webkit-animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}100%{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}100%{stroke-dasharray:89,200;stroke-dashoffset:-124}}@-webkit-keyframes color{0%,100%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}@keyframes color{0%,100%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}.login{background-position:25% 25%;background-size:180% 180%;height:100%;-webkit-transition:all 1.5s ease-in-out;transition:all 1.5s ease-in-out}.login .item{margin:0 12px;padding-left:0;padding-right:0;width:initial}.login .button-bar{bottom:0;margin:28px 12px 0;width:initial}.login .light-bg{background-color:#fff}.icon.hero-icon:before{line-height:130px}.card.has-mask:after,.hero.has-mask:after,.item.has-mask:after{content:'';background:-webkit-linear-gradient(top,transparent 0,rgba(0,0,0,.6) 100%);height:100%;left:0;position:absolute;top:0;z-index:0;width:100%}.card.has-mask-reverse:after,.hero.has-mask-reverse:after,.item.has-mask-reverse:after{content:'';background:-webkit-linear-gradient(top,rgba(0,0,0,.6) 0,transparent 100%);height:100%;left:0;position:absolute;top:0;z-index:0;width:100%}.menu-bottom{bottom:16px;left:16px;right:16px;position:absolute}.menu-top{top:16px;left:16px;right:16px;position:absolute}.menu .avatar{top:16px;left:16px;height:65px;width:65px}.menu .bar.bar-header.expanded{box-shadow:none;min-height:150px;color:#fff}.menu-open .bar.bar-header.expanded{background-position:0;background-size:100%}.has-expanded-header{top:150px!important}.motion{-webkit-transition:all .5s ease-out;transition:all .5s ease-out}.fade{opacity:0;filter:alpha(opacity=0);-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spin-back{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(360deg) scale(0)!important;transform:translateZ(0) rotate(360deg) scale(0)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spiral{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(-360deg) scale(0) translate(-120px)!important;transform:translateZ(0) rotate(-360deg) scale(0) translate(-120px)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.spiral-back{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(360deg) scale(0) translate(120px)!important;transform:translateZ(0) rotate(360deg) scale(0) translate(120px)!important;-webkit-transition:all .1s ease-out!important;transition:all .1s ease-out!important}.menu-open .avatar{opacity:1;filter:alpha(opacity=100);-webkit-transform:translateZ(0) rotate(0) scale(1)!important;transform:translateZ(0) rotate(0) scale(1)!important;-webkit-transition:all .3s ease-out!important;transition:all .3s ease-out!important}.spin{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotate(0) scale(0)!important;transform:translateZ(0) rotate(0) scale(0)!important;-webkit-transition:all .3s ease-out!important;transition:all .3s ease-out!important}.spin.on{-webkit-transform:translateZ(0) rotate(-360deg) scale(1)!important;transform:translateZ(0) rotate(-360deg) scale(1)!important}.flap{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotateX(0) scale(0) translate(-120px)!important;transform:translateZ(0) rotateX(0) scale(0) translate(-120px)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flap.on{-webkit-transform:translateZ(0) rotateX(-720deg) scale(1) translate(0)!important;transform:translateZ(0) rotateX(-720deg) scale(1) translate(0)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.drop{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) scale(3)!important;transform:translateZ(0) scale(3)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.drop.on{-webkit-transform:translateZ(0) scale(1)!important;transform:translateZ(0) scale(1)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flip{-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-transform:translateZ(0) rotateY(0) scale(0)!important;transform:translateZ(0) rotateY(0) scale(0)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.flip.on{-webkit-transform:translateZ(0) rotateY(-720deg) scale(1)!important;transform:translateZ(0) rotateY(-720deg) scale(1)!important;-webkit-transition:all .5s ease-out!important;transition:all .5s ease-out!important}.bold{font-weight:700}.static{position:static}.pull-left{float:left}.pull-right{float:right}.double-padding,.ionic-content.double-padding{padding:16px}.double-padding-x{padding-left:16px;padding-right:16px}.double-padding-y{padding-top:16px;padding-bottom:16px}.outline{border-style:solid;border-width:1px}.border-top{border-top:solid 1px #ccc;padding-top:30px}.no-border{border:none}.circle{border-radius:50%}.bar.no-padding,.button-bar.no-padding,.button.no-padding,.card.no-padding,.item.no-padding,.list.no-padding,.no-padding{padding:0}.flat,.flat.button,.flat.button.icon,.flat.hero,.flat.tabs{box-shadow:none;-webkit-box-shadow:none}.im-wrapper,.padding{padding:16px!important}.padding-bottom{padding-bottom:16px!important}.padding-top{padding-top:16px!important}.padding-left{padding-left:16px!important}.padding-right{padding-right:16px!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-top{padding-top:0!important}.no-padding-left{padding-left:0!important}.no-padding-right{padding-right:0!important}.z1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar.bar-positive.darker{background-color:#164FAB}.bar.bar-positive.dark-positive-bg{background-color:#2C5CAD}.muted{color:#C3C3C3}.clear-bg{background:0 0}.animate-blinds .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1);-webkit-transition:-webkit-transform .3s cubic-bezier(.55,0,.1,1);transition:transform .3s cubic-bezier(.55,0,.1,1)}.animate-blinds .item-bg-image>img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-blinds .in,.animate-blinds.done>*{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.animate-blinds .in,.animate-blinds.done .item{visibility:visible}.animate-blinds .item{visibility:hidden;opacity:0;filter:alpha(opacity=0)}.animate-blinds .in,.animate-blinds.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-blinds.done .in{opacity:1;filter:alpha(opacity=100)}.animate-blinds .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-blinds.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-blinds .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-pan-in-left{background-position:0 0}.animate-ripple .item-bg-image img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-ripple .item{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1);opacity:0;filter:alpha(opacity=0)}.animate-ripple .item.in{opacity:1;filter:alpha(opacity=100)}.animate-ripple .done{visibility:hidden;-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1);-webkit-transition:-webkit-transform .3s cubic-bezier(.55,0,.1,1);transition:transform .3s cubic-bezier(.55,0,.1,1)}.animate-ripple .in,.animate-ripple.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;visibility:visible}.animate-ripple.done .in{opacity:1;filter:alpha(opacity=100)}.animate-ripple .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-ripple.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-ripple .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-fade-slide-in .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1)}.animate-fade-slide-in .item-bg-image img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-fade-slide-in .in,.animate-fade-slide-in.done .item{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:visible}.list .item.item-bg-image{max-height:150px}.animate-fade-slide-in .item{visibility:hidden;-ms-transform:translate3d(-250px,250px,0);-webkit-transform:translate3d(-250px,250px,0);transform:translate3d(-250px,250px,0);-webkit-transition:-webkit-transform .5s cubic-bezier(.55,0,.1,1);transition:transform .5s cubic-bezier(.55,0,.1,1);opacity:0;filter:alpha(opacity=0)}.animate-fade-slide-in .in,.animate-fade-slide-in.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .5s ease-in-out;transition:all .5s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-fade-slide-in.done .in{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-fade-slide-in.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.animate-fade-slide-in-right .item{-ms-transform:scale3d(.8,0,1);-webkit-transform:scale3d(.8,0,1);transform:scale3d(.8,0,1)}.animate-fade-slide-in-right .item-bg-image>img.background{box-shadow:none;-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done>*{-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done .item{visibility:visible}.animate-fade-slide-in-right .item{visibility:hidden;-ms-transform:translate3d(250px,250px,0);-webkit-transform:translate3d(250px,250px,0);transform:translate3d(250px,250px,0);-webkit-transition:-webkit-transform .5s cubic-bezier(.55,0,.1,1);transition:transform .5s cubic-bezier(.55,0,.1,1);opacity:0;filter:alpha(opacity=0)}.animate-fade-slide-in-right .in,.animate-fade-slide-in-right.done{-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;opacity:1;filter:alpha(opacity=100);visibility:visible}.animate-fade-slide-in-right.done .in{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in-right .has-mask-reverse:after{opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.animate-fade-slide-in-right.done .has-mask-reverse:after{opacity:1;filter:alpha(opacity=100)}.animate-fade-slide-in-right .out{-ms-transform:scale3d(0,0,1);-webkit-transform:scale3d(0,0,1);transform:scale3d(0,0,1)}.hero.slide-up,.slide-up{height:100%;overflow:hidden;text-align:center}.slide-up{-webkit-transition:all 1s cubic-bezier(.55,0,.1,1);transition:all 1s cubic-bezier(.55,0,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.hero.slide-up *,.slide-up *{opacity:0;filter:alpha(opacity=0)}.hero.slide-up+.mid-bar,.slide-up+.mid-bar{height:100%;opacity:.7;filter:alpha(opacity=70);-webkit-transform:translate3d(100%,-240px,0);transform:translate3d(100%,-240px,0)}/*!
+ * Waves v0.5.4
+ * http://fian.my.id/Waves 
+ * 
+ * Copyright 2014 Alfiana E. Sibuea and other contributors 
+ * Forked by Zach Fitzgerald and other contributors for Ionic Material
+ *
+ * Released under the MIT license 
+ * https://github.com/fians/Waves/blob/master/LICENSE 
+ *
+ */.button-clear,.button-fab,.button-flat,.button-raised,.ink,.popup .button{position:relative;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.ink-ripple{position:absolute;border-radius:50%;width:100px;height:100px;margin-top:-50px;margin-left:-50px;opacity:0;background-color:rgba(255,255,255,.4);-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-o-transition:all .5s ease-out;transition:all .5s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.ink-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.button-clear,.button-fab,.button-flat,.button-raised,.ink-button,.ink-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.button-clear.activated,.button-clear:active,.button-fab.activated,.button-fab:active,.button-flat.activated,.button-flat:active,.button-raised.activated,.button-raised:active,.ink-button.activated,.ink-button:active,.ink-circle.activated,.ink-circle:active,.ink.activated,.ink:active,.popup .button.activated,.popup .button:active{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}.button-clear,.button-clear:link,.button-clear:visited,.button-fab,.button-fab:link,.button-fab:visited,.button-flat,.button-flat:link,.button-flat:visited,.button-raised,.button-raised:link,.button-raised:visited,.ink-button,.ink-button-input,.ink-button:link,.ink-button:visited{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;outline:0;font-size:14px;text-align:center;text-decoration:none;z-index:1}.ink-button{padding:10px 15px;border-radius:2px}.ink-button-input{margin:0;padding:10px 15px}.ink-input-wrapper{border-radius:2px;vertical-align:bottom}.ink-input-wrapper.ink-button{padding:0}.ink-input-wrapper .ink-button-input{position:relative;top:0;left:0;z-index:1}.ink-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.ink-float{-webkit-mask-image:none;-webkit-box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12);box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12)}.ink-float:active{-webkit-box-shadow:0 8px 20px 1px rgba(0,0,0,.3);box-shadow:0 8px 20px 1px rgba(0,0,0,.3)}.ink-block{display:block}.ink-ripple{z-index:0}.button-clear .ink-ripple,.ink-dark .ink-ripple,.list .ink-ripple,[class$="-clear"]>.ink-ripple,[class$="-light"]>.ink-ripple,[class$="-stable"]>.ink-ripple,[class$="-100"]>.ink-ripple{background-color:rgba(0,0,0,.2)}.tab-item{position:relative}*{font-family:RobotoDraft,Roboto,"Helvetica Neue","Segoe UI",sans-serif}.rounded{border-radius:4px}a{cursor:pointer}.has-header.expanded{top:76px}.bar{border-bottom:none;padding:0}.bar .button{min-height:44px;min-width:44px;max-width:48px;margin-bottom:0;max-height:44px;width:48px}.bar .title+.buttons.buttons-right{right:0;top:0}.title-left,.title-right,.title.title-left,.title.title-right{left:48px}.bar .button-positive,.bar .button-positive.activated,.bar .button-positive:active,.bar .button-positive:hover,.bar-positive,.bar-positive.activated,.bar-positive:active,.bar-positive:hover,.button-bar-positive,.button-bar-positive.activated,.button-bar-positive:active,.button-bar-positive:hover,.button-positive,.button-positive.activated,.button-positive:active,.button-positive:hover,.header-positive,.header-positive.activated,.header-positive:active,.header-positive:hover,.positive-bg,.positive-bg.activated,.positive-bg:active,.positive-bg:hover,.positive-border,.positive-border.activated,.positive-border:active,.positive-border:hover{background-color:#3F51B5;color:#fff}.bar .button-positive-900,.bar .button-positive-900.activated,.bar .button-positive-900:active,.bar .button-positive-900:hover,.bar-positive-900,.bar-positive-900.activated,.bar-positive-900:active,.bar-positive-900:hover,.button-bar-positive-900,.button-bar-positive-900.activated,.button-bar-positive-900:active,.button-bar-positive-900:hover,.button-positive-900,.button-positive-900.activated,.button-positive-900:active,.button-positive-900:hover,.header-positive-900,.header-positive-900.activated,.header-positive-900:active,.header-positive-900:hover,.positive-900-bg,.positive-900-bg.activated,.positive-900-bg:active,.positive-900-bg:hover,.positive-900-border,.positive-900-border.activated,.positive-900-border:active,.positive-900-border:hover{background-color:#1A237E;color:#fff}.bar .button-positive-100,.bar .button-positive-100.activated,.bar .button-positive-100:active,.bar .button-positive-100:hover,.bar-positive-100,.bar-positive-100.activated,.bar-positive-100:active,.bar-positive-100:hover,.button-bar-positive-100,.button-bar-positive-100.activated,.button-bar-positive-100:active,.button-bar-positive-100:hover,.button-positive-100,.button-positive-100.activated,.button-positive-100:active,.button-positive-100:hover,.header-positive-100,.header-positive-100.activated,.header-positive-100:active,.header-positive-100:hover,.positive-100-bg,.positive-100-bg.activated,.positive-100-bg:active,.positive-100-bg:hover,.positive-100-border,.positive-100-border.activated,.positive-100-border:active,.positive-100-border:hover{background-color:#C5CAE9;color:#fff}.bar .button-calm,.bar .button-calm.activated,.bar .button-calm:active,.bar .button-calm:hover,.bar-calm,.bar-calm.activated,.bar-calm:active,.bar-calm:hover,.button-bar-calm,.button-bar-calm.activated,.button-bar-calm:active,.button-bar-calm:hover,.button-calm,.button-calm.activated,.button-calm:active,.button-calm:hover,.calm-bg,.calm-bg.activated,.calm-bg:active,.calm-bg:hover,.calm-border,.calm-border.activated,.calm-border:active,.calm-border:hover,.header-calm,.header-calm.activated,.header-calm:active,.header-calm:hover{background-color:#2196F3;color:#fff}.bar .button-calm-900,.bar .button-calm-900.activated,.bar .button-calm-900:active,.bar .button-calm-900:hover,.bar-calm-900,.bar-calm-900.activated,.bar-calm-900:active,.bar-calm-900:hover,.button-bar-calm-900,.button-bar-calm-900.activated,.button-bar-calm-900:active,.button-bar-calm-900:hover,.button-calm-900,.button-calm-900.activated,.button-calm-900:active,.button-calm-900:hover,.calm-900-bg,.calm-900-bg.activated,.calm-900-bg:active,.calm-900-bg:hover,.calm-900-border,.calm-900-border.activated,.calm-900-border:active,.calm-900-border:hover,.header-calm-900,.header-calm-900.activated,.header-calm-900:active,.header-calm-900:hover{background-color:#0D47A1;color:#fff}.bar .button-calm-100,.bar .button-calm-100.activated,.bar .button-calm-100:active,.bar .button-calm-100:hover,.bar-calm-100,.bar-calm-100.activated,.bar-calm-100:active,.bar-calm-100:hover,.button-bar-calm-100,.button-bar-calm-100.activated,.button-bar-calm-100:active,.button-bar-calm-100:hover,.button-calm-100,.button-calm-100.activated,.button-calm-100:active,.button-calm-100:hover,.calm-100-bg,.calm-100-bg.activated,.calm-100-bg:active,.calm-100-bg:hover,.calm-100-border,.calm-100-border.activated,.calm-100-border:active,.calm-100-border:hover,.header-calm-100,.header-calm-100.activated,.header-calm-100:active,.header-calm-100:hover{background-color:#BBDEFB;color:#fff}.bar .button-royal,.bar .button-royal.activated,.bar .button-royal:active,.bar .button-royal:hover,.bar-royal,.bar-royal.activated,.bar-royal:active,.bar-royal:hover,.button-bar-royal,.button-bar-royal.activated,.button-bar-royal:active,.button-bar-royal:hover,.button-royal,.button-royal.activated,.button-royal:active,.button-royal:hover,.header-royal,.header-royal.activated,.header-royal:active,.header-royal:hover,.royal-bg,.royal-bg.activated,.royal-bg:active,.royal-bg:hover,.royal-border,.royal-border.activated,.royal-border:active,.royal-border:hover{background-color:#673AB7;color:#fff}.bar .button-royal-900,.bar .button-royal-900.activated,.bar .button-royal-900:active,.bar .button-royal-900:hover,.bar-royal-900,.bar-royal-900.activated,.bar-royal-900:active,.bar-royal-900:hover,.button-bar-royal-900,.button-bar-royal-900.activated,.button-bar-royal-900:active,.button-bar-royal-900:hover,.button-royal-900,.button-royal-900.activated,.button-royal-900:active,.button-royal-900:hover,.header-royal-900,.header-royal-900.activated,.header-royal-900:active,.header-royal-900:hover,.royal-900-bg,.royal-900-bg.activated,.royal-900-bg:active,.royal-900-bg:hover,.royal-900-border,.royal-900-border.activated,.royal-900-border:active,.royal-900-border:hover{background-color:#311B92;color:#fff}.bar .button-royal-100,.bar .button-royal-100.activated,.bar .button-royal-100:active,.bar .button-royal-100:hover,.bar-royal-100,.bar-royal-100.activated,.bar-royal-100:active,.bar-royal-100:hover,.button-bar-royal-100,.button-bar-royal-100.activated,.button-bar-royal-100:active,.button-bar-royal-100:hover,.button-royal-100,.button-royal-100.activated,.button-royal-100:active,.button-royal-100:hover,.header-royal-100,.header-royal-100.activated,.header-royal-100:active,.header-royal-100:hover,.royal-100-bg,.royal-100-bg.activated,.royal-100-bg:active,.royal-100-bg:hover,.royal-100-border,.royal-100-border.activated,.royal-100-border:active,.royal-100-border:hover{background-color:#D1C4E9;color:#fff}.balanced-bg,.balanced-bg.activated,.balanced-bg:active,.balanced-bg:hover,.balanced-border,.balanced-border.activated,.balanced-border:active,.balanced-border:hover,.bar .button-balanced,.bar .button-balanced.activated,.bar .button-balanced:active,.bar .button-balanced:hover,.bar-balanced,.bar-balanced.activated,.bar-balanced:active,.bar-balanced:hover,.button-balanced,.button-balanced.activated,.button-balanced:active,.button-balanced:hover,.button-bar-balanced,.button-bar-balanced.activated,.button-bar-balanced:active,.button-bar-balanced:hover,.header-balanced,.header-balanced.activated,.header-balanced:active,.header-balanced:hover{background-color:#4CAF50;color:#fff}.balanced-900-bg,.balanced-900-bg.activated,.balanced-900-bg:active,.balanced-900-bg:hover,.balanced-900-border,.balanced-900-border.activated,.balanced-900-border:active,.balanced-900-border:hover,.bar .button-balanced-900,.bar .button-balanced-900.activated,.bar .button-balanced-900:active,.bar .button-balanced-900:hover,.bar-balanced-900,.bar-balanced-900.activated,.bar-balanced-900:active,.bar-balanced-900:hover,.button-balanced-900,.button-balanced-900.activated,.button-balanced-900:active,.button-balanced-900:hover,.button-bar-balanced-900,.button-bar-balanced-900.activated,.button-bar-balanced-900:active,.button-bar-balanced-900:hover,.header-balanced-900,.header-balanced-900.activated,.header-balanced-900:active,.header-balanced-900:hover{background-color:#1B5E20;color:#fff}.balanced-100-bg,.balanced-100-bg.activated,.balanced-100-bg:active,.balanced-100-bg:hover,.balanced-100-border,.balanced-100-border.activated,.balanced-100-border:active,.balanced-100-border:hover,.bar .balanced-100-bg:hover,.bar .button-balanced-100,.bar .button-balanced-100.activated,.bar .button-balanced-100:active,.bar-balanced-100,.bar-balanced-100.activated,.bar-balanced-100:active,.bar-balanced-100:hover,.button-balanced-100,.button-balanced-100.activated,.button-balanced-100:active,.button-balanced-100:hover,.button-bar-balanced-100,.button-bar-balanced-100.activated,.button-bar-balanced-100:active,.button-bar-balanced-100:hover,.header-balanced-100,.header-balanced-100.activated,.header-balanced-100:active,.header-balanced-100:hover{background-color:#C8E6C9;color:#fff}.bar .button-energized,.bar .button-energized.activated,.bar .button-energized:active,.bar .button-energized:hover,.bar-energized,.bar-energized.activated,.bar-energized:active,.bar-energized:hover,.button-bar-energized,.button-bar-energized.activated,.button-bar-energized:active,.button-bar-energized:hover,.button-energized,.button-energized.activated,.button-energized:active,.button-energized:hover,.energized-bg,.energized-bg.activated,.energized-bg:active,.energized-bg:hover,.energized-border,.energized-border.activated,.energized-border:active,.energized-border:hover,.header-energized,.header-energized.activated,.header-energized:active,.header-energized:hover{background-color:#FF9800;color:#fff}.bar .button-energized-900,.bar .button-energized-900.activated,.bar .button-energized-900:active,.bar .button-energized-900:hover,.bar-energized-900,.bar-energized-900.activated,.bar-energized-900:active,.bar-energized-900:hover,.button-bar-energized-900,.button-bar-energized-900.activated,.button-bar-energized-900:active,.button-bar-energized-900:hover,.button-energized-900,.button-energized-900.activated,.button-energized-900:active,.button-energized-900:hover,.energized-900-bg,.energized-900-bg.activated,.energized-900-bg:active,.energized-900-bg:hover,.energized-900-border,.energized-900-border.activated,.energized-900-border:active,.energized-900-border:hover,.header-energized-900,.header-energized-900.activated,.header-energized-900:active,.header-energized-900:hover{background-color:#E65100;color:#fff}.bar .button-energized-100,.bar .button-energized-100.activated,.bar .button-energized-100:active,.bar .button-energized-100:hover,.bar-energized-100,.bar-energized-100.activated,.bar-energized-100:active,.bar-energized-100:hover,.button-bar-energized-100,.button-bar-energized-100.activated,.button-bar-energized-100:active,.button-bar-energized-100:hover,.button-energized-100,.button-energized-100.activated,.button-energized-100:active,.button-energized-100:hover,.energized-100-bg,.energized-100-bg.activated,.energized-100-bg:active,.energized-100-bg:hover,.energized-100-border,.energized-100-border.activated,.energized-100-border:active,.energized-100-border:hover,.header-energized-100,.header-energized-100.activated,.header-energized-100:active,.header-energized-100:hover{background-color:#FFE0B2}.assertive-bg,.assertive-bg.activated,.assertive-bg:active,.assertive-bg:hover,.assertive-border,.assertive-border.activated,.assertive-border:active,.assertive-border:hover,.bar .button-assertive,.bar .button-assertive.activated,.bar .button-assertive:active,.bar .button-assertive:hover,.bar-assertive,.bar-assertive.activated,.bar-assertive:active,.bar-assertive:hover,.button-assertive,.button-assertive.activated,.button-assertive:active,.button-assertive:hover,.button-bar-assertive,.button-bar-assertive.activated,.button-bar-assertive:active,.button-bar-assertive:hover,.header-assertive,.header-assertive.activated,.header-assertive:active,.header-assertive:hover{background-color:#F44336;color:#fff}.assertive-900-bg,.assertive-900-bg.activated,.assertive-900-bg:active,.assertive-900-bg:hover,.assertive-900-border,.assertive-900-border.activated,.assertive-900-border:active,.assertive-900-border:hover,.bar .button-assertive-900,.bar .button-assertive-900.activated,.bar .button-assertive-900:active,.bar .button-assertive-900:hover,.bar-assertive-900,.bar-assertive-900.activated,.bar-assertive-900:active,.bar-assertive-900:hover,.button-assertive-900,.button-assertive-900.activated,.button-assertive-900:active,.button-assertive-900:hover,.button-bar-assertive-900,.button-bar-assertive-900.activated,.button-bar-assertive-900:active,.button-bar-assertive-900:hover,.header-assertive-900,.header-assertive-900.activated,.header-assertive-900:active,.header-assertive-900:hover{background-color:#B71C1C;color:#fff}.assertive-100-bg,.assertive-100-bg.activated,.assertive-100-bg:active,.assertive-100-bg:hover,.assertive-100-border,.assertive-100-border.activated,.assertive-100-border:active,.assertive-100-border:hover,.bar .button-assertive-100,.bar .button-assertive-100.activated,.bar .button-assertive-100:active,.bar .button-assertive-100:hover,.bar-assertive-100,.bar-assertive-100.activated,.bar-assertive-100:active,.bar-assertive-100:hover,.button-assertive-100,.button-assertive-100.activated,.button-assertive-100:active,.button-assertive-100:hover,.button-bar-assertive-100,.button-bar-assertive-100.activated,.button-bar-assertive-100:active,.button-bar-assertive-100:hover,.header-assertive-100,.header-assertive-100.activated,.header-assertive-100:active,.header-assertive-100:hover{background-color:#FFCDD2;color:#fff}.bar .button-stable,.bar .button-stable.activated,.bar .button-stable:active,.bar .button-stable:hover,.bar-stable,.bar-stable.activated,.bar-stable:active,.bar-stable:hover,.button-bar-stable,.button-bar-stable.activated,.button-bar-stable:active,.button-bar-stable:hover,.button-stable,.button-stable.activated,.button-stable:active,.button-stable:hover,.header-stable,.header-stable.activated,.header-stable:active,.header-stable:hover,.stable-bg,.stable-bg.activated,.stable-bg:active,.stable-bg:hover,.stable-border,.stable-border.activated,.stable-border:active,.stable-border:hover{background-color:#E0E0E0;color:#fff}.positive,.positive *,.positive-900,.positive-900 *,.positive-900:active,.positive-900:active *,.positive-900:hover,.positive-900:hover *,.positive:active,.positive:active *,.positive:hover,.positive:hover *{color:#3F51B5}.positive-100,.positive-100 *,.positive-100:active,.positive-100:active *,.positive-100:hover,.positive-100:hover *{color:#C5CAE9}.calm-900,.calm-900 *,.calm-900:active,.calm-900:active *,.calm-900:hover,.calm-900:hover *{color:#0D47A1}.calm-100,.calm-100 *,.calm-100:active,.calm-100:active *,.calm-100:hover,.calm-100:hover *{color:#BBDEFB}.royal,.royal *,.royal:active,.royal:active *,.royal:hover,.royal:hover *{color:#673AB7}.royal-900,.royal-900 *,.royal-900:active,.royal-900:active *,.royal-900:hover,.royal-900:hover *{color:#311B92}.royal-100,.royal-100 *,.royal-100:active,.royal-100:active *,.royal-100:hover,.royal-100:hover *{color:#D1C4E9}.balanced,.balanced *,.balanced:active,.balanced:active *,.balanced:hover,.balanced:hover *{color:#4CAF50}.balanced-900,.balanced-900 *,.balanced-900:active,.balanced-900:active *,.balanced-900:hover,.balanced-900:hover *{color:#1B5E20}.balanced-100,.balanced-100 *,.balanced-100:active,.balanced-100:active *,.balanced-100:hover,.balanced-100:hover *{color:#C8E6C9}.energized,.energized *,.energized:active,.energized:active *,.energized:hover,.energized:hover *{color:#FF9800}.energized-900,.energized-900 *,.energized-900:active,.energized-900:active *,.energized-900:hover,.energized-900:hover *{color:#E65100}.energized-100,.energized-100 *,.energized-100:active,.energized-100:active *,.energized-100:hover,.energized-100:hover *{color:#FFE0B2}.assertive,.assertive *,.assertive:active,.assertive:active *,.assertive:hover,.assertive:hover *{color:#F44336}.assertive-900,.assertive-900 *,.assertive-900:active,.assertive-900:active *,.assertive-900:hover,.assertive-900:hover *{color:#B71C1C}.assertive-100,.assertive-100 *,.assertive-100:active,.assertive-100:active *,.assertive-100:hover,.assertive-100:hover *{color:#FFCDD2}.stable,.stable *,.stable:active,.stable:active *,.stable:hover,.stable:hover *{color:#E0E0E0}.light,.light *,.light:active,.light:active *,.light:hover,.light:hover *{color:#fff}.dark,.dark *,.dark:active,.dark:active *,.dark:hover,.dark:hover *{color:#444}.light-border{border-color:#ddd}.navbar-default .navbar-nav>li>a{margin:0;padding-right:26px;padding-left:26px;border-top:3px solid transparent;color:#BFD5C9;opacity:1}.mid-bar{padding:16px}.mid-bar h1,.mid-bar h2,.mid-bar h3,.mid-bar h4,.mid-bar h5,.mid-bar h6{color:#fff;margin-bottom:5px}.mid-bar p{color:rgba(255,255,255,.5);margin-bottom:0}.card>.item-avatar,.item-avatar,.item-avatar .item-content,.item-avatar-left,.item-avatar-left .item-content{padding-left:95px}.item,.item-complex .item-content,.item-radio .item-content{background-color:transparent}.dark-bg h2,.item.dark-bg h2{color:#fff}.tabs-striped .tabs{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.bar .button.button-clear{color:#fff}.bar .button.button-icon .icon:before,.bar .button.button-icon.icon-left:before,.bar .button.button-icon.icon-right:before,.bar .button.button-icon:before{vertical-align:top;font-size:24px}.menu{background-color:transparent}.button-icon.button.activated,.button-icon.button.active{opacity:initial}.popover{opacity:0;position:absolute;right:8px;transform:translate(50%,-50%) scale(0,0);transition:transform .3s ease-in-out,opacity .3s ease-in-out;top:8px}.popover.ng-enter{opacity:1;transform:translate(0,-14px) scale(1,1);transition:transform .3s ease-in-out,opacity .3s ease-in-out}.popover.ng-leave{opacity:0;transform:translate(50%,-50%) scale(0,0);transition:transform .3s ease-in-out,opacity .3s ease-in-out}.button{overflow:hidden!important}
+/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvbWQtbGFiZWwuc2NzcyIsImVsZW1lbnRzL2Jhci1oZWFkZXItZXhwYW5kZWQuc2NzcyIsImVsZW1lbnRzL2Jhci5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWJhci5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWZhYi5zY3NzIiwiZWxlbWVudHMvYnV0dG9uLWZsb2F0aW5nLnNjc3MiLCJlbGVtZW50cy9idXR0b24uc2NzcyIsImVsZW1lbnRzL2NhcmQuc2NzcyIsImVsZW1lbnRzL2hlcm8uc2NzcyIsImVsZW1lbnRzL2l0ZW0uc2NzcyIsImVsZW1lbnRzL2xpc3Quc2NzcyIsImVsZW1lbnRzL2xvYWRpbmcuc2NzcyIsImVsZW1lbnRzL2xvZ2luLnNjc3MiLCJlbGVtZW50cy9tYXNrLnNjc3MiLCJlbGVtZW50cy9tZW51LnNjc3MiLCJlbGVtZW50cy9tb3Rpb24tZWxlbWVudHMuc2NzcyIsImhlbHBlcnMvdXRpbGl0aWVzLnNjc3MiLCJtb3Rpb24vYmxpbmRzLnNjc3MiLCJtb3Rpb24vcGFuLWluLWxlZnQuc2NzcyIsIm1vdGlvbi9yaXBwbGUuc2NzcyIsIm1vdGlvbi9zbGlkZS1mYWRlLWluLnNjc3MiLCJtb3Rpb24vc2xpZGUtaW4tcmlnaHQuc2NzcyIsIm1vdGlvbi9zbGlkZS11cC5zY3NzIiwib3ZlcnJpZGVzL2luay5zY3NzIiwib3ZlcnJpZGVzL2lvbmljLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsZUFDSSxjQUNBLGVBQ0EsZ0JBQ0EsaUJBQ0Esa0JBQ0EsaUJBRVcsNEJBQ1gsa0JBRUEsVUFDQSxrREFDQSwwQ0FDQSxnQ0FDQSx3QkFDQSxXQUNBLFdBQ0EseUJBQ0EsMkJBQ0EsdUJBQ0EsbUJBRVcscUJBQ1gsZ0NBQ0EsU0FDQSxXQUNBLHNCQUNBLGtCQUNBLGtCQUNBLFVBRVcsMEJBQ1gsa0JBQ0EsU0FDQSxXQUNBLE9BQ0EsV0FDQSx5Q0FDQSxpQ0FDQSxpQ0FDQSx5QkFDQSxVQUVXLGdDQUNYLGdCQUVXLGlD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QUpBLGdCQUNBLGtCQUhJLGNBcUJVLGNBQ2QsZ0JBS0EscUJBQ0EsdUJBSkEsb0JBQ0Esc0JBSEksY0FxQk0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVU0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVUcsT0FDUCxTQUtBLGNBQ0EsZ0JBSkEsYUFDQSxlQUhJLGNBVU8sV0FDWCxhQUtBLGtCQUNBLG9CQUpBLGlCQUNBLG1CQUhJLGNBVU8sV0FDWCxhQUtBLGtCQUNBLG9CQUpBLGlCQUNBLG1CQUhJLGNBVU0sVUFDVixZQUtBLGlCQUNBLG1CQUpBLGdCQUNBLGtCQUhJLGNBVVUsY0FDZCxnQkFLQSxxQkFDQSx1QkFKQSxvQkFDQSxzQkFISSxjQVVVLGNBQ2QsZ0JBS0EscUJBQ0EsdUJBSkEsb0JBQ0Esc0JBSEksY0FVTyxXQUNYLGFBS0Esa0JBQ0Esb0JBSkEsaUJBQ0EsbUJBSEksY0FVVyxlQUNmLGlCQUtBLHNCQUNBLHdCQUpBLHFCQUNBLHVCQUhJLGNBVVcsZUFDZixpQkFLQSxzQkFDQSx3QkFKQSxxQkFDQSx1QkFISSxjQVVPLFdBQ1gsYUFLQSxrQkFDQSxvQkFKQSxpQkFDQSxtQkFISSxjQVVXLGVBQ2YsaUJBS0Esc0JBQ0Esd0JBSkEscUJBQ0EsdUJBSEksY0FVVyxlQUNmLGlCQUtBLHNCQUNBLHdCQUpBLHFCQUNBLHVCQUhJLGNBVUksUUFDUixVQUtBLGVBQ0EsaUJBSkEsY0FDQSxnQkFISSxjQVVHLE9BQ1AsU0FLQSxjQUNBLGdCQUpBLGFBQ0EsZUFISSxXQVVFLE1BQ04sUUFLQSxhQUNBLGVBSkEsWUFDQSxjQUhJLFdBU0osY0FDSSxrQkFHK0IsaUNBQy9CLFNBQ0EsbUJBQ0Esa0JBQ0EsaUNBQ0EsY0FDQSxVQU9KLFNBQ0ksYUFRSyxZQUNULFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFKSSxXQUNBLGtCQUdLLFdBQ0wsMkJBQ0EsZ0JBY0osbUJBSlEsYUFDUiwyQkFDQSxrQkFDQSxnQ0FGSSxrQkFLUSxNQUNaLDRCQUNBLDBCQURJLDZCQUlVLFlBQ2QsaUJBQUksV0FHVSxvQkFDVix1Q0FHUSwwQkFDUixXQU1vQixzQ0FDeEIsMENBQ0EsMkNBQ0EsZ0NBRkksbUJBQ0EsZUFHSixNQUNJLDZCQUtKLDhCQURtQiwyQkFDZixnQkFNSixTQUNJLFVBQ0Esa0JBQ0EsVUFDQSx5Q0FDQSw2REFDQSxRQUVJLGtCQUNKLFVBQ0Esd0NBQ0EsNkRBR0ksa0JBQ0osVUFDQSx5Q0FDQSw2REFNSixRQUNJIiwiZmlsZSI6ImlvbmljLm1hdGVyaWFsLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6W10sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
\ No newline at end of file
diff --git a/www/lib/ionic/js/ionic.material.js b/www/lib/ionic/js/ionic.material.js
new file mode 100644
index 000000000..cc39d3b68
--- /dev/null
+++ b/www/lib/ionic/js/ionic.material.js
@@ -0,0 +1,957 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory((function webpackLoadOptionalExternalModule() { try { return require("angular"); } catch(e) {} }()));
+	else if(typeof define === 'function' && define.amd)
+		define(["angular"], factory);
+	else if(typeof exports === 'object')
+		exports["ionicMaterial"] = factory((function webpackLoadOptionalExternalModule() { try { return require("angular"); } catch(e) {} }()));
+	else
+		root["ionicMaterial"] = factory(root["angular"]);
+})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+/******/
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Ionic Material
+	 * "Bundle Index" / "Entryfile"
+	 * https://github.com/zachsoft/ionic-material
+	 *
+	 * Recommended: use a compiled version, especially in production!
+	 */
+	
+	'use strict';
+	
+	module.exports = (function(){
+	
+	    var angular;
+	
+	    try {
+	        angular = __webpack_require__(1);
+	    } catch(err){ }
+	
+	    if(!angular || !angular.version){
+	        /*global window: true*/
+	        angular = window.angular;
+	        /*global window: false*/
+	    }
+	
+	    if(!angular || !angular.version){
+	        throw new Error('ionic-material could not load angular module :(');
+	    }
+	
+	    // set up angular module
+	    var app = angular.module('ionic-material', ['ionic']);
+	
+	    // Import Dependencies
+	    __webpack_require__(2)(app);
+	    __webpack_require__(3)(app);
+	
+	    return 'ionic-material';
+	})();
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+	if(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error("Cannot find module \"angular\""); e.code = 'MODULE_NOT_FOUND'; throw e;}
+	module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+	
+	/*!
+	 * Fork by Zach Fitzgerald and other contributors of Ionic Material
+	 *
+	 * Waves v0.5.4
+	 * http://fian.my.id/Waves
+	 *
+	 * Copyright 2014 Alfiana E. Sibuea and other contributors
+	 *
+	 * Released under the MIT license
+	 * https://github.com/fians/Waves/blob/master/LICENSE
+	 *
+	 */
+	module.exports = function (angularApp) {
+	
+	    angularApp.factory('ionicMaterialInk', ink);
+	
+	    function ink (){
+	        /*global document*/
+	        var Ink = Ink || {};
+	
+	            // all DOM nodes
+	            var $$;
+	
+	            // phantomJS throws an error when you try to use document.querySelectorAll.bind
+	            if(document && document.querySelectorAll && document.querySelectorAll.bind){
+	                try{
+	                    // all DOM nodes
+	                    $$ = document.querySelectorAll.bind(document);
+	
+	                } catch(e){}
+	            } else if (window && window.angular && window.angular.element) {
+	                // we can use angular.element instead
+	                $$ = window.angular.element;
+	            } else {
+	
+	
+	                    /**
+	                     * mout.js 0.11.0 bind and slice polyfills (substitutes?)
+	                     * TODO: pull out mout.js bind and slice molyfills and inject into material.ink
+	                     */
+	
+	                    /**
+	                     * Create slice of source array or array-like object
+	                     */
+	                    var slicePolyfill = function moutslicePolyfill(arr, start, end){
+	                        var len = arr.length;
+	                        /*jshint eqnull:true */
+	                        if (start == null) {
+	                            start = 0;
+	                        } else if (start < 0) {
+	                            start = Math.max(len + start, 0);
+	                        } else {
+	                            start = Math.min(start, len);
+	                        }
+	
+	
+	                        if (end == null) {
+	
+	                            end = len;
+	                        } else if (end < 0) {
+	                            end = Math.max(len + end, 0);
+	                        } else {
+	                            end = Math.min(end, len);
+	                        }
+	
+	                        var result = [];
+	                        while (start < end) {
+	                            result.push(arr[start++]);
+	                        }
+	
+	                        return result;
+	                    };
+	
+	
+	
+	                    /**
+	                     * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection.
+	                     * @param {Function} fn  Function.
+	                     * @param {object} context   Execution context.
+	                     * @param {rest} args    Arguments (0...n arguments).
+	                     * @return {Function} Wrapped Function.
+	                     */
+	                    var bindPolyfill = function moutBind(fn, context, args){
+	                        var argsArr = slicePolyfill(arguments, 2); //curried args
+	                        return function(){
+	                            return fn.apply(context, argsArr.concat(slicePolyfill(arguments)));
+	                        };
+	                    };
+	
+	                    $$ = bindPolyfill(document.querySelectorAll, document);
+	                    /*jshint ignore:end */
+	            }
+	
+	            if (!$$){
+	                throw new Error('ionic material ink module could not create reference of DOM nodes');
+	            }
+	
+	            // Find exact position of element
+	            function isWindow(obj) {
+	                return obj !== null && obj === obj.window;
+	            }
+	
+	            function getWindow(elem) {
+	                return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
+	            }
+	
+	            function offset(elem) {
+	                var docElem, win,
+	                    box = {
+	                        top: 0,
+	                        left: 0
+	                    },
+	                    doc = elem && elem.ownerDocument;
+	
+	                docElem = doc.documentElement;
+	
+	                if (typeof elem.getBoundingClientRect !== typeof undefined) {
+	                    box = elem.getBoundingClientRect();
+	                }
+	                win = getWindow(doc);
+	                return {
+	                    top: box.top + win.pageYOffset - docElem.clientTop,
+	                    left: box.left + win.pageXOffset - docElem.clientLeft
+	                };
+	            }
+	
+	            function hexToRgb(hex) {
+	                var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+	                return result ? {
+	                    r: parseInt(result[1], 16),
+	                    g: parseInt(result[2], 16),
+	                    b: parseInt(result[3], 16)
+	                } : null;
+	            }
+	
+	            function convertStyle(obj) {
+	                var style = '';
+	
+	                for (var a in obj) {
+	                    if (obj.hasOwnProperty(a)) {
+	                        style += (a + ':' + obj[a] + ';');
+	                    }
+	                }
+	
+	                return style;
+	            }
+	
+	            var Effect = {
+	
+	                // Effect delay
+	                duration: 500,
+	
+	                show: function(e) {
+	
+	                    // Disable right click
+	                    if (e.button === 2) {
+	                        return false;
+	                    }
+	
+	                    var el = this;
+	
+	                    // Create ripple
+	                    var ripple = document.createElement('div');
+	                    var customColor = this.dataset.inkColor;
+	                    var customOpacity = this.dataset.inkOpacity;
+	                    var hasCustomRipple = customColor || customOpacity;
+	                    ripple.className = 'ink-ripple';
+	                    el.appendChild(ripple);
+	
+	                    // Get click coordinate and element witdh
+	                    var pos = offset(el);
+	                    var relativeY = (e.pageY - pos.top);
+	                    var relativeX = (e.pageX - pos.left);
+	                    var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')';
+	
+	                    // Support for touch devices
+	                    if ('touches' in e) {
+	                        relativeY = (e.touches[0].pageY - pos.top);
+	                        relativeX = (e.touches[0].pageX - pos.left);
+	                    }
+	
+	                    // Attach data to element
+	                    ripple.setAttribute('data-hold', Date.now());
+	                    ripple.setAttribute('data-scale', scale);
+	                    ripple.setAttribute('data-x', relativeX);
+	                    ripple.setAttribute('data-y', relativeY);
+	
+	                    // Set ripple position
+	                    var rippleStyle = {
+	                        'top': relativeY + 'px',
+	                        'left': relativeX + 'px'
+	                    };
+	
+	                    ripple.className = ripple.className + ' ink-notransition';
+	
+	                    if (hasCustomRipple) {
+	                        var colorRgb;
+	                        if (customColor) {
+	                            var fromHex = hexToRgb(customColor);
+	                            colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b;
+	                        } else {
+	                            colorRgb = '0,0,0';
+	                        }
+	                        if (!customOpacity) {
+	                            customOpacity = 0.2;
+	                        }
+	                        var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')';
+	                        rippleStyle['background-color'] = bg;
+	                    }
+	
+	                    ripple.setAttribute('style', convertStyle(rippleStyle));
+	                    ripple.className = ripple.className.replace('ink-notransition', '');
+	
+	                    // Scale the ripple
+	                    rippleStyle['-webkit-transform'] = scale;
+	                    rippleStyle['-moz-transform'] = scale;
+	                    rippleStyle['-ms-transform'] = scale;
+	                    rippleStyle['-o-transform'] = scale;
+	                    rippleStyle.transform = scale;
+	                    rippleStyle.opacity = '1';
+	
+	                    rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';
+	                    rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';
+	                    rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';
+	                    rippleStyle['transition-duration'] = Effect.duration + 'ms';
+	
+	                    ripple.setAttribute('style', convertStyle(rippleStyle));
+	                },
+	
+	                hide: function() {
+	
+	                    var el = this;
+	
+	                    var width = el.clientWidth * 1.4;
+	
+	                    // Get first ripple
+	                    var ripple = null;
+	
+	                    var childrenLength = el.children.length;
+	
+	                    for (var a = 0; a < childrenLength; a++) {
+	                        if (el.children[a].className.indexOf('ink-ripple') !== -1) {
+	                            ripple = el.children[a];
+	                            continue;
+	                        }
+	                    }
+	
+	                    if (!ripple) {
+	                        return false;
+	                    }
+	
+	                    var relativeX = ripple.getAttribute('data-x');
+	                    var relativeY = ripple.getAttribute('data-y');
+	                    var scale = ripple.getAttribute('data-scale');
+	
+	                    // Get delay beetween mousedown and mouse leave
+	                    var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
+	                    var delay = 500 - diff;
+	
+	                    if (delay < 0) {
+	                        delay = 0;
+	                    }
+	
+	                    // Fade out ripple after delay
+	                    setTimeout(function() {
+	
+	                        var style = {
+	                            'top': relativeY + 'px',
+	                            'left': relativeX + 'px',
+	                            'opacity': '0',
+	
+	                            // Duration
+	                            '-webkit-transition-duration': Effect.duration + 'ms',
+	                            '-moz-transition-duration': Effect.duration + 'ms',
+	                            '-o-transition-duration': Effect.duration + 'ms',
+	                            'transition-duration': Effect.duration + 'ms',
+	                            '-webkit-transform': scale,
+	                            '-moz-transform': scale,
+	                            '-ms-transform': scale,
+	                            '-o-transform': scale,
+	                            'transform': scale,
+	                        };
+	
+	                        ripple.setAttribute('style', convertStyle(style));
+	
+	                        setTimeout(function() {
+	                            try {
+	                                el.removeChild(ripple);
+	                            } catch (e) {
+	                                return false;
+	                            }
+	                        }, Effect.duration);
+	                    }, delay);
+	                },
+	
+	                // Little hack to make <input> can perform ink effect
+	                wrapInput: function(elements) {
+	
+	                    for (var a = 0; a < elements.length; a++) {
+	
+	                        var el = elements[a];
+	
+	                        if (el.tagName.toLowerCase() === 'input') {
+	
+	                            var parent = el.parentNode;
+	
+	                            // If input already have parent just pass through
+	                            if (parent.tagName.toLowerCase() === 'i' &&
+	                                parent.className.indexOf('ink') !== -1 &&
+	                                parent.className.indexOf('tab-item') !== -1 &&
+	                                parent.className.indexOf('button-fab') !== -1 &&
+	                                parent.className.indexOf('button-raised') !== -1 &&
+	                                parent.className.indexOf('button-flat') !== -1 &&
+	                                parent.className.indexOf('button-clear') !== -1 &&
+	                                parent.className.indexOf('button') !== -1 &&
+	                                parent.className.indexOf('item') !== -1) {
+	                                return false;
+	                            }
+	
+	                            // Put element class and style to the specified parent
+	                            var wrapper = document.createElement('i');
+	                            wrapper.className = el.className + ' ink-input-wrapper';
+	
+	                            var elementStyle = el.getAttribute('style');
+	
+	                            if (!elementStyle) {
+	                                elementStyle = '';
+	                            }
+	
+	                            wrapper.setAttribute('style', elementStyle);
+	
+	                            el.className = 'ink-button-input';
+	                            el.removeAttribute('style');
+	
+	                            // Put element as child
+	                            parent.replaceChild(wrapper, el);
+	                            wrapper.appendChild(el);
+	                        }
+	                    }
+	                }
+	            };
+	
+	            Ink.displayEffect = function(options) {
+	                options = options || {};
+	
+	                if ('duration' in options) {
+	                    Effect.duration = options.duration;
+	                }
+	
+	                //Wrap input inside <i> tag
+	                var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button';
+	                Effect.wrapInput($$(selectors));
+	
+	                Array.prototype.forEach.call($$(selectors), function(i) {
+	                    if ('ontouchstart' in window) {
+	                        i.addEventListener('touchstart', Effect.show, false);
+	                        i.addEventListener('touchend', Effect.hide, false);
+	                        i.addEventListener('touchcancel', Effect.hide, false);
+	                    } else {
+	                        i.addEventListener('mousedown', Effect.show, false);
+	                        i.addEventListener('mouseup', Effect.hide, false);
+	                        i.addEventListener('mouseleave', Effect.hide, false);
+	                    }
+	                });
+	            };
+	
+	            return Ink;
+	    }
+	
+	    ink.inject = [];
+	};
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = function(angularApp) {
+	    angularApp.factory('ionicMaterialMotion', Motion);
+	
+	    function Motion() {
+	        /*global document, window*/
+	
+	        'use strict';
+	
+	        /*============================================================================*/
+	        /* HELPERS (non-exports)
+	        /=============================================================================*
+	        /   Abstract common lookups and manipulations in case better alternatives
+	        /   arise or future cross-platform differences warrant separate handling
+	        /=============================================================================*/
+	
+	        function getViewportHeight() {
+	            return window.innerHeight;
+	        }
+	
+	        function getBoundingClientRect(domNode) {
+	            return domNode.getBoundingClientRect;
+	        }
+	
+	        function showNotAnimatedElements(elements, total) {
+	            // Load the elements without effect
+	            for (var i = 0; i < total; i++) {
+	                var child = elements[i];
+	                child.className += ' in';
+	                child.className += ' done';
+	            }
+	        }
+	
+	
+	
+	        /*============================================================================*/
+	        /* MOTION (EXPORT)
+	        /=============================================================================*
+	        /   Animation methods for the library
+	        /=============================================================================*/
+	
+	        var motion = {
+	            blinds: blinds,
+	            fadeSlideIn: fadeSlideIn,
+	            fadeSlideInRight: fadeSlideInRight,
+	            panInLeft: panInLeft,
+	            pushDown: pushDown,
+	            ripple: ripple,
+	            slideUp: slideUp
+	        };
+	
+	        function blinds(options) {
+	
+	            // Declare our defaults
+	            var defaults = {
+	                finishDelayThrottle: 2,
+	                finishSpeedPercent: 0.5,
+	                leftOffsetPercentage: 0.8,
+	                selector: '.animate-blinds .item',
+	                startVelocity: 1100
+	            };
+	
+	            // Apply defaults if properties are not passed
+	            if (typeof options === 'undefined') {
+	                options = {};
+	            }
+	
+	            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;
+	            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;
+	            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;
+	            options.startVelocity = options.startVelocity || defaults.startVelocity;
+	
+	            if (typeof options.selector == 'undefined') {
+	                options.selector = defaults.selector;
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid blinds selector');
+	                return false;
+	            }
+	
+	            var animateBlindsDom = document.querySelectorAll(options.selector);
+	            var elementsCount = animateBlindsDom.length;
+	            var elementAnimationCount = 0;
+	
+	            // Count the elements within the starting viewport so we're not exacting
+	            // more effort than required...
+	            //
+	            // We use css visiblity: hidden instead of display: none so the elements
+	            // maintain their DOM flow
+	
+	            var viewportHeight = getViewportHeight();
+	            for (var i = 0; i < elementsCount; i++) {
+	                if (animateBlindsDom[i].offsetTop < viewportHeight) {
+	                    elementAnimationCount += 1;
+	                    continue;
+	                }
+	                break;
+	            }
+	
+	            // Sequentially animate with a delay based on proximity
+	            var speed = options.startVelocity;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var child = animateBlindsDom[i];
+	                var childOffset = child.getBoundingClientRect();
+	                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                var delay = parseFloat(offset / speed).toFixed(2);
+	                child.style.webkitTransitionDelay = delay + "s";
+	                child.style.transitionDelay = delay + "s";
+	                child.className += ' in';
+	            }
+	
+	            // When we're done animating, switch the class to 'done'
+	            setTimeout(function() {
+	                for (var i = 0; i < elementAnimationCount; i++) {
+	                    var child = animateBlindsDom[i];
+	                    var childOffset = child.getBoundingClientRect();
+	                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                    var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2);
+	                    //child.querySelector('img').style.webkitTransitionDelay = delay + "s";
+	                    //child.querySelector('img').style.transitionDelay = delay + "s";
+	                    //child.querySelector('img').className += ' in';
+	                    animateBlindsDom[i].className += ' done';
+	                }
+	
+	            }, speed * options.finishSpeedPercent);
+	
+	            // Load the elements without effect
+	            showNotAnimatedElements(animateBlindsDom, elementsCount);
+	        }
+	
+	        function fadeSlideIn(options) {
+	
+	            // Declare our defaults
+	            var defaults = {
+	                finishDelayThrottle: 2,
+	                finishSpeedPercent: 0.72,
+	                leftOffsetPercentage: 0.8,
+	                selector: '.animate-fade-slide-in .item',
+	                startVelocity: 1100
+	            };
+	
+	            // Apply defaults if properties are not passed
+	            if (typeof options === 'undefined') {
+	                options = {};
+	            }
+	
+	            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;
+	            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;
+	            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;
+	            options.startVelocity = options.startVelocity || defaults.startVelocity;
+	
+	            if (typeof options.selector == 'undefined') {
+	                options.selector = defaults.selector;
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid fadeSlideIn selector');
+	                return false;
+	            }
+	
+	            var animateFadeSlideInDom = document.querySelectorAll(options.selector);
+	            var elementsCount = animateFadeSlideInDom.length;
+	            var elementAnimationCount = 0;
+	
+	            // Count the elements within the starting viewport so we're not exacting
+	            // more effort than required...
+	            //
+	            // We use css visiblity: hidden instead of display: none so the elements
+	            // maintain their DOM flow
+	
+	            var viewportHeight = getViewportHeight();
+	            for (var i = 0; i < elementsCount; i++) {
+	                if (animateFadeSlideInDom[i].offsetTop < viewportHeight) {
+	                    elementAnimationCount += 1;
+	                    continue;
+	                }
+	                break;
+	            }
+	
+	            // Sequentially animate with a delay based on proximity
+	            var speed = options.startVelocity;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var child = animateFadeSlideInDom[i];
+	                var childOffset = child.getBoundingClientRect();
+	                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                var delay = parseFloat(offset / speed).toFixed(2);
+	                child.style.webkitTransitionDelay = delay + "s";
+	                child.style.transitionDelay = delay + "s";
+	                child.className += ' in';
+	            }
+	
+	            // When we're done animating, switch the class to 'done'
+	            setTimeout(function() {
+	                for (var i = 0; i < elementAnimationCount; i++) {
+	                    var child = animateFadeSlideInDom[i];
+	                    var childOffset = child.getBoundingClientRect();
+	                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                    var delayValue = offset / speed / options.finishDelayThrottle;
+	                    var delay = parseFloat(delayValue).toFixed(2);
+	                }
+	                animateFadeSlideInDom[0].className += ' done';
+	
+	            }, speed * options.finishSpeedPercent);
+	
+	            // Load the elements without effect
+	            showNotAnimatedElements(animateFadeSlideInDom, elementsCount);
+	        }
+	
+	        function fadeSlideInRight(options) {
+	
+	            // Declare our defaults
+	            var defaults = {
+	                finishDelayThrottle: 2,
+	                finishSpeedPercent: 0.72,
+	                leftOffsetPercentage: 0.8,
+	                selector: '.animate-fade-slide-in-right .item',
+	                startVelocity: 1100
+	            };
+	
+	            // Apply defaults if properties are not passed
+	            if (typeof options === 'undefined') {
+	                options = {};
+	            }
+	
+	            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;
+	            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;
+	            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;
+	            options.startVelocity = options.startVelocity || defaults.startVelocity;
+	
+	            if (typeof options.selector == 'undefined') {
+	                options.selector = defaults.selector;
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid fadeSlideInRight selector');
+	                return false;
+	            }
+	
+	            var animateSlideInRightDom = document.querySelectorAll(options.selector);
+	            var elementsCount = animateSlideInRightDom.length;
+	            var elementAnimationCount = 0;
+	
+	            // Count the elements within the starting viewport so we're not
+	            // exacting more effort than required...
+	            //
+	            // We use css visiblity: hidden instead of display: none so the
+	            // elements maintain their DOM flow
+	
+	            var viewportHeight = getViewportHeight();
+	            for (var i = 0; i < elementsCount; i++) {
+	                if (animateSlideInRightDom[i].offsetTop < viewportHeight) {
+	                    elementAnimationCount += 1;
+	                    continue;
+	                }
+	                break;
+	            }
+	
+	            // Sequentially animate with a delay based on proximity
+	            var speed = options.startVelocity;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var child = animateSlideInRightDom[i];
+	                var childOffset = child.getBoundingClientRect();
+	                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                var delay = parseFloat(offset / speed).toFixed(2);
+	                child.style.webkitTransitionDelay = delay + "s";
+	                child.style.transitionDelay = delay + "s";
+	                child.className += ' in';
+	            }
+	
+	            // When we're done animating, switch the class to 'done'
+	            setTimeout(function() {
+	                for (var i = 0; i < elementAnimationCount; i++) {
+	                    var child = animateSlideInRightDom[i];
+	                    var childOffset = child.getBoundingClientRect();
+	                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                    var delayValue = offset / speed / options.finishDelayThrottle;
+	                    var delay = parseFloat(delayValue).toFixed(2);
+	                }
+	                animateSlideInRightDom[0].className += ' done';
+	
+	            }, speed * options.finishSpeedPercent);
+	
+	            // Load the elements without effect
+	            showNotAnimatedElements(animateSlideInRightDom, elementsCount);
+	
+	        }
+	
+	        function ripple(options) {
+	
+	            // Declare our defaults
+	            var defaults = {
+	                finishDelayThrottle: 2,
+	                finishSpeedPercent: 0.72,
+	                leftOffsetPercentage: 0.8,
+	                selector: '.animate-ripple .item',
+	                startVelocity: 1100
+	            };
+	
+	            // Apply defaults if properties are not passed
+	            if (typeof options === 'undefined') {
+	                options = {};
+	            }
+	
+	            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;
+	            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;
+	            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;
+	            options.startVelocity = options.startVelocity || defaults.startVelocity;
+	
+	            if (typeof options.selector == 'undefined') {
+	                options.selector = defaults.selector;
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid ripple selector');
+	                return false;
+	            }
+	
+	            var animateRippleDom = document.querySelectorAll(options.selector);
+	            var elementsCount = animateRippleDom.length;
+	            var elementAnimationCount = 0;
+	
+	            // Count the elements within the starting viewport so we're not
+	            // exacting more effort than required...
+	            //
+	            // We use css visiblity: hidden instead of display: none so the
+	            // elements maintain their DOM flow
+	
+	            var viewportHeight = getViewportHeight();
+	            for (var i = 0; i < animateRippleDom.length; i++) {
+	                if (animateRippleDom[i].offsetTop < viewportHeight) {
+	                    elementAnimationCount += 1;
+	                    continue;
+	                }
+	                break;
+	            }
+	
+	            // Sequentially animate with a delay based on proximity
+	            var speed = options.startVelocity;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var child = animateRippleDom[i];
+	                var childOffset = child.getBoundingClientRect();
+	                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                var delay = parseFloat(offset / speed).toFixed(2);
+	                child.style.webkitTransitionDelay = delay + "s";
+	                child.style.transitionDelay = delay + "s";
+	                child.className += ' in';
+	            }
+	
+	            // When we're done animating, switch the class to 'done'
+	            setTimeout(function() {
+	                for (var i = 0; i < elementAnimationCount; i++) {
+	                    var child = animateRippleDom[i];
+	                    var childOffset = child.getBoundingClientRect();
+	                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;
+	                    var delayValue = offset / speed / options.finishDelayThrottle;
+	                    var delay = parseFloat(delayValue).toFixed(2);
+	                }
+	                animateRippleDom[0].className += ' done';
+	
+	            }, speed * options.finishSpeedPercent);
+	
+	            // Load the elements without effect
+	            showNotAnimatedElements(animateRippleDom, elementsCount);
+	        }
+	
+	        function panInLeft(options) {
+	
+	            // We have a single option, so it may be passed as a string or property
+	            if (typeof options === 'string') {
+	                options = {
+	                    selector: options
+	                };
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid pushDown selector');
+	                return false;
+	            }
+	
+	            var animatePanInLeftDom = document.querySelectorAll(options.selector);
+	            var elementAnimationCount = animatePanInLeftDom.length;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var element = animatePanInLeftDom[i];
+	                var classNameToRemove = 'animate-pan-in-left';
+	                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);
+	                element.className = element.className.substr(0, indexOfClassNameToRemove);
+	            }
+	        }
+	
+	        function pushDown(options) {
+	
+	            // We have a single option, so it may be passed as a string or property
+	            if (typeof options === 'string') {
+	                options = {
+	                    selector: options
+	                };
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid pushDown selector');
+	                return false;
+	            }
+	
+	            var animatePushDownDom = document.querySelectorAll(options.selector);
+	            var elementAnimationCount = animatePushDownDom.length;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var element = animatePushDownDom[i];
+	                var classNameToRemove = options.selector.split('.')[1];
+	                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);
+	                element.className = element.className.substr(0, indexOfClassNameToRemove);
+	            }
+	        }
+	
+	        function slideUp(options) {
+	
+	            // We have a single option, so it may be passed as a string or property
+	            if (typeof options === 'string') {
+	                options = {
+	                    selector: options
+	                };
+	            }
+	
+	            // Fail early & silently log
+	            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';
+	
+	            if (isInvalidSelector) {
+	                console.log('invalid pushDown selector');
+	                return false;
+	            }
+	
+	            var animateSlideUpDom = document.querySelectorAll(options.selector);
+	            var elementAnimationCount = animateSlideUpDom.length;
+	            for (var i = 0; i < elementAnimationCount; i++) {
+	                var element = animateSlideUpDom[i];
+	                var classNameToRemove = options.selector.split('.')[1];
+	                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);
+	                element.className = element.className.substr(0, indexOfClassNameToRemove);
+	            }
+	        }
+	
+	        /* Export object
+	        /============================================================================*/
+	        return motion;
+	    }
+	
+	    Motion.$inject = [];
+	};
+
+
+/***/ }
+/******/ ])
+});
+;
+//# sourceMappingURL=ionic.material.min.js.map
\ No newline at end of file
diff --git a/www/lib/ionic/js/ionic.material.min.js b/www/lib/ionic/js/ionic.material.min.js
new file mode 100644
index 000000000..a53b4430f
--- /dev/null
+++ b/www/lib/ionic/js/ionic.material.min.js
@@ -0,0 +1,14 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(function(){try{return require("angular")}catch(e){}}()):"function"==typeof define&&define.amd?define(["angular"],t):"object"==typeof exports?exports.ionicMaterial=t(function(){try{return require("angular")}catch(e){}}()):e.ionicMaterial=t(e.angular)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";e.exports=function(){var e;try{e=n(1)}catch(t){}if(e&&e.version||(e=window.angular),!e||!e.version)throw new Error("ionic-material could not load angular module :(");var r=e.module("ionic-material",["ionic"]);return n(2)(r),n(3)(r),"ionic-material"}()},function(t,n,r){if("undefined"==typeof e){var i=new Error('Cannot find module "angular"');throw i.code="MODULE_NOT_FOUND",i}t.exports=e},function(e,t,n){"use strict";/*!
+	 * Fork by Zach Fitzgerald and other contributors of Ionic Material
+	 *
+	 * Waves v0.5.4
+	 * http://fian.my.id/Waves
+	 *
+	 * Copyright 2014 Alfiana E. Sibuea and other contributors
+	 *
+	 * Released under the MIT license
+	 * https://github.com/fians/Waves/blob/master/LICENSE
+	 *
+	 */
+e.exports=function(e){function t(){function e(e){return null!==e&&e===e.window}function t(t){return e(t)?t:9===t.nodeType&&t.defaultView}function n(e){var n,r,i={top:0,left:0},o=e&&e.ownerDocument;return n=o.documentElement,"undefined"!=typeof e.getBoundingClientRect&&(i=e.getBoundingClientRect()),r=t(o),{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}}function r(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function i(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+":"+e[n]+";");return t}var o,a=a||{};if(document&&document.querySelectorAll&&document.querySelectorAll.bind)try{o=document.querySelectorAll.bind(document)}catch(l){}else if(window&&window.angular&&window.angular.element)o=window.angular.element;else{var s=function(e,t,n){var r=e.length;t=null==t?0:0>t?Math.max(r+t,0):Math.min(t,r),n=null==n?r:0>n?Math.max(r+n,0):Math.min(n,r);for(var i=[];n>t;)i.push(e[t++]);return i},f=function(e,t,n){var r=s(arguments,2);return function(){return e.apply(t,r.concat(s(arguments)))}};o=f(document.querySelectorAll,document)}if(!o)throw new Error("ionic material ink module could not create reference of DOM nodes");var c={duration:500,show:function(e){if(2===e.button)return!1;var t=this,o=document.createElement("div"),a=this.dataset.inkColor,l=this.dataset.inkOpacity,s=a||l;o.className="ink-ripple",t.appendChild(o);var f=n(t),u=e.pageY-f.top,d=e.pageX-f.left,p="scale("+t.clientWidth/100*2.5+")";"touches"in e&&(u=e.touches[0].pageY-f.top,d=e.touches[0].pageX-f.left),o.setAttribute("data-hold",Date.now()),o.setAttribute("data-scale",p),o.setAttribute("data-x",d),o.setAttribute("data-y",u);var m={top:u+"px",left:d+"px"};if(o.className=o.className+" ink-notransition",s){var h;if(a){var y=r(a);h=y.r+","+y.g+","+y.b}else h="0,0,0";l||(l=.2);var g="rgba("+h+","+l+")";m["background-color"]=g}o.setAttribute("style",i(m)),o.className=o.className.replace("ink-notransition",""),m["-webkit-transform"]=p,m["-moz-transform"]=p,m["-ms-transform"]=p,m["-o-transform"]=p,m.transform=p,m.opacity="1",m["-webkit-transition-duration"]=c.duration+"ms",m["-moz-transition-duration"]=c.duration+"ms",m["-o-transition-duration"]=c.duration+"ms",m["transition-duration"]=c.duration+"ms",o.setAttribute("style",i(m))},hide:function(){for(var e=this,t=(1.4*e.clientWidth,null),n=e.children.length,r=0;n>r;r++)-1===e.children[r].className.indexOf("ink-ripple")||(t=e.children[r]);if(!t)return!1;var o=t.getAttribute("data-x"),a=t.getAttribute("data-y"),l=t.getAttribute("data-scale"),s=Date.now()-Number(t.getAttribute("data-hold")),f=500-s;0>f&&(f=0),setTimeout(function(){var n={top:a+"px",left:o+"px",opacity:"0","-webkit-transition-duration":c.duration+"ms","-moz-transition-duration":c.duration+"ms","-o-transition-duration":c.duration+"ms","transition-duration":c.duration+"ms","-webkit-transform":l,"-moz-transform":l,"-ms-transform":l,"-o-transform":l,transform:l};t.setAttribute("style",i(n)),setTimeout(function(){try{e.removeChild(t)}catch(n){return!1}},c.duration)},f)},wrapInput:function(e){for(var t=0;t<e.length;t++){var n=e[t];if("input"===n.tagName.toLowerCase()){var r=n.parentNode;if("i"===r.tagName.toLowerCase()&&-1!==r.className.indexOf("ink")&&-1!==r.className.indexOf("tab-item")&&-1!==r.className.indexOf("button-fab")&&-1!==r.className.indexOf("button-raised")&&-1!==r.className.indexOf("button-flat")&&-1!==r.className.indexOf("button-clear")&&-1!==r.className.indexOf("button")&&-1!==r.className.indexOf("item"))return!1;var i=document.createElement("i");i.className=n.className+" ink-input-wrapper";var o=n.getAttribute("style");o||(o=""),i.setAttribute("style",o),n.className="ink-button-input",n.removeAttribute("style"),r.replaceChild(i,n),i.appendChild(n)}}}};return a.displayEffect=function(e){e=e||{},"duration"in e&&(c.duration=e.duration);var t=".ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button";c.wrapInput(o(t)),Array.prototype.forEach.call(o(t),function(e){"ontouchstart"in window?(e.addEventListener("touchstart",c.show,!1),e.addEventListener("touchend",c.hide,!1),e.addEventListener("touchcancel",c.hide,!1)):(e.addEventListener("mousedown",c.show,!1),e.addEventListener("mouseup",c.hide,!1),e.addEventListener("mouseleave",c.hide,!1))})},a}e.factory("ionicMaterialInk",t),t.inject=[]}},function(e,t,n){e.exports=function(e){function t(){"use strict";function e(){return window.innerHeight}function t(e,t){for(var n=0;t>n;n++){var r=e[n];r.className+=" in",r.className+=" done"}}function n(n){var r={finishDelayThrottle:2,finishSpeedPercent:.5,leftOffsetPercentage:.8,selector:".animate-blinds .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid blinds selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTop<s;f++)l+=1;for(var c=n.startVelocity,f=0;l>f;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top;parseFloat(i/c/n.finishDelayThrottle).toFixed(2);o[e].className+=" done"}},c*n.finishSpeedPercent),t(o,a)}function r(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-fade-slide-in .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid fadeSlideIn selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTop<s;f++)l+=1;for(var c=n.startVelocity,f=0;l>f;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function i(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-fade-slide-in-right .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid fadeSlideInRight selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;a>f&&o[f].offsetTop<s;f++)l+=1;for(var c=n.startVelocity,f=0;l>f;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function o(n){var r={finishDelayThrottle:2,finishSpeedPercent:.72,leftOffsetPercentage:.8,selector:".animate-ripple .item",startVelocity:1100};"undefined"==typeof n&&(n={}),n.finishDelayThrottle=n.finishDelayThrottle||r.finishDelayThrottle,n.finishSpeedPercent=n.finishSpeedPercent||r.finishSpeedPercent,n.leftOffsetPercentage=n.leftOffsetPercentage||r.leftOffsetPercentage,n.startVelocity=n.startVelocity||r.startVelocity,"undefined"==typeof n.selector&&(n.selector=r.selector);var i="undefined"==typeof n.selector||""===n.selector;if(i)return console.log("invalid ripple selector"),!1;for(var o=document.querySelectorAll(n.selector),a=o.length,l=0,s=e(),f=0;f<o.length&&o[f].offsetTop<s;f++)l+=1;for(var c=n.startVelocity,f=0;l>f;f++){var u=o[f],d=u.getBoundingClientRect(),p=d.left*n.leftOffsetPercentage+d.top,m=parseFloat(p/c).toFixed(2);u.style.webkitTransitionDelay=m+"s",u.style.transitionDelay=m+"s",u.className+=" in"}setTimeout(function(){for(var e=0;l>e;e++){var t=o[e],r=t.getBoundingClientRect(),i=r.left*n.leftOffsetPercentage+r.top,a=i/c/n.finishDelayThrottle;parseFloat(a).toFixed(2)}o[0].className+=" done"},c*n.finishSpeedPercent),t(o,a)}function a(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a="animate-pan-in-left",l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}function l(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a=e.selector.split(".")[1],l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}function s(e){"string"==typeof e&&(e={selector:e});var t="undefined"==typeof e.selector||""===e.selector;if(t)return console.log("invalid pushDown selector"),!1;for(var n=document.querySelectorAll(e.selector),r=n.length,i=0;r>i;i++){var o=n[i],a=e.selector.split(".")[1],l=o.className.lastIndexOf(a);o.className=o.className.substr(0,l)}}var f={blinds:n,fadeSlideIn:r,fadeSlideInRight:i,panInLeft:a,pushDown:l,ripple:o,slideUp:s};return f}e.factory("ionicMaterialMotion",t),t.$inject=[]}}])});
+//# sourceMappingURL=ionic.material.min.js.map
\ No newline at end of file
diff --git a/www/lib/ionic/js/ionic.material.min.js.map b/www/lib/ionic/js/ionic.material.min.js.map
new file mode 100644
index 000000000..b582062aa
--- /dev/null
+++ b/www/lib/ionic/js/ionic.material.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ionic.material.min.js","webpack:///webpack/bootstrap aca4d68e3e47af1bef6a","webpack:///./src/js/ionic-material.js","webpack:///external \"angular\"","webpack:///./src/js/lib/_ink.js","webpack:///./src/js/lib/_motion.js"],"names":["root","factory","exports","module","require","e","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","angular","err","version","window","Error","app","code","angularApp","ink","isWindow","obj","getWindow","elem","nodeType","defaultView","offset","docElem","win","box","top","left","doc","ownerDocument","documentElement","getBoundingClientRect","pageYOffset","clientTop","pageXOffset","clientLeft","hexToRgb","hex","result","exec","r","parseInt","g","b","convertStyle","style","a","hasOwnProperty","$$","Ink","document","querySelectorAll","bind","element","slicePolyfill","arr","start","end","len","length","Math","max","min","push","bindPolyfill","fn","context","args","argsArr","arguments","apply","concat","Effect","duration","show","button","el","ripple","createElement","customColor","dataset","inkColor","customOpacity","inkOpacity","hasCustomRipple","className","appendChild","pos","relativeY","pageY","relativeX","pageX","scale","clientWidth","touches","setAttribute","Date","now","rippleStyle","colorRgb","fromHex","bg","replace","transform","opacity","hide","childrenLength","children","indexOf","getAttribute","diff","Number","delay","setTimeout","-webkit-transition-duration","-moz-transition-duration","-o-transition-duration","transition-duration","-webkit-transform","-moz-transform","-ms-transform","-o-transform","removeChild","wrapInput","elements","tagName","toLowerCase","parent","parentNode","wrapper","elementStyle","removeAttribute","replaceChild","displayEffect","options","selectors","Array","prototype","forEach","i","addEventListener","inject","Motion","getViewportHeight","innerHeight","showNotAnimatedElements","total","child","blinds","defaults","finishDelayThrottle","finishSpeedPercent","leftOffsetPercentage","selector","startVelocity","isInvalidSelector","console","log","animateBlindsDom","elementsCount","elementAnimationCount","viewportHeight","offsetTop","speed","childOffset","parseFloat","toFixed","webkitTransitionDelay","transitionDelay","fadeSlideIn","animateFadeSlideInDom","delayValue","fadeSlideInRight","animateSlideInRightDom","animateRippleDom","panInLeft","animatePanInLeftDom","classNameToRemove","indexOfClassNameToRemove","lastIndexOf","substr","pushDown","animatePushDownDom","split","slideUp","animateSlideUpDom","motion","$inject"],"mappings":"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","file":"ionic.material.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicMaterial\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse\n\t\troot[\"ionicMaterial\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicMaterial\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"angular\"); } catch(e) {} }()));\n\telse\n\t\troot[\"ionicMaterial\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Ionic Material\n\t * \"Bundle Index\" / \"Entryfile\"\n\t * https://github.com/zachsoft/ionic-material\n\t *\n\t * Recommended: use a compiled version, especially in production!\n\t */\n\t\n\t'use strict';\n\t\n\tmodule.exports = (function(){\n\t\n\t    var angular;\n\t\n\t    try {\n\t        angular = __webpack_require__(1);\n\t    } catch(err){ }\n\t\n\t    if(!angular || !angular.version){\n\t        /*global window: true*/\n\t        angular = window.angular;\n\t        /*global window: false*/\n\t    }\n\t\n\t    if(!angular || !angular.version){\n\t        throw new Error('ionic-material could not load angular module :(');\n\t    }\n\t\n\t    // set up angular module\n\t    var app = angular.module('ionic-material', ['ionic']);\n\t\n\t    // Import Dependencies\n\t    __webpack_require__(2)(app);\n\t    __webpack_require__(3)(app);\n\t\n\t    return 'ionic-material';\n\t})();\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tif(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error(\"Cannot find module \\\"angular\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/*!\n\t * Fork by Zach Fitzgerald and other contributors of Ionic Material\n\t *\n\t * Waves v0.5.4\n\t * http://fian.my.id/Waves\n\t *\n\t * Copyright 2014 Alfiana E. Sibuea and other contributors\n\t *\n\t * Released under the MIT license\n\t * https://github.com/fians/Waves/blob/master/LICENSE\n\t *\n\t */\n\tmodule.exports = function (angularApp) {\n\t\n\t    angularApp.factory('ionicMaterialInk', ink);\n\t\n\t    function ink (){\n\t        /*global document*/\n\t        var Ink = Ink || {};\n\t\n\t            // all DOM nodes\n\t            var $$;\n\t\n\t            // phantomJS throws an error when you try to use document.querySelectorAll.bind\n\t            if(document && document.querySelectorAll && document.querySelectorAll.bind){\n\t                try{\n\t                    // all DOM nodes\n\t                    $$ = document.querySelectorAll.bind(document);\n\t\n\t                } catch(e){}\n\t            } else if (window && window.angular && window.angular.element) {\n\t                // we can use angular.element instead\n\t                $$ = window.angular.element;\n\t            } else {\n\t\n\t\n\t                    /**\n\t                     * mout.js 0.11.0 bind and slice polyfills (substitutes?)\n\t                     * TODO: pull out mout.js bind and slice molyfills and inject into material.ink\n\t                     */\n\t\n\t                    /**\n\t                     * Create slice of source array or array-like object\n\t                     */\n\t                    var slicePolyfill = function moutslicePolyfill(arr, start, end){\n\t                        var len = arr.length;\n\t                        /*jshint eqnull:true */\n\t                        if (start == null) {\n\t                            start = 0;\n\t                        } else if (start < 0) {\n\t                            start = Math.max(len + start, 0);\n\t                        } else {\n\t                            start = Math.min(start, len);\n\t                        }\n\t\n\t\n\t                        if (end == null) {\n\t\n\t                            end = len;\n\t                        } else if (end < 0) {\n\t                            end = Math.max(len + end, 0);\n\t                        } else {\n\t                            end = Math.min(end, len);\n\t                        }\n\t\n\t                        var result = [];\n\t                        while (start < end) {\n\t                            result.push(arr[start++]);\n\t                        }\n\t\n\t                        return result;\n\t                    };\n\t\n\t\n\t\n\t                    /**\n\t                     * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection.\n\t                     * @param {Function} fn  Function.\n\t                     * @param {object} context   Execution context.\n\t                     * @param {rest} args    Arguments (0...n arguments).\n\t                     * @return {Function} Wrapped Function.\n\t                     */\n\t                    var bindPolyfill = function moutBind(fn, context, args){\n\t                        var argsArr = slicePolyfill(arguments, 2); //curried args\n\t                        return function(){\n\t                            return fn.apply(context, argsArr.concat(slicePolyfill(arguments)));\n\t                        };\n\t                    };\n\t\n\t                    $$ = bindPolyfill(document.querySelectorAll, document);\n\t                    /*jshint ignore:end */\n\t            }\n\t\n\t            if (!$$){\n\t                throw new Error('ionic material ink module could not create reference of DOM nodes');\n\t            }\n\t\n\t            // Find exact position of element\n\t            function isWindow(obj) {\n\t                return obj !== null && obj === obj.window;\n\t            }\n\t\n\t            function getWindow(elem) {\n\t                return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n\t            }\n\t\n\t            function offset(elem) {\n\t                var docElem, win,\n\t                    box = {\n\t                        top: 0,\n\t                        left: 0\n\t                    },\n\t                    doc = elem && elem.ownerDocument;\n\t\n\t                docElem = doc.documentElement;\n\t\n\t                if (typeof elem.getBoundingClientRect !== typeof undefined) {\n\t                    box = elem.getBoundingClientRect();\n\t                }\n\t                win = getWindow(doc);\n\t                return {\n\t                    top: box.top + win.pageYOffset - docElem.clientTop,\n\t                    left: box.left + win.pageXOffset - docElem.clientLeft\n\t                };\n\t            }\n\t\n\t            function hexToRgb(hex) {\n\t                var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t                return result ? {\n\t                    r: parseInt(result[1], 16),\n\t                    g: parseInt(result[2], 16),\n\t                    b: parseInt(result[3], 16)\n\t                } : null;\n\t            }\n\t\n\t            function convertStyle(obj) {\n\t                var style = '';\n\t\n\t                for (var a in obj) {\n\t                    if (obj.hasOwnProperty(a)) {\n\t                        style += (a + ':' + obj[a] + ';');\n\t                    }\n\t                }\n\t\n\t                return style;\n\t            }\n\t\n\t            var Effect = {\n\t\n\t                // Effect delay\n\t                duration: 500,\n\t\n\t                show: function(e) {\n\t\n\t                    // Disable right click\n\t                    if (e.button === 2) {\n\t                        return false;\n\t                    }\n\t\n\t                    var el = this;\n\t\n\t                    // Create ripple\n\t                    var ripple = document.createElement('div');\n\t                    var customColor = this.dataset.inkColor;\n\t                    var customOpacity = this.dataset.inkOpacity;\n\t                    var hasCustomRipple = customColor || customOpacity;\n\t                    ripple.className = 'ink-ripple';\n\t                    el.appendChild(ripple);\n\t\n\t                    // Get click coordinate and element witdh\n\t                    var pos = offset(el);\n\t                    var relativeY = (e.pageY - pos.top);\n\t                    var relativeX = (e.pageX - pos.left);\n\t                    var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')';\n\t\n\t                    // Support for touch devices\n\t                    if ('touches' in e) {\n\t                        relativeY = (e.touches[0].pageY - pos.top);\n\t                        relativeX = (e.touches[0].pageX - pos.left);\n\t                    }\n\t\n\t                    // Attach data to element\n\t                    ripple.setAttribute('data-hold', Date.now());\n\t                    ripple.setAttribute('data-scale', scale);\n\t                    ripple.setAttribute('data-x', relativeX);\n\t                    ripple.setAttribute('data-y', relativeY);\n\t\n\t                    // Set ripple position\n\t                    var rippleStyle = {\n\t                        'top': relativeY + 'px',\n\t                        'left': relativeX + 'px'\n\t                    };\n\t\n\t                    ripple.className = ripple.className + ' ink-notransition';\n\t\n\t                    if (hasCustomRipple) {\n\t                        var colorRgb;\n\t                        if (customColor) {\n\t                            var fromHex = hexToRgb(customColor);\n\t                            colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b;\n\t                        } else {\n\t                            colorRgb = '0,0,0';\n\t                        }\n\t                        if (!customOpacity) {\n\t                            customOpacity = 0.2;\n\t                        }\n\t                        var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')';\n\t                        rippleStyle['background-color'] = bg;\n\t                    }\n\t\n\t                    ripple.setAttribute('style', convertStyle(rippleStyle));\n\t                    ripple.className = ripple.className.replace('ink-notransition', '');\n\t\n\t                    // Scale the ripple\n\t                    rippleStyle['-webkit-transform'] = scale;\n\t                    rippleStyle['-moz-transform'] = scale;\n\t                    rippleStyle['-ms-transform'] = scale;\n\t                    rippleStyle['-o-transform'] = scale;\n\t                    rippleStyle.transform = scale;\n\t                    rippleStyle.opacity = '1';\n\t\n\t                    rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';\n\t                    rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';\n\t                    rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';\n\t                    rippleStyle['transition-duration'] = Effect.duration + 'ms';\n\t\n\t                    ripple.setAttribute('style', convertStyle(rippleStyle));\n\t                },\n\t\n\t                hide: function() {\n\t\n\t                    var el = this;\n\t\n\t                    var width = el.clientWidth * 1.4;\n\t\n\t                    // Get first ripple\n\t                    var ripple = null;\n\t\n\t                    var childrenLength = el.children.length;\n\t\n\t                    for (var a = 0; a < childrenLength; a++) {\n\t                        if (el.children[a].className.indexOf('ink-ripple') !== -1) {\n\t                            ripple = el.children[a];\n\t                            continue;\n\t                        }\n\t                    }\n\t\n\t                    if (!ripple) {\n\t                        return false;\n\t                    }\n\t\n\t                    var relativeX = ripple.getAttribute('data-x');\n\t                    var relativeY = ripple.getAttribute('data-y');\n\t                    var scale = ripple.getAttribute('data-scale');\n\t\n\t                    // Get delay beetween mousedown and mouse leave\n\t                    var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n\t                    var delay = 500 - diff;\n\t\n\t                    if (delay < 0) {\n\t                        delay = 0;\n\t                    }\n\t\n\t                    // Fade out ripple after delay\n\t                    setTimeout(function() {\n\t\n\t                        var style = {\n\t                            'top': relativeY + 'px',\n\t                            'left': relativeX + 'px',\n\t                            'opacity': '0',\n\t\n\t                            // Duration\n\t                            '-webkit-transition-duration': Effect.duration + 'ms',\n\t                            '-moz-transition-duration': Effect.duration + 'ms',\n\t                            '-o-transition-duration': Effect.duration + 'ms',\n\t                            'transition-duration': Effect.duration + 'ms',\n\t                            '-webkit-transform': scale,\n\t                            '-moz-transform': scale,\n\t                            '-ms-transform': scale,\n\t                            '-o-transform': scale,\n\t                            'transform': scale,\n\t                        };\n\t\n\t                        ripple.setAttribute('style', convertStyle(style));\n\t\n\t                        setTimeout(function() {\n\t                            try {\n\t                                el.removeChild(ripple);\n\t                            } catch (e) {\n\t                                return false;\n\t                            }\n\t                        }, Effect.duration);\n\t                    }, delay);\n\t                },\n\t\n\t                // Little hack to make <input> can perform ink effect\n\t                wrapInput: function(elements) {\n\t\n\t                    for (var a = 0; a < elements.length; a++) {\n\t\n\t                        var el = elements[a];\n\t\n\t                        if (el.tagName.toLowerCase() === 'input') {\n\t\n\t                            var parent = el.parentNode;\n\t\n\t                            // If input already have parent just pass through\n\t                            if (parent.tagName.toLowerCase() === 'i' &&\n\t                                parent.className.indexOf('ink') !== -1 &&\n\t                                parent.className.indexOf('tab-item') !== -1 &&\n\t                                parent.className.indexOf('button-fab') !== -1 &&\n\t                                parent.className.indexOf('button-raised') !== -1 &&\n\t                                parent.className.indexOf('button-flat') !== -1 &&\n\t                                parent.className.indexOf('button-clear') !== -1 &&\n\t                                parent.className.indexOf('button') !== -1 &&\n\t                                parent.className.indexOf('item') !== -1) {\n\t                                return false;\n\t                            }\n\t\n\t                            // Put element class and style to the specified parent\n\t                            var wrapper = document.createElement('i');\n\t                            wrapper.className = el.className + ' ink-input-wrapper';\n\t\n\t                            var elementStyle = el.getAttribute('style');\n\t\n\t                            if (!elementStyle) {\n\t                                elementStyle = '';\n\t                            }\n\t\n\t                            wrapper.setAttribute('style', elementStyle);\n\t\n\t                            el.className = 'ink-button-input';\n\t                            el.removeAttribute('style');\n\t\n\t                            // Put element as child\n\t                            parent.replaceChild(wrapper, el);\n\t                            wrapper.appendChild(el);\n\t                        }\n\t                    }\n\t                }\n\t            };\n\t\n\t            Ink.displayEffect = function(options) {\n\t                options = options || {};\n\t\n\t                if ('duration' in options) {\n\t                    Effect.duration = options.duration;\n\t                }\n\t\n\t                //Wrap input inside <i> tag\n\t                var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button';\n\t                Effect.wrapInput($$(selectors));\n\t\n\t                Array.prototype.forEach.call($$(selectors), function(i) {\n\t                    if ('ontouchstart' in window) {\n\t                        i.addEventListener('touchstart', Effect.show, false);\n\t                        i.addEventListener('touchend', Effect.hide, false);\n\t                        i.addEventListener('touchcancel', Effect.hide, false);\n\t                    } else {\n\t                        i.addEventListener('mousedown', Effect.show, false);\n\t                        i.addEventListener('mouseup', Effect.hide, false);\n\t                        i.addEventListener('mouseleave', Effect.hide, false);\n\t                    }\n\t                });\n\t            };\n\t\n\t            return Ink;\n\t    }\n\t\n\t    ink.inject = [];\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = function(angularApp) {\n\t    angularApp.factory('ionicMaterialMotion', Motion);\n\t\n\t    function Motion() {\n\t        /*global document, window*/\n\t\n\t        'use strict';\n\t\n\t        /*============================================================================*/\n\t        /* HELPERS (non-exports)\n\t        /=============================================================================*\n\t        /   Abstract common lookups and manipulations in case better alternatives\n\t        /   arise or future cross-platform differences warrant separate handling\n\t        /=============================================================================*/\n\t\n\t        function getViewportHeight() {\n\t            return window.innerHeight;\n\t        }\n\t\n\t        function getBoundingClientRect(domNode) {\n\t            return domNode.getBoundingClientRect;\n\t        }\n\t\n\t        function showNotAnimatedElements(elements, total) {\n\t            // Load the elements without effect\n\t            for (var i = 0; i < total; i++) {\n\t                var child = elements[i];\n\t                child.className += ' in';\n\t                child.className += ' done';\n\t            }\n\t        }\n\t\n\t\n\t\n\t        /*============================================================================*/\n\t        /* MOTION (EXPORT)\n\t        /=============================================================================*\n\t        /   Animation methods for the library\n\t        /=============================================================================*/\n\t\n\t        var motion = {\n\t            blinds: blinds,\n\t            fadeSlideIn: fadeSlideIn,\n\t            fadeSlideInRight: fadeSlideInRight,\n\t            panInLeft: panInLeft,\n\t            pushDown: pushDown,\n\t            ripple: ripple,\n\t            slideUp: slideUp\n\t        };\n\t\n\t        function blinds(options) {\n\t\n\t            // Declare our defaults\n\t            var defaults = {\n\t                finishDelayThrottle: 2,\n\t                finishSpeedPercent: 0.5,\n\t                leftOffsetPercentage: 0.8,\n\t                selector: '.animate-blinds .item',\n\t                startVelocity: 1100\n\t            };\n\t\n\t            // Apply defaults if properties are not passed\n\t            if (typeof options === 'undefined') {\n\t                options = {};\n\t            }\n\t\n\t            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t            if (typeof options.selector == 'undefined') {\n\t                options.selector = defaults.selector;\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid blinds selector');\n\t                return false;\n\t            }\n\t\n\t            var animateBlindsDom = document.querySelectorAll(options.selector);\n\t            var elementsCount = animateBlindsDom.length;\n\t            var elementAnimationCount = 0;\n\t\n\t            // Count the elements within the starting viewport so we're not exacting\n\t            // more effort than required...\n\t            //\n\t            // We use css visiblity: hidden instead of display: none so the elements\n\t            // maintain their DOM flow\n\t\n\t            var viewportHeight = getViewportHeight();\n\t            for (var i = 0; i < elementsCount; i++) {\n\t                if (animateBlindsDom[i].offsetTop < viewportHeight) {\n\t                    elementAnimationCount += 1;\n\t                    continue;\n\t                }\n\t                break;\n\t            }\n\t\n\t            // Sequentially animate with a delay based on proximity\n\t            var speed = options.startVelocity;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var child = animateBlindsDom[i];\n\t                var childOffset = child.getBoundingClientRect();\n\t                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                var delay = parseFloat(offset / speed).toFixed(2);\n\t                child.style.webkitTransitionDelay = delay + \"s\";\n\t                child.style.transitionDelay = delay + \"s\";\n\t                child.className += ' in';\n\t            }\n\t\n\t            // When we're done animating, switch the class to 'done'\n\t            setTimeout(function() {\n\t                for (var i = 0; i < elementAnimationCount; i++) {\n\t                    var child = animateBlindsDom[i];\n\t                    var childOffset = child.getBoundingClientRect();\n\t                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                    var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2);\n\t                    //child.querySelector('img').style.webkitTransitionDelay = delay + \"s\";\n\t                    //child.querySelector('img').style.transitionDelay = delay + \"s\";\n\t                    //child.querySelector('img').className += ' in';\n\t                    animateBlindsDom[i].className += ' done';\n\t                }\n\t\n\t            }, speed * options.finishSpeedPercent);\n\t\n\t            // Load the elements without effect\n\t            showNotAnimatedElements(animateBlindsDom, elementsCount);\n\t        }\n\t\n\t        function fadeSlideIn(options) {\n\t\n\t            // Declare our defaults\n\t            var defaults = {\n\t                finishDelayThrottle: 2,\n\t                finishSpeedPercent: 0.72,\n\t                leftOffsetPercentage: 0.8,\n\t                selector: '.animate-fade-slide-in .item',\n\t                startVelocity: 1100\n\t            };\n\t\n\t            // Apply defaults if properties are not passed\n\t            if (typeof options === 'undefined') {\n\t                options = {};\n\t            }\n\t\n\t            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t            if (typeof options.selector == 'undefined') {\n\t                options.selector = defaults.selector;\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid fadeSlideIn selector');\n\t                return false;\n\t            }\n\t\n\t            var animateFadeSlideInDom = document.querySelectorAll(options.selector);\n\t            var elementsCount = animateFadeSlideInDom.length;\n\t            var elementAnimationCount = 0;\n\t\n\t            // Count the elements within the starting viewport so we're not exacting\n\t            // more effort than required...\n\t            //\n\t            // We use css visiblity: hidden instead of display: none so the elements\n\t            // maintain their DOM flow\n\t\n\t            var viewportHeight = getViewportHeight();\n\t            for (var i = 0; i < elementsCount; i++) {\n\t                if (animateFadeSlideInDom[i].offsetTop < viewportHeight) {\n\t                    elementAnimationCount += 1;\n\t                    continue;\n\t                }\n\t                break;\n\t            }\n\t\n\t            // Sequentially animate with a delay based on proximity\n\t            var speed = options.startVelocity;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var child = animateFadeSlideInDom[i];\n\t                var childOffset = child.getBoundingClientRect();\n\t                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                var delay = parseFloat(offset / speed).toFixed(2);\n\t                child.style.webkitTransitionDelay = delay + \"s\";\n\t                child.style.transitionDelay = delay + \"s\";\n\t                child.className += ' in';\n\t            }\n\t\n\t            // When we're done animating, switch the class to 'done'\n\t            setTimeout(function() {\n\t                for (var i = 0; i < elementAnimationCount; i++) {\n\t                    var child = animateFadeSlideInDom[i];\n\t                    var childOffset = child.getBoundingClientRect();\n\t                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                    var delayValue = offset / speed / options.finishDelayThrottle;\n\t                    var delay = parseFloat(delayValue).toFixed(2);\n\t                }\n\t                animateFadeSlideInDom[0].className += ' done';\n\t\n\t            }, speed * options.finishSpeedPercent);\n\t\n\t            // Load the elements without effect\n\t            showNotAnimatedElements(animateFadeSlideInDom, elementsCount);\n\t        }\n\t\n\t        function fadeSlideInRight(options) {\n\t\n\t            // Declare our defaults\n\t            var defaults = {\n\t                finishDelayThrottle: 2,\n\t                finishSpeedPercent: 0.72,\n\t                leftOffsetPercentage: 0.8,\n\t                selector: '.animate-fade-slide-in-right .item',\n\t                startVelocity: 1100\n\t            };\n\t\n\t            // Apply defaults if properties are not passed\n\t            if (typeof options === 'undefined') {\n\t                options = {};\n\t            }\n\t\n\t            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t            if (typeof options.selector == 'undefined') {\n\t                options.selector = defaults.selector;\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid fadeSlideInRight selector');\n\t                return false;\n\t            }\n\t\n\t            var animateSlideInRightDom = document.querySelectorAll(options.selector);\n\t            var elementsCount = animateSlideInRightDom.length;\n\t            var elementAnimationCount = 0;\n\t\n\t            // Count the elements within the starting viewport so we're not\n\t            // exacting more effort than required...\n\t            //\n\t            // We use css visiblity: hidden instead of display: none so the\n\t            // elements maintain their DOM flow\n\t\n\t            var viewportHeight = getViewportHeight();\n\t            for (var i = 0; i < elementsCount; i++) {\n\t                if (animateSlideInRightDom[i].offsetTop < viewportHeight) {\n\t                    elementAnimationCount += 1;\n\t                    continue;\n\t                }\n\t                break;\n\t            }\n\t\n\t            // Sequentially animate with a delay based on proximity\n\t            var speed = options.startVelocity;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var child = animateSlideInRightDom[i];\n\t                var childOffset = child.getBoundingClientRect();\n\t                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                var delay = parseFloat(offset / speed).toFixed(2);\n\t                child.style.webkitTransitionDelay = delay + \"s\";\n\t                child.style.transitionDelay = delay + \"s\";\n\t                child.className += ' in';\n\t            }\n\t\n\t            // When we're done animating, switch the class to 'done'\n\t            setTimeout(function() {\n\t                for (var i = 0; i < elementAnimationCount; i++) {\n\t                    var child = animateSlideInRightDom[i];\n\t                    var childOffset = child.getBoundingClientRect();\n\t                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                    var delayValue = offset / speed / options.finishDelayThrottle;\n\t                    var delay = parseFloat(delayValue).toFixed(2);\n\t                }\n\t                animateSlideInRightDom[0].className += ' done';\n\t\n\t            }, speed * options.finishSpeedPercent);\n\t\n\t            // Load the elements without effect\n\t            showNotAnimatedElements(animateSlideInRightDom, elementsCount);\n\t\n\t        }\n\t\n\t        function ripple(options) {\n\t\n\t            // Declare our defaults\n\t            var defaults = {\n\t                finishDelayThrottle: 2,\n\t                finishSpeedPercent: 0.72,\n\t                leftOffsetPercentage: 0.8,\n\t                selector: '.animate-ripple .item',\n\t                startVelocity: 1100\n\t            };\n\t\n\t            // Apply defaults if properties are not passed\n\t            if (typeof options === 'undefined') {\n\t                options = {};\n\t            }\n\t\n\t            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n\t            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n\t            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n\t            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\t\n\t            if (typeof options.selector == 'undefined') {\n\t                options.selector = defaults.selector;\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid ripple selector');\n\t                return false;\n\t            }\n\t\n\t            var animateRippleDom = document.querySelectorAll(options.selector);\n\t            var elementsCount = animateRippleDom.length;\n\t            var elementAnimationCount = 0;\n\t\n\t            // Count the elements within the starting viewport so we're not\n\t            // exacting more effort than required...\n\t            //\n\t            // We use css visiblity: hidden instead of display: none so the\n\t            // elements maintain their DOM flow\n\t\n\t            var viewportHeight = getViewportHeight();\n\t            for (var i = 0; i < animateRippleDom.length; i++) {\n\t                if (animateRippleDom[i].offsetTop < viewportHeight) {\n\t                    elementAnimationCount += 1;\n\t                    continue;\n\t                }\n\t                break;\n\t            }\n\t\n\t            // Sequentially animate with a delay based on proximity\n\t            var speed = options.startVelocity;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var child = animateRippleDom[i];\n\t                var childOffset = child.getBoundingClientRect();\n\t                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                var delay = parseFloat(offset / speed).toFixed(2);\n\t                child.style.webkitTransitionDelay = delay + \"s\";\n\t                child.style.transitionDelay = delay + \"s\";\n\t                child.className += ' in';\n\t            }\n\t\n\t            // When we're done animating, switch the class to 'done'\n\t            setTimeout(function() {\n\t                for (var i = 0; i < elementAnimationCount; i++) {\n\t                    var child = animateRippleDom[i];\n\t                    var childOffset = child.getBoundingClientRect();\n\t                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n\t                    var delayValue = offset / speed / options.finishDelayThrottle;\n\t                    var delay = parseFloat(delayValue).toFixed(2);\n\t                }\n\t                animateRippleDom[0].className += ' done';\n\t\n\t            }, speed * options.finishSpeedPercent);\n\t\n\t            // Load the elements without effect\n\t            showNotAnimatedElements(animateRippleDom, elementsCount);\n\t        }\n\t\n\t        function panInLeft(options) {\n\t\n\t            // We have a single option, so it may be passed as a string or property\n\t            if (typeof options === 'string') {\n\t                options = {\n\t                    selector: options\n\t                };\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid pushDown selector');\n\t                return false;\n\t            }\n\t\n\t            var animatePanInLeftDom = document.querySelectorAll(options.selector);\n\t            var elementAnimationCount = animatePanInLeftDom.length;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var element = animatePanInLeftDom[i];\n\t                var classNameToRemove = 'animate-pan-in-left';\n\t                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t                element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t            }\n\t        }\n\t\n\t        function pushDown(options) {\n\t\n\t            // We have a single option, so it may be passed as a string or property\n\t            if (typeof options === 'string') {\n\t                options = {\n\t                    selector: options\n\t                };\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid pushDown selector');\n\t                return false;\n\t            }\n\t\n\t            var animatePushDownDom = document.querySelectorAll(options.selector);\n\t            var elementAnimationCount = animatePushDownDom.length;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var element = animatePushDownDom[i];\n\t                var classNameToRemove = options.selector.split('.')[1];\n\t                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t                element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t            }\n\t        }\n\t\n\t        function slideUp(options) {\n\t\n\t            // We have a single option, so it may be passed as a string or property\n\t            if (typeof options === 'string') {\n\t                options = {\n\t                    selector: options\n\t                };\n\t            }\n\t\n\t            // Fail early & silently log\n\t            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\t\n\t            if (isInvalidSelector) {\n\t                console.log('invalid pushDown selector');\n\t                return false;\n\t            }\n\t\n\t            var animateSlideUpDom = document.querySelectorAll(options.selector);\n\t            var elementAnimationCount = animateSlideUpDom.length;\n\t            for (var i = 0; i < elementAnimationCount; i++) {\n\t                var element = animateSlideUpDom[i];\n\t                var classNameToRemove = options.selector.split('.')[1];\n\t                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n\t                element.className = element.className.substr(0, indexOfClassNameToRemove);\n\t            }\n\t        }\n\t\n\t        /* Export object\n\t        /============================================================================*/\n\t        return motion;\n\t    }\n\t\n\t    Motion.$inject = [];\n\t};\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ionic.material.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap aca4d68e3e47af1bef6a\n **/","/**\n * Ionic Material\n * \"Bundle Index\" / \"Entryfile\"\n * https://github.com/zachsoft/ionic-material\n *\n * Recommended: use a compiled version, especially in production!\n */\n\n'use strict';\n\nmodule.exports = (function(){\n\n    var angular;\n\n    try {\n        angular = require('angular');\n    } catch(err){ }\n\n    if(!angular || !angular.version){\n        /*global window: true*/\n        angular = window.angular;\n        /*global window: false*/\n    }\n\n    if(!angular || !angular.version){\n        throw new Error('ionic-material could not load angular module :(');\n    }\n\n    // set up angular module\n    var app = angular.module('ionic-material', ['ionic']);\n\n    // Import Dependencies\n    require('./lib/_ink')(app);\n    require('./lib/_motion')(app);\n\n    return 'ionic-material';\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/ionic-material.js\n ** module id = 0\n ** module chunks = 0\n **/","if(typeof __WEBPACK_EXTERNAL_MODULE_1__ === 'undefined') {var e = new Error(\"Cannot find module \\\"angular\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"angular\"\n ** module id = 1\n ** module chunks = 0\n **/","'use strict';\n\n/*!\n * Fork by Zach Fitzgerald and other contributors of Ionic Material\n *\n * Waves v0.5.4\n * http://fian.my.id/Waves\n *\n * Copyright 2014 Alfiana E. Sibuea and other contributors\n *\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n *\n */\nmodule.exports = function (angularApp) {\n\n    angularApp.factory('ionicMaterialInk', ink);\n\n    function ink (){\n        /*global document*/\n        var Ink = Ink || {};\n\n            // all DOM nodes\n            var $$;\n\n            // phantomJS throws an error when you try to use document.querySelectorAll.bind\n            if(document && document.querySelectorAll && document.querySelectorAll.bind){\n                try{\n                    // all DOM nodes\n                    $$ = document.querySelectorAll.bind(document);\n\n                } catch(e){}\n            } else if (window && window.angular && window.angular.element) {\n                // we can use angular.element instead\n                $$ = window.angular.element;\n            } else {\n\n\n                    /**\n                     * mout.js 0.11.0 bind and slice polyfills (substitutes?)\n                     * TODO: pull out mout.js bind and slice molyfills and inject into material.ink\n                     */\n\n                    /**\n                     * Create slice of source array or array-like object\n                     */\n                    var slicePolyfill = function moutslicePolyfill(arr, start, end){\n                        var len = arr.length;\n                        /*jshint eqnull:true */\n                        if (start == null) {\n                            start = 0;\n                        } else if (start < 0) {\n                            start = Math.max(len + start, 0);\n                        } else {\n                            start = Math.min(start, len);\n                        }\n\n\n                        if (end == null) {\n\n                            end = len;\n                        } else if (end < 0) {\n                            end = Math.max(len + end, 0);\n                        } else {\n                            end = Math.min(end, len);\n                        }\n\n                        var result = [];\n                        while (start < end) {\n                            result.push(arr[start++]);\n                        }\n\n                        return result;\n                    };\n\n\n\n                    /**\n                     * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection.\n                     * @param {Function} fn  Function.\n                     * @param {object} context   Execution context.\n                     * @param {rest} args    Arguments (0...n arguments).\n                     * @return {Function} Wrapped Function.\n                     */\n                    var bindPolyfill = function moutBind(fn, context, args){\n                        var argsArr = slicePolyfill(arguments, 2); //curried args\n                        return function(){\n                            return fn.apply(context, argsArr.concat(slicePolyfill(arguments)));\n                        };\n                    };\n\n                    $$ = bindPolyfill(document.querySelectorAll, document);\n                    /*jshint ignore:end */\n            }\n\n            if (!$$){\n                throw new Error('ionic material ink module could not create reference of DOM nodes');\n            }\n\n            // Find exact position of element\n            function isWindow(obj) {\n                return obj !== null && obj === obj.window;\n            }\n\n            function getWindow(elem) {\n                return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n            }\n\n            function offset(elem) {\n                var docElem, win,\n                    box = {\n                        top: 0,\n                        left: 0\n                    },\n                    doc = elem && elem.ownerDocument;\n\n                docElem = doc.documentElement;\n\n                if (typeof elem.getBoundingClientRect !== typeof undefined) {\n                    box = elem.getBoundingClientRect();\n                }\n                win = getWindow(doc);\n                return {\n                    top: box.top + win.pageYOffset - docElem.clientTop,\n                    left: box.left + win.pageXOffset - docElem.clientLeft\n                };\n            }\n\n            function hexToRgb(hex) {\n                var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n                return result ? {\n                    r: parseInt(result[1], 16),\n                    g: parseInt(result[2], 16),\n                    b: parseInt(result[3], 16)\n                } : null;\n            }\n\n            function convertStyle(obj) {\n                var style = '';\n\n                for (var a in obj) {\n                    if (obj.hasOwnProperty(a)) {\n                        style += (a + ':' + obj[a] + ';');\n                    }\n                }\n\n                return style;\n            }\n\n            var Effect = {\n\n                // Effect delay\n                duration: 500,\n\n                show: function(e) {\n\n                    // Disable right click\n                    if (e.button === 2) {\n                        return false;\n                    }\n\n                    var el = this;\n\n                    // Create ripple\n                    var ripple = document.createElement('div');\n                    var customColor = this.dataset.inkColor;\n                    var customOpacity = this.dataset.inkOpacity;\n                    var hasCustomRipple = customColor || customOpacity;\n                    ripple.className = 'ink-ripple';\n                    el.appendChild(ripple);\n\n                    // Get click coordinate and element witdh\n                    var pos = offset(el);\n                    var relativeY = (e.pageY - pos.top);\n                    var relativeX = (e.pageX - pos.left);\n                    var scale = 'scale(' + ((el.clientWidth / 100) * 2.5) + ')';\n\n                    // Support for touch devices\n                    if ('touches' in e) {\n                        relativeY = (e.touches[0].pageY - pos.top);\n                        relativeX = (e.touches[0].pageX - pos.left);\n                    }\n\n                    // Attach data to element\n                    ripple.setAttribute('data-hold', Date.now());\n                    ripple.setAttribute('data-scale', scale);\n                    ripple.setAttribute('data-x', relativeX);\n                    ripple.setAttribute('data-y', relativeY);\n\n                    // Set ripple position\n                    var rippleStyle = {\n                        'top': relativeY + 'px',\n                        'left': relativeX + 'px'\n                    };\n\n                    ripple.className = ripple.className + ' ink-notransition';\n\n                    if (hasCustomRipple) {\n                        var colorRgb;\n                        if (customColor) {\n                            var fromHex = hexToRgb(customColor);\n                            colorRgb = fromHex.r + ',' + fromHex.g + ',' + fromHex.b;\n                        } else {\n                            colorRgb = '0,0,0';\n                        }\n                        if (!customOpacity) {\n                            customOpacity = 0.2;\n                        }\n                        var bg = 'rgba(' + colorRgb + ',' + customOpacity + ')';\n                        rippleStyle['background-color'] = bg;\n                    }\n\n                    ripple.setAttribute('style', convertStyle(rippleStyle));\n                    ripple.className = ripple.className.replace('ink-notransition', '');\n\n                    // Scale the ripple\n                    rippleStyle['-webkit-transform'] = scale;\n                    rippleStyle['-moz-transform'] = scale;\n                    rippleStyle['-ms-transform'] = scale;\n                    rippleStyle['-o-transform'] = scale;\n                    rippleStyle.transform = scale;\n                    rippleStyle.opacity = '1';\n\n                    rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';\n                    rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';\n                    rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';\n                    rippleStyle['transition-duration'] = Effect.duration + 'ms';\n\n                    ripple.setAttribute('style', convertStyle(rippleStyle));\n                },\n\n                hide: function() {\n\n                    var el = this;\n\n                    var width = el.clientWidth * 1.4;\n\n                    // Get first ripple\n                    var ripple = null;\n\n                    var childrenLength = el.children.length;\n\n                    for (var a = 0; a < childrenLength; a++) {\n                        if (el.children[a].className.indexOf('ink-ripple') !== -1) {\n                            ripple = el.children[a];\n                            continue;\n                        }\n                    }\n\n                    if (!ripple) {\n                        return false;\n                    }\n\n                    var relativeX = ripple.getAttribute('data-x');\n                    var relativeY = ripple.getAttribute('data-y');\n                    var scale = ripple.getAttribute('data-scale');\n\n                    // Get delay beetween mousedown and mouse leave\n                    var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n                    var delay = 500 - diff;\n\n                    if (delay < 0) {\n                        delay = 0;\n                    }\n\n                    // Fade out ripple after delay\n                    setTimeout(function() {\n\n                        var style = {\n                            'top': relativeY + 'px',\n                            'left': relativeX + 'px',\n                            'opacity': '0',\n\n                            // Duration\n                            '-webkit-transition-duration': Effect.duration + 'ms',\n                            '-moz-transition-duration': Effect.duration + 'ms',\n                            '-o-transition-duration': Effect.duration + 'ms',\n                            'transition-duration': Effect.duration + 'ms',\n                            '-webkit-transform': scale,\n                            '-moz-transform': scale,\n                            '-ms-transform': scale,\n                            '-o-transform': scale,\n                            'transform': scale,\n                        };\n\n                        ripple.setAttribute('style', convertStyle(style));\n\n                        setTimeout(function() {\n                            try {\n                                el.removeChild(ripple);\n                            } catch (e) {\n                                return false;\n                            }\n                        }, Effect.duration);\n                    }, delay);\n                },\n\n                // Little hack to make <input> can perform ink effect\n                wrapInput: function(elements) {\n\n                    for (var a = 0; a < elements.length; a++) {\n\n                        var el = elements[a];\n\n                        if (el.tagName.toLowerCase() === 'input') {\n\n                            var parent = el.parentNode;\n\n                            // If input already have parent just pass through\n                            if (parent.tagName.toLowerCase() === 'i' &&\n                                parent.className.indexOf('ink') !== -1 &&\n                                parent.className.indexOf('tab-item') !== -1 &&\n                                parent.className.indexOf('button-fab') !== -1 &&\n                                parent.className.indexOf('button-raised') !== -1 &&\n                                parent.className.indexOf('button-flat') !== -1 &&\n                                parent.className.indexOf('button-clear') !== -1 &&\n                                parent.className.indexOf('button') !== -1 &&\n                                parent.className.indexOf('item') !== -1) {\n                                return false;\n                            }\n\n                            // Put element class and style to the specified parent\n                            var wrapper = document.createElement('i');\n                            wrapper.className = el.className + ' ink-input-wrapper';\n\n                            var elementStyle = el.getAttribute('style');\n\n                            if (!elementStyle) {\n                                elementStyle = '';\n                            }\n\n                            wrapper.setAttribute('style', elementStyle);\n\n                            el.className = 'ink-button-input';\n                            el.removeAttribute('style');\n\n                            // Put element as child\n                            parent.replaceChild(wrapper, el);\n                            wrapper.appendChild(el);\n                        }\n                    }\n                }\n            };\n\n            Ink.displayEffect = function(options) {\n                options = options || {};\n\n                if ('duration' in options) {\n                    Effect.duration = options.duration;\n                }\n\n                //Wrap input inside <i> tag\n                var selectors = '.ink,.tab-item,.button-fab,.button-raised,.button-flat,.button-clear,a.item,.popup .button';\n                Effect.wrapInput($$(selectors));\n\n                Array.prototype.forEach.call($$(selectors), function(i) {\n                    if ('ontouchstart' in window) {\n                        i.addEventListener('touchstart', Effect.show, false);\n                        i.addEventListener('touchend', Effect.hide, false);\n                        i.addEventListener('touchcancel', Effect.hide, false);\n                    } else {\n                        i.addEventListener('mousedown', Effect.show, false);\n                        i.addEventListener('mouseup', Effect.hide, false);\n                        i.addEventListener('mouseleave', Effect.hide, false);\n                    }\n                });\n            };\n\n            return Ink;\n    }\n\n    ink.inject = [];\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/lib/_ink.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = function(angularApp) {\n    angularApp.factory('ionicMaterialMotion', Motion);\n\n    function Motion() {\n        /*global document, window*/\n\n        'use strict';\n\n        /*============================================================================*/\n        /* HELPERS (non-exports)\n        /=============================================================================*\n        /   Abstract common lookups and manipulations in case better alternatives\n        /   arise or future cross-platform differences warrant separate handling\n        /=============================================================================*/\n\n        function getViewportHeight() {\n            return window.innerHeight;\n        }\n\n        function getBoundingClientRect(domNode) {\n            return domNode.getBoundingClientRect;\n        }\n\n        function showNotAnimatedElements(elements, total) {\n            // Load the elements without effect\n            for (var i = 0; i < total; i++) {\n                var child = elements[i];\n                child.className += ' in';\n                child.className += ' done';\n            }\n        }\n\n\n\n        /*============================================================================*/\n        /* MOTION (EXPORT)\n        /=============================================================================*\n        /   Animation methods for the library\n        /=============================================================================*/\n\n        var motion = {\n            blinds: blinds,\n            fadeSlideIn: fadeSlideIn,\n            fadeSlideInRight: fadeSlideInRight,\n            panInLeft: panInLeft,\n            pushDown: pushDown,\n            ripple: ripple,\n            slideUp: slideUp\n        };\n\n        function blinds(options) {\n\n            // Declare our defaults\n            var defaults = {\n                finishDelayThrottle: 2,\n                finishSpeedPercent: 0.5,\n                leftOffsetPercentage: 0.8,\n                selector: '.animate-blinds .item',\n                startVelocity: 1100\n            };\n\n            // Apply defaults if properties are not passed\n            if (typeof options === 'undefined') {\n                options = {};\n            }\n\n            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n            if (typeof options.selector == 'undefined') {\n                options.selector = defaults.selector;\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid blinds selector');\n                return false;\n            }\n\n            var animateBlindsDom = document.querySelectorAll(options.selector);\n            var elementsCount = animateBlindsDom.length;\n            var elementAnimationCount = 0;\n\n            // Count the elements within the starting viewport so we're not exacting\n            // more effort than required...\n            //\n            // We use css visiblity: hidden instead of display: none so the elements\n            // maintain their DOM flow\n\n            var viewportHeight = getViewportHeight();\n            for (var i = 0; i < elementsCount; i++) {\n                if (animateBlindsDom[i].offsetTop < viewportHeight) {\n                    elementAnimationCount += 1;\n                    continue;\n                }\n                break;\n            }\n\n            // Sequentially animate with a delay based on proximity\n            var speed = options.startVelocity;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var child = animateBlindsDom[i];\n                var childOffset = child.getBoundingClientRect();\n                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                var delay = parseFloat(offset / speed).toFixed(2);\n                child.style.webkitTransitionDelay = delay + \"s\";\n                child.style.transitionDelay = delay + \"s\";\n                child.className += ' in';\n            }\n\n            // When we're done animating, switch the class to 'done'\n            setTimeout(function() {\n                for (var i = 0; i < elementAnimationCount; i++) {\n                    var child = animateBlindsDom[i];\n                    var childOffset = child.getBoundingClientRect();\n                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                    var delay = parseFloat(offset / speed / options.finishDelayThrottle).toFixed(2);\n                    //child.querySelector('img').style.webkitTransitionDelay = delay + \"s\";\n                    //child.querySelector('img').style.transitionDelay = delay + \"s\";\n                    //child.querySelector('img').className += ' in';\n                    animateBlindsDom[i].className += ' done';\n                }\n\n            }, speed * options.finishSpeedPercent);\n\n            // Load the elements without effect\n            showNotAnimatedElements(animateBlindsDom, elementsCount);\n        }\n\n        function fadeSlideIn(options) {\n\n            // Declare our defaults\n            var defaults = {\n                finishDelayThrottle: 2,\n                finishSpeedPercent: 0.72,\n                leftOffsetPercentage: 0.8,\n                selector: '.animate-fade-slide-in .item',\n                startVelocity: 1100\n            };\n\n            // Apply defaults if properties are not passed\n            if (typeof options === 'undefined') {\n                options = {};\n            }\n\n            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n            if (typeof options.selector == 'undefined') {\n                options.selector = defaults.selector;\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid fadeSlideIn selector');\n                return false;\n            }\n\n            var animateFadeSlideInDom = document.querySelectorAll(options.selector);\n            var elementsCount = animateFadeSlideInDom.length;\n            var elementAnimationCount = 0;\n\n            // Count the elements within the starting viewport so we're not exacting\n            // more effort than required...\n            //\n            // We use css visiblity: hidden instead of display: none so the elements\n            // maintain their DOM flow\n\n            var viewportHeight = getViewportHeight();\n            for (var i = 0; i < elementsCount; i++) {\n                if (animateFadeSlideInDom[i].offsetTop < viewportHeight) {\n                    elementAnimationCount += 1;\n                    continue;\n                }\n                break;\n            }\n\n            // Sequentially animate with a delay based on proximity\n            var speed = options.startVelocity;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var child = animateFadeSlideInDom[i];\n                var childOffset = child.getBoundingClientRect();\n                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                var delay = parseFloat(offset / speed).toFixed(2);\n                child.style.webkitTransitionDelay = delay + \"s\";\n                child.style.transitionDelay = delay + \"s\";\n                child.className += ' in';\n            }\n\n            // When we're done animating, switch the class to 'done'\n            setTimeout(function() {\n                for (var i = 0; i < elementAnimationCount; i++) {\n                    var child = animateFadeSlideInDom[i];\n                    var childOffset = child.getBoundingClientRect();\n                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                    var delayValue = offset / speed / options.finishDelayThrottle;\n                    var delay = parseFloat(delayValue).toFixed(2);\n                }\n                animateFadeSlideInDom[0].className += ' done';\n\n            }, speed * options.finishSpeedPercent);\n\n            // Load the elements without effect\n            showNotAnimatedElements(animateFadeSlideInDom, elementsCount);\n        }\n\n        function fadeSlideInRight(options) {\n\n            // Declare our defaults\n            var defaults = {\n                finishDelayThrottle: 2,\n                finishSpeedPercent: 0.72,\n                leftOffsetPercentage: 0.8,\n                selector: '.animate-fade-slide-in-right .item',\n                startVelocity: 1100\n            };\n\n            // Apply defaults if properties are not passed\n            if (typeof options === 'undefined') {\n                options = {};\n            }\n\n            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n            if (typeof options.selector == 'undefined') {\n                options.selector = defaults.selector;\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid fadeSlideInRight selector');\n                return false;\n            }\n\n            var animateSlideInRightDom = document.querySelectorAll(options.selector);\n            var elementsCount = animateSlideInRightDom.length;\n            var elementAnimationCount = 0;\n\n            // Count the elements within the starting viewport so we're not\n            // exacting more effort than required...\n            //\n            // We use css visiblity: hidden instead of display: none so the\n            // elements maintain their DOM flow\n\n            var viewportHeight = getViewportHeight();\n            for (var i = 0; i < elementsCount; i++) {\n                if (animateSlideInRightDom[i].offsetTop < viewportHeight) {\n                    elementAnimationCount += 1;\n                    continue;\n                }\n                break;\n            }\n\n            // Sequentially animate with a delay based on proximity\n            var speed = options.startVelocity;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var child = animateSlideInRightDom[i];\n                var childOffset = child.getBoundingClientRect();\n                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                var delay = parseFloat(offset / speed).toFixed(2);\n                child.style.webkitTransitionDelay = delay + \"s\";\n                child.style.transitionDelay = delay + \"s\";\n                child.className += ' in';\n            }\n\n            // When we're done animating, switch the class to 'done'\n            setTimeout(function() {\n                for (var i = 0; i < elementAnimationCount; i++) {\n                    var child = animateSlideInRightDom[i];\n                    var childOffset = child.getBoundingClientRect();\n                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                    var delayValue = offset / speed / options.finishDelayThrottle;\n                    var delay = parseFloat(delayValue).toFixed(2);\n                }\n                animateSlideInRightDom[0].className += ' done';\n\n            }, speed * options.finishSpeedPercent);\n\n            // Load the elements without effect\n            showNotAnimatedElements(animateSlideInRightDom, elementsCount);\n\n        }\n\n        function ripple(options) {\n\n            // Declare our defaults\n            var defaults = {\n                finishDelayThrottle: 2,\n                finishSpeedPercent: 0.72,\n                leftOffsetPercentage: 0.8,\n                selector: '.animate-ripple .item',\n                startVelocity: 1100\n            };\n\n            // Apply defaults if properties are not passed\n            if (typeof options === 'undefined') {\n                options = {};\n            }\n\n            options.finishDelayThrottle = options.finishDelayThrottle || defaults.finishDelayThrottle;\n            options.finishSpeedPercent = options.finishSpeedPercent || defaults.finishSpeedPercent;\n            options.leftOffsetPercentage = options.leftOffsetPercentage || defaults.leftOffsetPercentage;\n            options.startVelocity = options.startVelocity || defaults.startVelocity;\n\n            if (typeof options.selector == 'undefined') {\n                options.selector = defaults.selector;\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid ripple selector');\n                return false;\n            }\n\n            var animateRippleDom = document.querySelectorAll(options.selector);\n            var elementsCount = animateRippleDom.length;\n            var elementAnimationCount = 0;\n\n            // Count the elements within the starting viewport so we're not\n            // exacting more effort than required...\n            //\n            // We use css visiblity: hidden instead of display: none so the\n            // elements maintain their DOM flow\n\n            var viewportHeight = getViewportHeight();\n            for (var i = 0; i < animateRippleDom.length; i++) {\n                if (animateRippleDom[i].offsetTop < viewportHeight) {\n                    elementAnimationCount += 1;\n                    continue;\n                }\n                break;\n            }\n\n            // Sequentially animate with a delay based on proximity\n            var speed = options.startVelocity;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var child = animateRippleDom[i];\n                var childOffset = child.getBoundingClientRect();\n                var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                var delay = parseFloat(offset / speed).toFixed(2);\n                child.style.webkitTransitionDelay = delay + \"s\";\n                child.style.transitionDelay = delay + \"s\";\n                child.className += ' in';\n            }\n\n            // When we're done animating, switch the class to 'done'\n            setTimeout(function() {\n                for (var i = 0; i < elementAnimationCount; i++) {\n                    var child = animateRippleDom[i];\n                    var childOffset = child.getBoundingClientRect();\n                    var offset = childOffset.left * options.leftOffsetPercentage + childOffset.top;\n                    var delayValue = offset / speed / options.finishDelayThrottle;\n                    var delay = parseFloat(delayValue).toFixed(2);\n                }\n                animateRippleDom[0].className += ' done';\n\n            }, speed * options.finishSpeedPercent);\n\n            // Load the elements without effect\n            showNotAnimatedElements(animateRippleDom, elementsCount);\n        }\n\n        function panInLeft(options) {\n\n            // We have a single option, so it may be passed as a string or property\n            if (typeof options === 'string') {\n                options = {\n                    selector: options\n                };\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid pushDown selector');\n                return false;\n            }\n\n            var animatePanInLeftDom = document.querySelectorAll(options.selector);\n            var elementAnimationCount = animatePanInLeftDom.length;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var element = animatePanInLeftDom[i];\n                var classNameToRemove = 'animate-pan-in-left';\n                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n                element.className = element.className.substr(0, indexOfClassNameToRemove);\n            }\n        }\n\n        function pushDown(options) {\n\n            // We have a single option, so it may be passed as a string or property\n            if (typeof options === 'string') {\n                options = {\n                    selector: options\n                };\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid pushDown selector');\n                return false;\n            }\n\n            var animatePushDownDom = document.querySelectorAll(options.selector);\n            var elementAnimationCount = animatePushDownDom.length;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var element = animatePushDownDom[i];\n                var classNameToRemove = options.selector.split('.')[1];\n                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n                element.className = element.className.substr(0, indexOfClassNameToRemove);\n            }\n        }\n\n        function slideUp(options) {\n\n            // We have a single option, so it may be passed as a string or property\n            if (typeof options === 'string') {\n                options = {\n                    selector: options\n                };\n            }\n\n            // Fail early & silently log\n            var isInvalidSelector = typeof options.selector === 'undefined' || options.selector === '';\n\n            if (isInvalidSelector) {\n                console.log('invalid pushDown selector');\n                return false;\n            }\n\n            var animateSlideUpDom = document.querySelectorAll(options.selector);\n            var elementAnimationCount = animateSlideUpDom.length;\n            for (var i = 0; i < elementAnimationCount; i++) {\n                var element = animateSlideUpDom[i];\n                var classNameToRemove = options.selector.split('.')[1];\n                var indexOfClassNameToRemove = element.className.lastIndexOf(classNameToRemove);\n                element.className = element.className.substr(0, indexOfClassNameToRemove);\n            }\n        }\n\n        /* Export object\n        /============================================================================*/\n        return motion;\n    }\n\n    Motion.$inject = [];\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/js/lib/_motion.js\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file
-- 
GitLab