diff --git a/node_modules/material-design-lite/src/INTRODUCTION.md b/node_modules/material-design-lite/src/INTRODUCTION.md
new file mode 100755
index 0000000..e27dfb2
--- /dev/null
+++ b/node_modules/material-design-lite/src/INTRODUCTION.md
@@ -0,0 +1,44 @@
+# Material Design Lite
+
+## Introduction
+**Material Design Light (MDL)** is a library of components for web developers based on Google's **Material Design** philosophy: "A visual language for our users that synthesizes the classic principles of good design with the innovation and possibility of technology and science." Understanding the goals and principles of Material Design is critical to the proper use of the MDL components. If you have not yet read the [Material Design Introduction](http://www.google.com/design/spec/material-design/introduction.html), you should do so before attempting to use the components.
+
+The MDL components are created with CSS, JavaScript, and HTML. You can use the components to construct web pages and web apps that are attractive, consistent, and functional. Pages developed with MDL will adhere to modern web design principles like browser portability, device independence, and graceful degradation.
+
+The MDL component library includes new versions of common user interface controls such as buttons, check boxes, and text fields, adapted to follow Material Design concepts. The library also includes enhanced and specialized features like cards, column layouts, sliders, spinners, tabs, typography, and more.
+
+MDL is free to download and use, and may be used with or without any build library or development environment (such as [Material Design Lite](http://www.getmdl.io/)). It is a cross-browser, cross-OS web developer's toolkit that can be used by anyone who wants to write more productive, portable, and &mdash; most importantly &mdash; usable web pages.
+
+## Getting started
+
+### Get the components
+To obtain the components, clone or download the [GitHub MDL repository](https://github.com/google/material-design-lite). Copy the entire package (the top-level folder and everything below it) to the project folder where you will write your HTML pages. This ensures that your project can access all of MDL's components and assets, and that you always have the original files for reference in case you break something. :-)
+
+### Include the master CSS and JavaScript
+In each HTML page in your project, include the minified (compressed) CSS and JavaScript files using standard relative-path references and the Material Icon font. This example assumes that a copy of the MDL package folders resides in your project folder.
+
+
+```html
+<link rel="stylesheet" href="css/material.min.css">
+<script src="js/material.min.js"></script>
+<link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons">
+```
+
+That's it! You are now ready to use the MDL components.
+
+### Use the components
+In general, follow these basic steps to use an MDL component in your HTML page.
+
+1. Start with a standard HTML element, such as `<button>`, `<div>`, or `<ul>`, depending on the MDL component you want to use. This establishes the element in the page and readies it for MDL modification.<br><br>
+2. Add one or more MDL-specific CSS classes to the element, such as `mdl-button` or   `mdl-tabs__panel` again depending on the component. The classes apply the MDL enhancements to the element and effectively turn it into an MDL component.<br><br>
+3. View the page, preferably in multiple browsers on multiple devices, to ensure that the component looks and behaves as expected.
+
+>**A note about HTML elements and MDL CSS classes**
+>Material Design Lite uses CSS *independent classes*, which can apply to any HTML element, to construct components. For some components, you can use almost any element. For other components, some elements give better visual or behavioral performance than others. The examples in each component's README file use elements that perform well as that component. If you must use elements other than those shown in the examples, we encourage you to experiment to find the best combination of HTML elements and MDL CSS classes for your application.
+
+## What's next?
+Detailed instructions for using the components, including MDL classes and their effects, coding considerations, and configuration options, can be found in each component's `README.md` file. Working examples using various options are in each component's `demo.html` page.
+
+## License
+
+Copyright Google, 2015. Licensed under an Apache-2 license.
diff --git a/node_modules/material-design-lite/src/_color-definitions.scss b/node_modules/material-design-lite/src/_color-definitions.scss
new file mode 100644
index 0000000..10b3646
--- /dev/null
+++ b/node_modules/material-design-lite/src/_color-definitions.scss
@@ -0,0 +1,599 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* ==========  Color Palettes  ========== */
+
+// Color order: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200,
+// A400, A700.
+
+$palette-red:
+"255,235,238"
+"255,205,210"
+"239,154,154"
+"229,115,115"
+"239,83,80"
+"244,67,54"
+"229,57,53"
+"211,47,47"
+"198,40,40"
+"183,28,28"
+"255,138,128"
+"255,82,82"
+"255,23,68"
+"213,0,0";
+
+$palette-red-50: nth($palette-red, 1);
+$palette-red-100: nth($palette-red, 2);
+$palette-red-200: nth($palette-red, 3);
+$palette-red-300: nth($palette-red, 4);
+$palette-red-400: nth($palette-red, 5);
+$palette-red-500: nth($palette-red, 6);
+$palette-red-600: nth($palette-red, 7);
+$palette-red-700: nth($palette-red, 8);
+$palette-red-800: nth($palette-red, 9);
+$palette-red-900: nth($palette-red, 10);
+$palette-red-A100: nth($palette-red, 11);
+$palette-red-A200: nth($palette-red, 12);
+$palette-red-A400: nth($palette-red, 13);
+$palette-red-A700: nth($palette-red, 14);
+
+$palette-pink:
+"252,228,236"
+"248,187,208"
+"244,143,177"
+"240,98,146"
+"236,64,122"
+"233,30,99"
+"216,27,96"
+"194,24,91"
+"173,20,87"
+"136,14,79"
+"255,128,171"
+"255,64,129"
+"245,0,87"
+"197,17,98";
+
+$palette-pink-50: nth($palette-pink, 1);
+$palette-pink-100: nth($palette-pink, 2);
+$palette-pink-200: nth($palette-pink, 3);
+$palette-pink-300: nth($palette-pink, 4);
+$palette-pink-400: nth($palette-pink, 5);
+$palette-pink-500: nth($palette-pink, 6);
+$palette-pink-600: nth($palette-pink, 7);
+$palette-pink-700: nth($palette-pink, 8);
+$palette-pink-800: nth($palette-pink, 9);
+$palette-pink-900: nth($palette-pink, 10);
+$palette-pink-A100: nth($palette-pink, 11);
+$palette-pink-A200: nth($palette-pink, 12);
+$palette-pink-A400: nth($palette-pink, 13);
+$palette-pink-A700: nth($palette-pink, 14);
+
+$palette-purple:
+"243,229,245"
+"225,190,231"
+"206,147,216"
+"186,104,200"
+"171,71,188"
+"156,39,176"
+"142,36,170"
+"123,31,162"
+"106,27,154"
+"74,20,140"
+"234,128,252"
+"224,64,251"
+"213,0,249"
+"170,0,255";
+
+$palette-purple-50: nth($palette-purple, 1);
+$palette-purple-100: nth($palette-purple, 2);
+$palette-purple-200: nth($palette-purple, 3);
+$palette-purple-300: nth($palette-purple, 4);
+$palette-purple-400: nth($palette-purple, 5);
+$palette-purple-500: nth($palette-purple, 6);
+$palette-purple-600: nth($palette-purple, 7);
+$palette-purple-700: nth($palette-purple, 8);
+$palette-purple-800: nth($palette-purple, 9);
+$palette-purple-900: nth($palette-purple, 10);
+$palette-purple-A100: nth($palette-purple, 11);
+$palette-purple-A200: nth($palette-purple, 12);
+$palette-purple-A400: nth($palette-purple, 13);
+$palette-purple-A700: nth($palette-purple, 14);
+
+$palette-deep-purple:
+"237,231,246"
+"209,196,233"
+"179,157,219"
+"149,117,205"
+"126,87,194"
+"103,58,183"
+"94,53,177"
+"81,45,168"
+"69,39,160"
+"49,27,146"
+"179,136,255"
+"124,77,255"
+"101,31,255"
+"98,0,234";
+
+$palette-deep-purple-50: nth($palette-deep-purple, 1);
+$palette-deep-purple-100: nth($palette-deep-purple, 2);
+$palette-deep-purple-200: nth($palette-deep-purple, 3);
+$palette-deep-purple-300: nth($palette-deep-purple, 4);
+$palette-deep-purple-400: nth($palette-deep-purple, 5);
+$palette-deep-purple-500: nth($palette-deep-purple, 6);
+$palette-deep-purple-600: nth($palette-deep-purple, 7);
+$palette-deep-purple-700: nth($palette-deep-purple, 8);
+$palette-deep-purple-800: nth($palette-deep-purple, 9);
+$palette-deep-purple-900: nth($palette-deep-purple, 10);
+$palette-deep-purple-A100: nth($palette-deep-purple, 11);
+$palette-deep-purple-A200: nth($palette-deep-purple, 12);
+$palette-deep-purple-A400: nth($palette-deep-purple, 13);
+$palette-deep-purple-A700: nth($palette-deep-purple, 14);
+
+$palette-indigo:
+"232,234,246"
+"197,202,233"
+"159,168,218"
+"121,134,203"
+"92,107,192"
+"63,81,181"
+"57,73,171"
+"48,63,159"
+"40,53,147"
+"26,35,126"
+"140,158,255"
+"83,109,254"
+"61,90,254"
+"48,79,254";
+
+$palette-indigo-50: nth($palette-indigo, 1);
+$palette-indigo-100: nth($palette-indigo, 2);
+$palette-indigo-200: nth($palette-indigo, 3);
+$palette-indigo-300: nth($palette-indigo, 4);
+$palette-indigo-400: nth($palette-indigo, 5);
+$palette-indigo-500: nth($palette-indigo, 6);
+$palette-indigo-600: nth($palette-indigo, 7);
+$palette-indigo-700: nth($palette-indigo, 8);
+$palette-indigo-800: nth($palette-indigo, 9);
+$palette-indigo-900: nth($palette-indigo, 10);
+$palette-indigo-A100: nth($palette-indigo, 11);
+$palette-indigo-A200: nth($palette-indigo, 12);
+$palette-indigo-A400: nth($palette-indigo, 13);
+$palette-indigo-A700: nth($palette-indigo, 14);
+
+$palette-blue:
+"227,242,253"
+"187,222,251"
+"144,202,249"
+"100,181,246"
+"66,165,245"
+"33,150,243"
+"30,136,229"
+"25,118,210"
+"21,101,192"
+"13,71,161"
+"130,177,255"
+"68,138,255"
+"41,121,255"
+"41,98,255";
+
+$palette-blue-50: nth($palette-blue, 1);
+$palette-blue-100: nth($palette-blue, 2);
+$palette-blue-200: nth($palette-blue, 3);
+$palette-blue-300: nth($palette-blue, 4);
+$palette-blue-400: nth($palette-blue, 5);
+$palette-blue-500: nth($palette-blue, 6);
+$palette-blue-600: nth($palette-blue, 7);
+$palette-blue-700: nth($palette-blue, 8);
+$palette-blue-800: nth($palette-blue, 9);
+$palette-blue-900: nth($palette-blue, 10);
+$palette-blue-A100: nth($palette-blue, 11);
+$palette-blue-A200: nth($palette-blue, 12);
+$palette-blue-A400: nth($palette-blue, 13);
+$palette-blue-A700: nth($palette-blue, 14);
+
+$palette-light-blue:
+"225,245,254"
+"179,229,252"
+"129,212,250"
+"79,195,247"
+"41,182,246"
+"3,169,244"
+"3,155,229"
+"2,136,209"
+"2,119,189"
+"1,87,155"
+"128,216,255"
+"64,196,255"
+"0,176,255"
+"0,145,234";
+
+$palette-light-blue-50: nth($palette-light-blue, 1);
+$palette-light-blue-100: nth($palette-light-blue, 2);
+$palette-light-blue-200: nth($palette-light-blue, 3);
+$palette-light-blue-300: nth($palette-light-blue, 4);
+$palette-light-blue-400: nth($palette-light-blue, 5);
+$palette-light-blue-500: nth($palette-light-blue, 6);
+$palette-light-blue-600: nth($palette-light-blue, 7);
+$palette-light-blue-700: nth($palette-light-blue, 8);
+$palette-light-blue-800: nth($palette-light-blue, 9);
+$palette-light-blue-900: nth($palette-light-blue, 10);
+$palette-light-blue-A100: nth($palette-light-blue, 11);
+$palette-light-blue-A200: nth($palette-light-blue, 12);
+$palette-light-blue-A400: nth($palette-light-blue, 13);
+$palette-light-blue-A700: nth($palette-light-blue, 14);
+
+$palette-cyan:
+"224,247,250"
+"178,235,242"
+"128,222,234"
+"77,208,225"
+"38,198,218"
+"0,188,212"
+"0,172,193"
+"0,151,167"
+"0,131,143"
+"0,96,100"
+"132,255,255"
+"24,255,255"
+"0,229,255"
+"0,184,212";
+
+$palette-cyan-50: nth($palette-cyan, 1);
+$palette-cyan-100: nth($palette-cyan, 2);
+$palette-cyan-200: nth($palette-cyan, 3);
+$palette-cyan-300: nth($palette-cyan, 4);
+$palette-cyan-400: nth($palette-cyan, 5);
+$palette-cyan-500: nth($palette-cyan, 6);
+$palette-cyan-600: nth($palette-cyan, 7);
+$palette-cyan-700: nth($palette-cyan, 8);
+$palette-cyan-800: nth($palette-cyan, 9);
+$palette-cyan-900: nth($palette-cyan, 10);
+$palette-cyan-A100: nth($palette-cyan, 11);
+$palette-cyan-A200: nth($palette-cyan, 12);
+$palette-cyan-A400: nth($palette-cyan, 13);
+$palette-cyan-A700: nth($palette-cyan, 14);
+
+$palette-teal:
+"224,242,241"
+"178,223,219"
+"128,203,196"
+"77,182,172"
+"38,166,154"
+"0,150,136"
+"0,137,123"
+"0,121,107"
+"0,105,92"
+"0,77,64"
+"167,255,235"
+"100,255,218"
+"29,233,182"
+"0,191,165";
+
+$palette-teal-50: nth($palette-teal, 1);
+$palette-teal-100: nth($palette-teal, 2);
+$palette-teal-200: nth($palette-teal, 3);
+$palette-teal-300: nth($palette-teal, 4);
+$palette-teal-400: nth($palette-teal, 5);
+$palette-teal-500: nth($palette-teal, 6);
+$palette-teal-600: nth($palette-teal, 7);
+$palette-teal-700: nth($palette-teal, 8);
+$palette-teal-800: nth($palette-teal, 9);
+$palette-teal-900: nth($palette-teal, 10);
+$palette-teal-A100: nth($palette-teal, 11);
+$palette-teal-A200: nth($palette-teal, 12);
+$palette-teal-A400: nth($palette-teal, 13);
+$palette-teal-A700: nth($palette-teal, 14);
+
+$palette-green:
+"232,245,233"
+"200,230,201"
+"165,214,167"
+"129,199,132"
+"102,187,106"
+"76,175,80"
+"67,160,71"
+"56,142,60"
+"46,125,50"
+"27,94,32"
+"185,246,202"
+"105,240,174"
+"0,230,118"
+"0,200,83";
+
+$palette-green-50: nth($palette-green, 1);
+$palette-green-100: nth($palette-green, 2);
+$palette-green-200: nth($palette-green, 3);
+$palette-green-300: nth($palette-green, 4);
+$palette-green-400: nth($palette-green, 5);
+$palette-green-500: nth($palette-green, 6);
+$palette-green-600: nth($palette-green, 7);
+$palette-green-700: nth($palette-green, 8);
+$palette-green-800: nth($palette-green, 9);
+$palette-green-900: nth($palette-green, 10);
+$palette-green-A100: nth($palette-green, 11);
+$palette-green-A200: nth($palette-green, 12);
+$palette-green-A400: nth($palette-green, 13);
+$palette-green-A700: nth($palette-green, 14);
+
+$palette-light-green:
+"241,248,233"
+"220,237,200"
+"197,225,165"
+"174,213,129"
+"156,204,101"
+"139,195,74"
+"124,179,66"
+"104,159,56"
+"85,139,47"
+"51,105,30"
+"204,255,144"
+"178,255,89"
+"118,255,3"
+"100,221,23";
+
+$palette-light-green-50: nth($palette-light-green, 1);
+$palette-light-green-100: nth($palette-light-green, 2);
+$palette-light-green-200: nth($palette-light-green, 3);
+$palette-light-green-300: nth($palette-light-green, 4);
+$palette-light-green-400: nth($palette-light-green, 5);
+$palette-light-green-500: nth($palette-light-green, 6);
+$palette-light-green-600: nth($palette-light-green, 7);
+$palette-light-green-700: nth($palette-light-green, 8);
+$palette-light-green-800: nth($palette-light-green, 9);
+$palette-light-green-900: nth($palette-light-green, 10);
+$palette-light-green-A100: nth($palette-light-green, 11);
+$palette-light-green-A200: nth($palette-light-green, 12);
+$palette-light-green-A400: nth($palette-light-green, 13);
+$palette-light-green-A700: nth($palette-light-green, 14);
+
+$palette-lime:
+"249,251,231"
+"240,244,195"
+"230,238,156"
+"220,231,117"
+"212,225,87"
+"205,220,57"
+"192,202,51"
+"175,180,43"
+"158,157,36"
+"130,119,23"
+"244,255,129"
+"238,255,65"
+"198,255,0"
+"174,234,0";
+
+$palette-lime-50: nth($palette-lime, 1);
+$palette-lime-100: nth($palette-lime, 2);
+$palette-lime-200: nth($palette-lime, 3);
+$palette-lime-300: nth($palette-lime, 4);
+$palette-lime-400: nth($palette-lime, 5);
+$palette-lime-500: nth($palette-lime, 6);
+$palette-lime-600: nth($palette-lime, 7);
+$palette-lime-700: nth($palette-lime, 8);
+$palette-lime-800: nth($palette-lime, 9);
+$palette-lime-900: nth($palette-lime, 10);
+$palette-lime-A100: nth($palette-lime, 11);
+$palette-lime-A200: nth($palette-lime, 12);
+$palette-lime-A400: nth($palette-lime, 13);
+$palette-lime-A700: nth($palette-lime, 14);
+
+$palette-yellow:
+"255,253,231"
+"255,249,196"
+"255,245,157"
+"255,241,118"
+"255,238,88"
+"255,235,59"
+"253,216,53"
+"251,192,45"
+"249,168,37"
+"245,127,23"
+"255,255,141"
+"255,255,0"
+"255,234,0"
+"255,214,0";
+
+$palette-yellow-50: nth($palette-yellow, 1);
+$palette-yellow-100: nth($palette-yellow, 2);
+$palette-yellow-200: nth($palette-yellow, 3);
+$palette-yellow-300: nth($palette-yellow, 4);
+$palette-yellow-400: nth($palette-yellow, 5);
+$palette-yellow-500: nth($palette-yellow, 6);
+$palette-yellow-600: nth($palette-yellow, 7);
+$palette-yellow-700: nth($palette-yellow, 8);
+$palette-yellow-800: nth($palette-yellow, 9);
+$palette-yellow-900: nth($palette-yellow, 10);
+$palette-yellow-A100: nth($palette-yellow, 11);
+$palette-yellow-A200: nth($palette-yellow, 12);
+$palette-yellow-A400: nth($palette-yellow, 13);
+$palette-yellow-A700: nth($palette-yellow, 14);
+
+$palette-amber:
+"255,248,225"
+"255,236,179"
+"255,224,130"
+"255,213,79"
+"255,202,40"
+"255,193,7"
+"255,179,0"
+"255,160,0"
+"255,143,0"
+"255,111,0"
+"255,229,127"
+"255,215,64"
+"255,196,0"
+"255,171,0";
+
+$palette-amber-50: nth($palette-amber, 1);
+$palette-amber-100: nth($palette-amber, 2);
+$palette-amber-200: nth($palette-amber, 3);
+$palette-amber-300: nth($palette-amber, 4);
+$palette-amber-400: nth($palette-amber, 5);
+$palette-amber-500: nth($palette-amber, 6);
+$palette-amber-600: nth($palette-amber, 7);
+$palette-amber-700: nth($palette-amber, 8);
+$palette-amber-800: nth($palette-amber, 9);
+$palette-amber-900: nth($palette-amber, 10);
+$palette-amber-A100: nth($palette-amber, 11);
+$palette-amber-A200: nth($palette-amber, 12);
+$palette-amber-A400: nth($palette-amber, 13);
+$palette-amber-A700: nth($palette-amber, 14);
+
+$palette-orange:
+"255,243,224"
+"255,224,178"
+"255,204,128"
+"255,183,77"
+"255,167,38"
+"255,152,0"
+"251,140,0"
+"245,124,0"
+"239,108,0"
+"230,81,0"
+"255,209,128"
+"255,171,64"
+"255,145,0"
+"255,109,0";
+
+$palette-orange-50: nth($palette-orange, 1);
+$palette-orange-100: nth($palette-orange, 2);
+$palette-orange-200: nth($palette-orange, 3);
+$palette-orange-300: nth($palette-orange, 4);
+$palette-orange-400: nth($palette-orange, 5);
+$palette-orange-500: nth($palette-orange, 6);
+$palette-orange-600: nth($palette-orange, 7);
+$palette-orange-700: nth($palette-orange, 8);
+$palette-orange-800: nth($palette-orange, 9);
+$palette-orange-900: nth($palette-orange, 10);
+$palette-orange-A100: nth($palette-orange, 11);
+$palette-orange-A200: nth($palette-orange, 12);
+$palette-orange-A400: nth($palette-orange, 13);
+$palette-orange-A700: nth($palette-orange, 14);
+
+$palette-deep-orange:
+"251,233,231"
+"255,204,188"
+"255,171,145"
+"255,138,101"
+"255,112,67"
+"255,87,34"
+"244,81,30"
+"230,74,25"
+"216,67,21"
+"191,54,12"
+"255,158,128"
+"255,110,64"
+"255,61,0"
+"221,44,0";
+
+$palette-deep-orange-50: nth($palette-deep-orange, 1);
+$palette-deep-orange-100: nth($palette-deep-orange, 2);
+$palette-deep-orange-200: nth($palette-deep-orange, 3);
+$palette-deep-orange-300: nth($palette-deep-orange, 4);
+$palette-deep-orange-400: nth($palette-deep-orange, 5);
+$palette-deep-orange-500: nth($palette-deep-orange, 6);
+$palette-deep-orange-600: nth($palette-deep-orange, 7);
+$palette-deep-orange-700: nth($palette-deep-orange, 8);
+$palette-deep-orange-800: nth($palette-deep-orange, 9);
+$palette-deep-orange-900: nth($palette-deep-orange, 10);
+$palette-deep-orange-A100: nth($palette-deep-orange, 11);
+$palette-deep-orange-A200: nth($palette-deep-orange, 12);
+$palette-deep-orange-A400: nth($palette-deep-orange, 13);
+$palette-deep-orange-A700: nth($palette-deep-orange, 14);
+
+
+// Color order: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900.
+
+$palette-brown:
+"239,235,233"
+"215,204,200"
+"188,170,164"
+"161,136,127"
+"141,110,99"
+"121,85,72"
+"109,76,65"
+"93,64,55"
+"78,52,46"
+"62,39,35";
+
+$palette-brown-50: nth($palette-brown, 1);
+$palette-brown-100: nth($palette-brown, 2);
+$palette-brown-200: nth($palette-brown, 3);
+$palette-brown-300: nth($palette-brown, 4);
+$palette-brown-400: nth($palette-brown, 5);
+$palette-brown-500: nth($palette-brown, 6);
+$palette-brown-600: nth($palette-brown, 7);
+$palette-brown-700: nth($palette-brown, 8);
+$palette-brown-800: nth($palette-brown, 9);
+$palette-brown-900: nth($palette-brown, 10);
+
+$palette-grey:
+"250,250,250"
+"245,245,245"
+"238,238,238"
+"224,224,224"
+"189,189,189"
+"158,158,158"
+"117,117,117"
+"97,97,97"
+"66,66,66"
+"33,33,33";
+
+$palette-grey-50: nth($palette-grey, 1);
+$palette-grey-100: nth($palette-grey, 2);
+$palette-grey-200: nth($palette-grey, 3);
+$palette-grey-300: nth($palette-grey, 4);
+$palette-grey-400: nth($palette-grey, 5);
+$palette-grey-500: nth($palette-grey, 6);
+$palette-grey-600: nth($palette-grey, 7);
+$palette-grey-700: nth($palette-grey, 8);
+$palette-grey-800: nth($palette-grey, 9);
+$palette-grey-900: nth($palette-grey, 10);
+
+$palette-blue-grey:
+"236,239,241"
+"207,216,220"
+"176,190,197"
+"144,164,174"
+"120,144,156"
+"96,125,139"
+"84,110,122"
+"69,90,100"
+"55,71,79"
+"38,50,56";
+
+$palette-blue-grey-50: nth($palette-blue-grey, 1);
+$palette-blue-grey-100: nth($palette-blue-grey, 2);
+$palette-blue-grey-200: nth($palette-blue-grey, 3);
+$palette-blue-grey-300: nth($palette-blue-grey, 4);
+$palette-blue-grey-400: nth($palette-blue-grey, 5);
+$palette-blue-grey-500: nth($palette-blue-grey, 6);
+$palette-blue-grey-600: nth($palette-blue-grey, 7);
+$palette-blue-grey-700: nth($palette-blue-grey, 8);
+$palette-blue-grey-800: nth($palette-blue-grey, 9);
+$palette-blue-grey-900: nth($palette-blue-grey, 10);
+
+$color-black: "0,0,0";
+$color-white: "255,255,255";
+
+
+/* colors.scss */
+$styleguide-generate-template: false !default;
+
+// The two possible colors for overlayed text.
+$color-dark-contrast: $color-white !default;
+$color-light-contrast: $color-black !default;
diff --git a/node_modules/material-design-lite/src/_functions.scss b/node_modules/material-design-lite/src/_functions.scss
new file mode 100644
index 0000000..80e7ca4
--- /dev/null
+++ b/node_modules/material-design-lite/src/_functions.scss
@@ -0,0 +1,19 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@function strip-units($number) {
+  @return $number / ($number * 0 + 1);
+}
diff --git a/node_modules/material-design-lite/src/_mixins.scss b/node_modules/material-design-lite/src/_mixins.scss
new file mode 100644
index 0000000..858077e
--- /dev/null
+++ b/node_modules/material-design-lite/src/_mixins.scss
@@ -0,0 +1,301 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Typography */
+
+@mixin typo-preferred-font($usePreferred: true) {
+  @if $usePreferred {
+    font-family: $preferred_font;
+  }
+}
+
+@mixin typo-display-4($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 112px;
+  font-weight: 300;
+  line-height: 1;
+  letter-spacing: -0.04em;
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-display-3($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 56px;
+  font-weight: 400;
+  line-height: 1.35;
+  letter-spacing: -0.02em;
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-display-2($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 45px;
+  font-weight: 400;
+  line-height: 48px;
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-display-1($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 34px;
+  font-weight: 400;
+  line-height: 40px;
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-headline($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 24px;
+  font-weight: 400;
+  line-height: 32px;
+  -moz-osx-font-smoothing: grayscale;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-title($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 20px;
+  font-weight: 500;
+  line-height: 1;
+  letter-spacing: 0.02em;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-subhead($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 16px;
+  font-weight: 400;
+  line-height: 24px;
+  letter-spacing: 0.04em;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-subhead-2($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 16px;
+  font-weight: 400;
+  line-height: 28px;
+  letter-spacing: 0.04em;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-body-2($colorContrast: false, $usePreferred: false) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 14px;
+  @if $usePreferred {
+    font-weight: 500;
+  } @else {
+    font-weight: bold;
+  }
+  line-height: 24px;
+  letter-spacing: 0;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-body-1($colorContrast: false, $usePreferred: false) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 14px;
+  font-weight: 400;
+  line-height: 24px;
+  letter-spacing: 0;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-caption($colorContrast: false, $usePreferred: false) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 12px;
+  font-weight: 400;
+  line-height: 1;
+  letter-spacing: 0;
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-blockquote($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  position: relative;
+  font-size: 24px;
+  font-weight: 300;
+  font-style: italic;
+  line-height: 1.35;
+  letter-spacing: 0.08em;
+
+  &:before {
+    position: absolute;
+    left: -0.5em;
+    content: '“';
+  }
+
+  &:after {
+    content: '”';
+    margin-left: -0.05em;
+  }
+
+  @if $colorContrast {
+    opacity: 0.54;
+  }
+}
+
+@mixin typo-menu($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 14px;
+  font-weight: 500;
+  line-height: 1;
+  letter-spacing: 0;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-button($colorContrast: false, $usePreferred: true) {
+  @include typo-preferred-font($usePreferred);
+  font-size: 14px;
+  font-weight: 500;
+  text-transform: uppercase;
+  line-height: 1;
+  letter-spacing: 0;
+
+  @if $colorContrast {
+    opacity: 0.87;
+  }
+}
+
+@mixin typo-icon() {
+  font-family: 'Material Icons';
+  font-weight: normal;
+  font-style: normal;
+  font-size: 24px;
+  line-height: 1;
+  letter-spacing: normal;
+  text-transform: none;
+  display: inline-block;
+  word-wrap: normal;
+  font-feature-settings: 'liga';
+  -webkit-font-feature-settings: 'liga';
+  -webkit-font-smoothing: antialiased;
+}
+
+/* Shadows */
+
+// Focus shadow mixin.
+@mixin focus-shadow() {
+  box-shadow: 0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);
+}
+
+@mixin shadow-2dp() {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 3px 1px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
+              0 1px 5px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
+}
+@mixin shadow-3dp() {
+  box-shadow: 0 3px 4px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 3px 3px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
+              0 1px 8px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
+}
+@mixin shadow-4dp() {
+  box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 1px 10px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
+              0 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
+}
+@mixin shadow-6dp() {
+  box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 1px 18px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
+              0 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
+}
+@mixin shadow-8dp() {
+  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
+              0 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity);
+}
+
+@mixin shadow-16dp() {
+  box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0  6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
+              0  8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity);
+}
+
+@mixin shadow-24dp() {
+  box-shadow: 0  9px 46px  8px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
+              0 11px 15px -7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
+              0 24px 38px  3px rgba(0, 0, 0, $shadow-key-umbra-opacity);
+}
+
+/* Animations */
+
+@mixin material-animation-fast-out-slow-in($duration:0.2s) {
+  transition-duration: $duration;
+  transition-timing-function: $animation-curve-fast-out-slow-in;
+}
+
+@mixin material-animation-linear-out-slow-in($duration:0.2s) {
+  transition-duration: $duration;
+  transition-timing-function: $animation-curve-linear-out-slow-in;
+}
+
+@mixin material-animation-fast-out-linear-in($duration:0.2s) {
+  transition-duration: $duration;
+  transition-timing-function: $animation-curve-fast-out-linear-in;
+}
+
+@mixin material-animation-default($duration:0.2s) {
+  transition-duration: $duration;
+  transition-timing-function: $animation-curve-default;
+}
+
+/* Dialog */
+
+@mixin dialog-width($units:5) {
+  @if(type_of($units) != 'number') {
+    @error "The unit given to dialog-width should be a number.";
+  }
+  // 56dp is the base unit width for Dialogs.
+  // With 5 units being the number of units for a mobile device.
+  // https://goo.gl/sK2O5o
+  width: $units * 56px;
+}
diff --git a/node_modules/material-design-lite/src/_variables.scss b/node_modules/material-design-lite/src/_variables.scss
new file mode 100644
index 0000000..78be5a4
--- /dev/null
+++ b/node_modules/material-design-lite/src/_variables.scss
@@ -0,0 +1,592 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*------------------------------------*\
+    $CONTENTS
+\*------------------------------------*/
+/**
+ * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
+ * -----Typography
+ * -----Colors
+ * -----Textfield
+ * -----Switch
+ * -----Spinner
+ * -----Radio
+ * -----Menu
+ * -----List
+ * -----Layout
+ * -----Icon toggles
+ * -----Footer
+ * -----Column
+ * -----Checkbox
+ * -----Card
+ * -----Button
+ * -----Animation
+ * -----Progress
+ * -----Badge
+ * -----Shadows
+ * -----Grid
+ * -----Data table
+ * -----Dialog
+ * -----Snackbar
+ * -----Tooltip
+ * -----Chip
+ *
+ * Even though all variables have the `!default` directive, most of them
+ * should not be changed as they are dependent one another. This can cause
+ * visual distortions (like alignment issues) that are hard to track down
+ * and fix.
+ */
+
+
+/* ==========  TYPOGRAPHY  ========== */
+
+/* We're splitting fonts into "preferred" and "performance" in order to optimize
+   page loading. For important text, such as the body, we want it to load
+   immediately and not wait for the web font load, whereas for other sections,
+   such as headers and titles, we're OK with things taking a bit longer to load.
+   We do have some optional classes and parameters in the mixins, in case you
+   definitely want to make sure you're using the preferred font and don't mind
+   the performance hit.
+   We should be able to improve on this once CSS Font Loading L3 becomes more
+   widely available.
+*/
+$preferred_font: 'Roboto', 'Helvetica', 'Arial', sans-serif !default;
+$performance_font: 'Helvetica', 'Arial', sans-serif !default;
+
+/* ==========  COLORS  ========== */
+
+/**
+*
+* Material design color palettes.
+* @see http://www.google.com/design/spec/style/color.html
+*
+**/
+
+@import "color-definitions";
+@import "functions";
+
+/* ==========  IMAGES  ========== */
+$image_path: '/images' !default;
+
+/* ==========  Color & Themes  ========== */
+
+// Define whether individual color palette items should have classes created.
+// Setting this to true will remove individual color classes for each color in the palettes.
+// To improve overall performance (assuming they aren't used) by:
+// * Saving server bandwidth sending the extra classes
+// * Save client computation against the classes
+// it is RECOMMENDED you set this to true.
+$trim-color-classes: false !default;
+
+// Use color primarily for emphasis. Choose colors that fit with
+// your brand and provide good contrast between visual components.
+$color-primary: $palette-indigo-500 !default;
+$color-primary-dark: $palette-indigo-700 !default;
+$color-accent: $palette-pink-A200 !default;
+
+// Our primary is dark, so use $color-dark-contrast for overlaid text.
+$color-primary-contrast: $color-dark-contrast !default;
+// Our accent is dark, so use $color-dark-contrast for overlaid text.
+$color-accent-contrast: $color-dark-contrast !default;
+
+// Replace all colors with placeholders if we're generating a template.
+@if $styleguide-generate-template == true {
+  $color-primary: '$color-primary';
+  $color-primary-dark: '$color-primary-dark';
+  $color-accent: '$color-accent';
+  $color-primary-contrast: '$color-primary-contrast';
+  $color-accent-contrast: '$color-accent-contrast';
+}
+
+/* ==========  Typography  ========== */
+
+// We use the following default color styles: text-color-primary and
+// text-color-secondary. For light themes, use text-color-primary-inverse
+// and text-color-secondary-inverse.
+
+$text-color-primary: unquote("rgba(#{$color-black}, 0.87)") !default;
+$text-link-color: unquote("rgb(#{$color-accent})") !default;
+
+// Define whether to target elements directly for typographic enhancements.
+// Turning this off means you need to use mdl-* classes more often.
+// Other components may also fail to adhere to MD without these rules.
+// It is strongly recommended you leave this as true.
+
+$target-elements-directly: true !default;
+
+/* ==========  Components  ========== */
+
+/* ==========  Standard Buttons  ========== */
+
+// Default button colors.
+$button-primary-color: unquote("rgba(#{$palette-grey-500}, 0.20)") !default;
+$button-secondary-color: unquote("rgb(#{$color-black})") !default;
+$button-hover-color: $button-primary-color !default;
+$button-active-color: unquote("rgba(#{$palette-grey-500}, 0.40)") !default;
+$button-focus-color: unquote("rgba(#{$color-black}, 0.12)") !default;
+
+// Colored button colors.
+$button-primary-color-alt: unquote("rgb(#{$color-primary})") !default;
+$button-secondary-color-alt: unquote("rgb(#{$color-primary-contrast})") !default;
+$button-hover-color-alt: unquote("rgb(#{$color-primary})") !default;
+$button-active-color-alt: unquote("rgb(#{$color-primary})") !default;
+$button-focus-color-alt: $button-focus-color !default;
+
+// Ripple color for colored raised buttons.
+$button-ripple-color-alt: unquote("rgb(#{$color-primary-contrast})") !default;
+
+// Disabled button colors.
+$button-primary-color-disabled: unquote("rgba(#{$color-black}, 0.12)") !default;
+$button-secondary-color-disabled: unquote("rgba(#{$color-black}, 0.26)") !default;
+
+// FAB colors and sizes.
+$button-fab-color-alt: unquote("rgb(#{$color-accent})") !default;
+$button-fab-hover-color-alt: unquote("rgb(#{$color-accent})") !default;
+$button-fab-active-color-alt: unquote("rgb(#{$color-accent})") !default;
+$button-fab-text-color-alt: unquote("rgb(#{$color-accent-contrast})") !default;
+$button-fab-ripple-color-alt: unquote("rgb(#{$color-accent-contrast})") !default;
+
+// Icon button colors and sizes.
+$button-icon-color: unquote("rgb(#{$palette-grey-700})") !default;
+$button-icon-focus-color: $button-focus-color !default;
+
+/* ==========  Icon Toggles  ========== */
+
+$icon-toggle-color: unquote("rgb(#{$palette-grey-700})") !default;
+$icon-toggle-focus-color: $button-focus-color !default;
+$icon-toggle-checked-color: unquote("rgb(#{$color-primary})") !default;
+$icon-toggle-checked-focus-color: unquote("rgba(#{$color-primary}, 0.26)") !default;
+$icon-toggle-disabled-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+
+/* ==========  Radio Buttons  ========== */
+
+$radio-color: unquote("rgb(#{$color-primary})") !default;
+$radio-off-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+$radio-disabled-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+
+/* ==========  Ripple effect  ========== */
+
+$ripple-bg-color: unquote("rgb(#{$color-light-contrast})") !default;
+
+/* ==========  Layout  ========== */
+
+$layout-nav-color: unquote("rgb(#{$palette-grey-300})") !default;
+
+// Drawer
+$layout-drawer-bg-color: unquote("rgb(#{$palette-grey-50})") !default;
+$layout-drawer-border-color: unquote("rgb(#{$palette-grey-300})") !default;
+$layout-text-color: unquote("rgb(#{$palette-grey-800})") !default;
+$layout-drawer-navigation-color: #757575 !default;
+$layout-drawer-navigation-link-active-background: unquote("rgb(#{$palette-grey-300})") !default;
+$layout-drawer-navigation-link-active-color: unquote("rgb(#{$color-light-contrast})") !default;
+
+// Header
+$layout-header-bg-color: unquote("rgb(#{$color-primary})") !default;
+$layout-header-text-color: unquote("rgb(#{$color-primary-contrast})") !default;
+$layout-header-nav-hover-color: unquote("rgba(#{$palette-grey-700}, 0.6)") !default;
+$layout-header-tab-text-color: unquote("rgba(#{$color-primary-contrast}, 0.6)") !default;
+
+// Tabs
+$layout-header-tab-highlight: unquote("rgb(#{$color-accent})") !default;
+
+/* ==========  Content Tabs  ========== */
+
+$tab-highlight-color: unquote("rgb(#{$color-primary})") !default;
+$tab-text-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+$tab-active-text-color: unquote("rgba(#{$color-black}, 0.87)") !default;
+$tab-border-color: unquote("rgb(#{$palette-grey-300})") !default;
+
+/* ==========  Checkboxes  ========== */
+
+$checkbox-color: unquote("rgb(#{$color-primary})") !default;
+$checkbox-off-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+$checkbox-disabled-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+$checkbox-focus-color: unquote("rgba(#{$color-primary}, 0.26)") !default;
+$checkbox-image-path: $image_path;
+
+/* ==========  Switches  ========== */
+
+$switch-color: unquote("rgb(#{$color-primary})") !default;
+$switch-faded-color: unquote("rgba(#{$color-primary}, 0.26)") !default;
+$switch-thumb-color: $switch-color !default;
+$switch-track-color: unquote("rgba(#{$color-primary}, 0.5)") !default;
+
+$switch-off-thumb-color: unquote("rgb(#{$palette-grey-50})") !default;
+$switch-off-track-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+$switch-disabled-thumb-color: unquote("rgb(#{$palette-grey-400})") !default;
+$switch-disabled-track-color: unquote("rgba(#{$color-black}, 0.12)") !default;
+
+/* ==========  Spinner  ========== */
+
+$spinner-color-1: unquote("rgb(#{$palette-blue-400})") !default;
+$spinner-color-2: unquote("rgb(#{$palette-red-500})") !default;
+$spinner-color-3: unquote("rgb(#{$palette-yellow-600})") !default;
+$spinner-color-4: unquote("rgb(#{$palette-green-500})") !default;
+
+$spinner-single-color: unquote("rgb(#{$color-primary})") !default;
+
+/* ==========  Text fields  ========== */
+
+$input-text-background-color: transparent !default;
+$input-text-label-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+$input-text-bottom-border-color: unquote("rgba(#{$color-black}, 0.12)") !default;
+$input-text-highlight-color: unquote("rgb(#{$color-primary})") !default;
+$input-text-disabled-color: $input-text-bottom-border-color !default;
+$input-text-disabled-text-color: $input-text-label-color !default;
+$input-text-error-color: unquote("rgb(#{$palette-red-A700})") !default;
+
+/* ==========  Card  ========== */
+
+$card-background-color: unquote("rgb(#{$color-white})") !default;
+$card-text-color: unquote("rgb(#{$color-black})") !default;
+$card-image-placeholder-color: unquote("rgb(#{$color-accent})") !default;
+$card-supporting-text-text-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+$card-border-color: rgba(0,0,0,0.1) !default;
+$card-subtitle-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+
+/* ==========  Sliders ========== */
+
+$range-bg-color: unquote("rgba(#{$color-black}, 0.26)") !default;
+$range-color: unquote("rgb(#{$color-primary})") !default;
+$range-faded-color: unquote("rgba(#{$color-primary}, 0.26)") !default;
+$range-bg-focus-color: unquote("rgba(#{$color-black}, 0.12)") !default;
+
+/* ========== Progress ========== */
+$progress-main-color: unquote("rgb(#{$color-primary})") !default;
+$progress-secondary-color: unquote("rgba(#{$color-primary-contrast}, 0.7)") !default;
+$progress-fallback-buffer-color: unquote("rgba(#{$color-primary-contrast}, 0.9)") !default;
+$progress-image-path: $image_path;
+
+/* ==========  List ========== */
+
+$list-main-text-text-color: unquote("rgba(#{$color-black}, 0.87)") !default;
+$list-supporting-text-text-color: unquote("rgba(#{$color-black}, 0.54)") !default;
+$list-icon-color: unquote("rgb(#{$palette-grey-600})") !default;
+$list-avatar-color: white !default;
+
+/* ==========  Item ========== */
+
+// Default Item Colors
+$default-item-text-color: unquote("rgba(#{$color-black}, 0.87)") !default;
+$default-item-outline-color: unquote("rgb(#{$palette-grey-400})") !default;
+$default-item-hover-bg-color: unquote("rgb(#{$palette-grey-200})") !default;
+$default-item-focus-bg-color: unquote("rgb(#{$palette-grey-200})") !default;
+$default-item-active-bg-color: unquote("rgb(#{$palette-grey-300})") !default;
+$default-item-divider-color: unquote("rgba(#{$color-black}, 0.12)") !default;
+
+// Disabled Button Colors
+$disabled-item-text-color: unquote("rgb(#{$palette-grey-400})") !default;
+
+/* ==========  Dropdown menu ========== */
+
+$default-dropdown-bg-color: unquote("rgb(#{$color-white})") !default;
+
+/* ==========  Tooltips  ========== */
+
+$tooltip-text-color: unquote("rgb(#{$color-white})") !default;
+$tooltip-background-color: unquote("rgba(#{$palette-grey-700}, 0.9)") !default;
+
+/* ==========  Footer  ========== */
+
+$footer-bg-color: unquote("rgb(#{$palette-grey-800})") !default;
+$footer-color: unquote("rgb(#{$palette-grey-500})") !default;
+$footer-heading-color: unquote("rgb(#{$palette-grey-300})") !default;
+$footer-button-fill-color: $footer-color !default;
+$footer-underline-color: $footer-color !default;
+
+
+/* TEXTFIELD */
+
+$input-text-font-size: 16px !default;
+$input-text-width: 100% !default;
+$input-text-padding: 4px !default;
+$input-text-vertical-spacing: 20px !default;
+
+$input-text-button-size: 32px !default;
+$input-text-floating-label-fontsize: 12px !default;
+$input-text-expandable-icon-top: 16px !default;
+
+
+/* SWITCH */
+
+$switch-label-font-size: 16px !default;
+$switch-label-height: 24px !default;
+$switch-track-height: 14px !default;
+$switch-track-length: 36px !default;
+$switch-thumb-size: 20px !default;
+$switch-track-top: ($switch-label-height - $switch-track-height) / 2 !default;
+$switch-thumb-top: ($switch-label-height - $switch-thumb-size) / 2 !default;
+$switch-ripple-size: $switch-label-height * 2 !default;
+$switch-helper-size: 8px !default;
+
+/* SPINNER */
+
+$spinner-size: 28px !default;
+$spinner-stroke-width: 3px !default;
+
+// Amount of circle the arc takes up.
+$spinner-arc-size: 270deg !default;
+// Time it takes to expand and contract arc.
+$spinner-arc-time: 1333ms !default;
+// How much the start location of the arc should rotate each time.
+$spinner-arc-start-rot: 216deg !default;
+
+$spinner-duration: 360 * $spinner-arc-time / (
+    strip-units($spinner-arc-start-rot + (360deg - $spinner-arc-size)));
+
+
+/* RADIO */
+
+$radio-label-font-size: 16px !default;
+$radio-label-height: 24px !default;
+$radio-button-size: 16px !default;
+$radio-inner-margin: $radio-button-size / 4;
+$radio-padding: 8px !default;
+$radio-top-offset: ($radio-label-height - $radio-button-size) / 2;
+$radio-ripple-size: 42px !default;
+
+
+/* MENU */
+
+$menu-expand-duration: 0.3s !default;
+$menu-fade-duration: 0.2s !default;
+
+/* LIST */
+
+$list-border: 8px !default;
+$list-min-height: 48px !default;
+$list-min-padding: 16px !default;
+$list-bottom-padding: 20px !default;
+$list-avatar-text-left-distance: 72px !default;
+$list-icon-text-left-distance: 72px !default;
+
+$list-avatar-size: 40px !default;
+$list-icon-size: 24px !default;
+
+$list-two-line-height: 72px !default;
+$list-three-line-height: 88px !default;
+
+/* LAYOUT */
+
+$layout-drawer-narrow: 240px !default;
+$layout-drawer-wide: 456px !default;
+$layout-drawer-width: $layout-drawer-narrow !default;
+
+$layout-header-icon-size: 32px !default;
+$layout-screen-size-threshold: 1024px !default;
+$layout-header-icon-margin: 24px !default;
+$layout-drawer-button-mobile-size: 32px !default;
+$layout-drawer-button-desktop-size: 48px !default;
+
+$layout-header-mobile-row-height: 56px !default;
+$layout-mobile-header-height: $layout-header-mobile-row-height;
+$layout-header-desktop-row-height: 64px !default;
+$layout-desktop-header-height: $layout-header-desktop-row-height;
+
+$layout-header-desktop-baseline: 80px !default;
+$layout-header-mobile-baseline: 72px !default;
+$layout-header-mobile-indent: 16px !default;
+$layout-header-desktop-indent: 40px !default;
+
+$layout-tab-font-size: 14px !default;
+$layout-tab-bar-height: 48px !default;
+$layout-tab-mobile-padding: 12px !default;
+$layout-tab-desktop-padding: 24px !default;
+$layout-tab-highlight-thickness: 2px !default;
+
+
+/* ICON TOGGLE */
+
+$icon-toggle-size: 32px !default;
+$icon-toggle-font-size: 24px !default;
+$icon-toggle-ripple-size: 36px !default;
+
+/* FOOTER */
+
+/*mega-footer*/
+$footer-min-padding: 16px !default;
+$footer-padding-sides: 40px !default;
+$footer-heading-font-size: 14px !default;
+$footer-heading-line-height: (1.7 * $footer-heading-font-size) !default;
+$footer-btn-size: 36px  !default;
+
+/*mini-footer*/
+$padding: 16px !default;
+$footer-heading-font-size: 24px !default;
+$footer-heading-line-height: (1.5 * $footer-heading-font-size) !default;
+$footer-btn-size: 36px !default;
+
+/* CHECKBOX */
+
+$checkbox-label-font-size: 16px !default;
+$checkbox-label-height: 24px !default;
+$checkbox-button-size: 16px !default;
+$checkbox-inner-margin: 2px !default;
+$checkbox-padding: 8px !default;
+$checkbox-top-offset:
+($checkbox-label-height - $checkbox-button-size - $checkbox-inner-margin) / 2;
+$checkbox-ripple-size: $checkbox-label-height * 1.5;
+
+/* CARD */
+
+/* Card dimensions */
+$card-width: 330px !default;
+$card-height: 200px !default;
+$card-font-size: 16px !default;
+$card-title-font-size: 24px !default;
+$card-subtitle-font-size: 14px !default;
+$card-horizontal-padding: 16px !default;
+$card-vertical-padding: 16px !default;
+
+$card-title-perspective-origin-x: 165px !default;
+$card-title-perspective-origin-y: 56px !default;
+
+$card-title-transform-origin-x: 165px !default;
+$card-title-transform-origin-y: 56px !default;
+
+$card-title-text-transform-origin-x: 149px !default;
+$card-title-text-transform-origin-y: 48px !default;
+
+$card-supporting-text-font-size: 1rem !default;
+$card-supporting-text-line-height: 18px !default;
+
+$card-actions-font-size: 16px !default;
+
+$card-title-text-font-weight: 300 !default;
+$card-z-index: 1 !default;
+
+/* Cover image */
+$card-cover-image-height: 186px !default;
+$card-background-image-url: '' !default;
+
+
+/* BUTTON */
+/**
+ *
+ * Dimensions
+ *
+ */
+$button-min-width: 64px !default;
+$button-height: 36px !default;
+$button-padding: 16px !default;
+$button-margin: 4px !default;
+$button-border-radius: 2px !default;
+
+$button-fab-size: 56px !default;
+$button-fab-size-mini: 40px !default;
+$button-fab-font-size: 24px !default;
+
+$button-icon-size: 32px !default;
+$button-icon-size-mini: 24px !default;
+
+
+/* ANIMATION */
+$animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default;
+$animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default;
+$animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default;
+
+$animation-curve-default: $animation-curve-fast-out-slow-in !default;
+
+
+/* PROGRESS */
+$bar-height: 4px !default;
+
+/* BADGE */
+$badge-font-size: 12px !default;
+$badge-color: unquote("rgb(#{$color-accent-contrast})") !default;
+$badge-color-inverse: unquote("rgb(#{$color-accent})") !default;
+$badge-background: unquote("rgb(#{$color-accent})") !default;
+$badge-background-inverse: unquote("rgba(#{$color-accent-contrast},0.2)") !default;
+$badge-size : 22px !default;
+$badge-padding: 2px !default;
+$badge-overlap: 12px !default;
+
+/* SHADOWS */
+
+$shadow-key-umbra-opacity: 0.2 !default;
+$shadow-key-penumbra-opacity: 0.14 !default;
+$shadow-ambient-shadow-opacity: 0.12 !default;
+
+/* GRID */
+
+$grid-desktop-columns: 12 !default;
+$grid-desktop-gutter: 16px !default;
+$grid-desktop-margin: 16px !default;
+
+$grid-desktop-breakpoint: 840px !default;
+
+$grid-tablet-columns: 8 !default;
+$grid-tablet-gutter: $grid-desktop-gutter !default;
+$grid-tablet-margin: $grid-desktop-margin !default;
+
+$grid-tablet-breakpoint: 480px !default;
+
+$grid-phone-columns: 4 !default;
+$grid-phone-gutter: $grid-desktop-gutter !default;
+$grid-phone-margin: $grid-desktop-margin !default;
+
+$grid-cell-default-columns: $grid-phone-columns !default;
+$grid-max-columns: $grid-desktop-columns !default;
+
+/* DATA TABLE */
+
+$data-table-font-size: 13px !default;
+$data-table-header-font-size: 12px !default;
+$data-table-header-sort-icon-size: 16px !default;
+
+$data-table-header-color: rgba(#000, 0.54) !default;
+$data-table-header-sorted-color: rgba(#000, 0.87) !default;
+$data-table-header-sorted-icon-hover-color: rgba(#000, 0.26) !default;
+$data-table-divider-color: rgba(#000, 0.12) !default;
+
+$data-table-hover-color: #eeeeee !default;
+$data-table-selection-color: #e0e0e0 !default;
+
+$data-table-dividers: 1px solid $data-table-divider-color !default;
+
+$data-table-row-height: 48px !default;
+$data-table-last-row-height: 56px !default;
+$data-table-header-height: 56px !default;
+
+$data-table-column-spacing: 36px !default;
+$data-table-column-padding: $data-table-column-spacing / 2;
+
+$data-table-card-header-height: 64px !default;
+$data-table-card-title-top: 20px !default;
+$data-table-card-padding: 24px !default;
+$data-table-button-padding-right: 16px !default;
+$data-table-cell-top: $data-table-card-padding / 2;
+
+/* DIALOG */
+$dialog-content-color: $card-supporting-text-text-color;
+
+/* SNACKBAR */
+
+// Hard coded since the color is not present in any palette.
+$snackbar-background-color: #323232 !default;
+$snackbar-tablet-breakpoint: $grid-tablet-breakpoint;
+$snackbar-action-color: unquote("rgb(#{$color-accent})") !default;
+
+/* TOOLTIP */
+$tooltip-font-size: 10px !default;
+$tooltip-font-size-large: 14px !default;
+
+/* CHIP */
+$chip-bg-color: rgb(222, 222, 222) !default;
+$chip-bg-active-color: rgb(214, 214, 214) !default;
+$chip-height: 32px !default;
+$chip-font-size: 13px !default; 
diff --git a/node_modules/material-design-lite/src/animation/_animation.scss b/node_modules/material-design-lite/src/animation/_animation.scss
new file mode 100644
index 0000000..26df669
--- /dev/null
+++ b/node_modules/material-design-lite/src/animation/_animation.scss
@@ -0,0 +1,34 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+
+.mdl-animation--default {
+  transition-timing-function: $animation-curve-default;
+}
+
+.mdl-animation--fast-out-slow-in {
+  transition-timing-function: $animation-curve-fast-out-slow-in;
+}
+
+.mdl-animation--linear-out-slow-in {
+  transition-timing-function: $animation-curve-linear-out-slow-in;
+}
+
+.mdl-animation--fast-out-linear-in {
+  transition-timing-function: $animation-curve-fast-out-linear-in;
+}
diff --git a/node_modules/material-design-lite/src/animation/demo.css b/node_modules/material-design-lite/src/animation/demo.css
new file mode 100644
index 0000000..58d8764
--- /dev/null
+++ b/node_modules/material-design-lite/src/animation/demo.css
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.demo-animation {
+  height: 200px;
+  width: 300px;
+  padding: 0;
+  background: none;
+}
+
+.demo-animation__container {
+  position: relative;
+  overflow: hidden;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  height: 100%;
+  text-align: center;
+  background-color: #ddd;
+}
+
+.demo-animation__container-foreground {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  left: 0;
+  top: 0;
+  z-index: 100;
+}
+
+.demo-animation__container-background {
+  line-height: 200px;
+  z-index: -100;
+}
+
+/* Outside the view, on the left.
+   We leave the view when moving to this state, so we use fast-out-linear-in. */
+.demo-animation--position-0 {
+  left: -102px;
+}
+
+/* Left side.
+   We enter the view when moving to this state, so we use linear-out-slow-in. */
+.demo-animation--position-1 {
+  left: 20px;
+}
+
+/* Right side.
+   We're always visible when moving to this state, so we use default. */
+.demo-animation--position-2 {
+  left: 180px;
+}
+
+/* Outside the view, on the right.
+   We leave the view when moving to this state, so we use fast-out-linear-in. */
+.demo-animation--position-3 {
+  left: 302px;
+}
+
+/* Right side.
+   We enter the view when moving to this state, so we use linear-out-slow-in. */
+.demo-animation--position-4 {
+  left: 180px;
+}
+
+/* Left side.
+   We're always visible when moving to this state, so we use default. */
+.demo-animation--position-5 {
+  left: 20px;
+}
+
+.demo-animation__movable {
+  background-color: red;
+  border-radius: 2px;
+  display: block;
+  height: 100px;
+  width: 100px;
+  position: absolute;
+  top: 50px;
+  transition-property: left;
+  transition-duration: 0.2s;
+}
diff --git a/node_modules/material-design-lite/src/animation/demo.html b/node_modules/material-design-lite/src/animation/demo.html
new file mode 100644
index 0000000..64e9f5e
--- /dev/null
+++ b/node_modules/material-design-lite/src/animation/demo.html
@@ -0,0 +1,7 @@
+    <div class="demo-preview-block demo-animation demo-js-animation">
+      <div class="demo-animation__container">
+        <div class="demo-animation__container-background">Click me to animate</div>
+        <div class="demo-animation__container-foreground"></div>
+        <div class="demo-animation__movable demo-animation--position-0 mdl-shadow--2dp"></div>
+      </div>
+    </div>
diff --git a/node_modules/material-design-lite/src/animation/demo.js b/node_modules/material-design-lite/src/animation/demo.js
new file mode 100644
index 0000000..a4800eb
--- /dev/null
+++ b/node_modules/material-design-lite/src/animation/demo.js
@@ -0,0 +1,112 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Class constructor for Animation MDL component.
+ * Implements MDL component design pattern defined at:
+ * https://github.com/jasonmayes/mdl-component-design-pattern
+ * @param {HTMLElement} element The element that will be upgraded.
+ */
+function DemoAnimation(element) {
+  'use strict';
+
+  this.element_ = element;
+  this.position_ = this.Constant_.STARTING_POSITION;
+  this.movable_ = this.element_.querySelector('.' + this.CssClasses_.MOVABLE);
+  // Initialize instance.
+  this.init();
+}
+
+/**
+ * Store strings for class names defined by this component that are used in
+ * JavaScript. This allows us to simply change it in one place should we
+ * decide to modify at a later date.
+ * @enum {string}
+ * @private
+ */
+DemoAnimation.prototype.CssClasses_ = {
+  MOVABLE: 'demo-animation__movable',
+  POSITION_PREFIX: 'demo-animation--position-',
+  FAST_OUT_SLOW_IN: 'mdl-animation--fast-out-slow-in',
+  LINEAR_OUT_SLOW_IN: 'mdl-animation--linear-out-slow-in',
+  FAST_OUT_LINEAR_IN: 'mdl-animation--fast-out-linear-in'
+};
+
+/**
+ * Store constants in one place so they can be updated easily.
+ * @enum {string | number}
+ * @private
+ */
+DemoAnimation.prototype.Constant_ = {
+  STARTING_POSITION: 0,
+  // Which animation to use for which state. Check demo.css for an explanation.
+  ANIMATIONS: [
+    DemoAnimation.prototype.CssClasses_.FAST_OUT_LINEAR_IN,
+    DemoAnimation.prototype.CssClasses_.LINEAR_OUT_SLOW_IN,
+    DemoAnimation.prototype.CssClasses_.FAST_OUT_SLOW_IN,
+    DemoAnimation.prototype.CssClasses_.FAST_OUT_LINEAR_IN,
+    DemoAnimation.prototype.CssClasses_.LINEAR_OUT_SLOW_IN,
+    DemoAnimation.prototype.CssClasses_.FAST_OUT_SLOW_IN
+  ]
+};
+
+/**
+ * Handle click of element.
+ * @param {Event} event The event that fired.
+ * @private
+ */
+DemoAnimation.prototype.handleClick_ = function(event) {
+  'use strict';
+
+  this.movable_.classList.remove(this.CssClasses_.POSITION_PREFIX +
+      this.position_);
+  this.movable_.classList.remove(this.Constant_.ANIMATIONS[this.position_]);
+
+  this.position_++;
+  if (this.position_ > 5) {
+    this.position_ = 0;
+  }
+
+  this.movable_.classList.add(this.Constant_.ANIMATIONS[this.position_]);
+  this.movable_.classList.add(this.CssClasses_.POSITION_PREFIX +
+      this.position_);
+};
+
+/**
+ * Initialize element.
+ */
+DemoAnimation.prototype.init = function() {
+  'use strict';
+
+  if (this.element_) {
+    if (!this.movable_) {
+      console.error('Was expecting to find an element with class name ' +
+          this.CssClasses_.MOVABLE + ' inside of: ', this.element_);
+      return;
+    }
+
+    this.element_.addEventListener('click', this.handleClick_.bind(this));
+  }
+};
+
+// The component registers itself. It can assume componentHandler is available
+// in the global scope.
+componentHandler.register({
+  constructor: DemoAnimation,
+  classAsString: 'DemoAnimation',
+  cssClass: 'demo-js-animation'
+});
diff --git a/node_modules/material-design-lite/src/badge/README.md b/node_modules/material-design-lite/src/badge/README.md
new file mode 100644
index 0000000..abbc525
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/README.md
@@ -0,0 +1,68 @@
+## Introduction
+
+The Material Design Lite (MDL) **badge** component is an onscreen notification element. A badge consists of a small circle, typically containing a number or other characters, that appears in proximity to another object. A badge can be both a notifier that there are additional items associated with an object and an indicator of how many items there are.
+
+You can use a badge to unobtrusively draw the user's attention to items they might not otherwise notice, or to emphasize that items may need their attention. For example:
+
+* A "New messages" notification might be followed by a badge containing the number of unread messages.
+* A "You have unpurchased items in your shopping cart" reminder might include a badge showing the number of items in the cart.
+* A "Join the discussion!" button might have an accompanying badge indicating the number of users currently participating in the discussion.
+
+A badge is almost always positioned near a link so that the user has a convenient way to access the additional information indicated by the badge. However, depending on the intent, the badge itself may or may not be part of the link.
+
+Badges are a new feature in user interfaces, and provide users with a visual clue to help them discover additional relevant content. Their design and use is therefore an important factor in the overall user experience.
+
+### To include an MDL **badge** component:
+
+&nbsp;1. Code  an `<a>` (anchor/link) or a `<span>` element. Include any desired attributes and content.
+```html
+<a href="#">This link has a badge.</a>
+```
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the element using the `class` attribute.
+```html
+<a href="#" class="mdl-badge">This link has a badge.</a>
+```
+&nbsp;3. Add a `data-badge` attribute and quoted string value for the badge.
+```html
+<a href="#" class="mdl-badge" data-badge="5">This link has a badge.</a>
+```
+
+The badge component is ready for use.
+
+>**Note:** Because of the badge component's small size, the `data-badge` value should typically contain one to three characters. More than three characters will not cause an error, but some characters may fall outside the badge and thus be difficult or impossible to see. The value of the `data-badge` attribute is centered in the badge.
+
+#### Examples
+
+A badge inside a link.
+```html
+<a href="#" class="mdl-badge" data-badge="7">This link contains a badge.</a>
+```
+
+A badge near, but not included in, a link.
+```html
+<a href="#">This link is followed by a badge.</a>
+<span class="mdl-badge" data-badge="12"></span>
+```
+
+A badge inside a link with too many characters to fit inside the badge.
+```html
+<a href="#" class="mdl-badge" data-badge="123456789">
+This badge has too many characters.</a>
+```
+
+A badge inside a link with no badge background color.
+```html
+<a href="#" class="mdl-badge mdl-badge--no-background" data-badge="123">
+This badge has no background color.</a>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements to the badge. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-badge` | Defines badge as an MDL component | Required on span or link |
+| `mdl-badge--no-background` | Applies open-circle effect to badge | Optional |
+| `mdl-badge--overlap` | Make the badge overlap with its container | Optional |
+| `data-badge="value"` | Assigns string value to badge | Not a class, but a separate attribute; required on span or link |
diff --git a/node_modules/material-design-lite/src/badge/_badge.scss b/node_modules/material-design-lite/src/badge/_badge.scss
new file mode 100644
index 0000000..c3b42ec
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/_badge.scss
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-badge {
+  position : relative;
+  white-space: nowrap;
+  margin-right: ($badge-size + $badge-padding);
+
+  &:not([data-badge]) {
+    margin-right: auto;
+  }
+
+  &[data-badge]:after {
+    content: attr(data-badge);
+
+    display: flex;
+    flex-direction: row;
+    flex-wrap: wrap;
+    justify-content: center;
+    align-content: center;
+    align-items: center;
+
+    position: absolute;
+    top: -($badge-size / 2);
+    right: -($badge-size + $badge-padding);
+
+    .mdl-button & {
+      top: -10px;
+      right: -5px;
+    }
+
+    font-family: $preferred_font;
+    font-weight: 600;
+    font-size: $badge-font-size;
+    width: $badge-size;
+    height: $badge-size;
+    border-radius : 50%;
+
+    background: $badge-background;
+    color: $badge-color;
+  }
+
+  &.mdl-badge--no-background {
+    &[data-badge]:after {
+      color: $badge-color-inverse;
+      background: $badge-background-inverse;
+
+      box-shadow: 0 0 1px gray;
+    }
+  }
+  &.mdl-badge--overlap {
+    margin-right: ($badge-size - $badge-overlap);
+    &:after {
+      right: -($badge-size - $badge-overlap);
+    }
+  }
+}
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon-demo.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon-demo.html
new file mode 100644
index 0000000..1baa6ff
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon-demo.html
@@ -0,0 +1,9 @@
+<style>
+.demo-badge__badge-on-icon-icon .mdl-badge {
+  color: rgba(0, 0, 0, 0.24);
+}
+.demo-badge__badge-on-icon-icon .mdl-badge.material-icons {
+  font-size: 32px;
+}
+</style>
+{% include "badge-on-icon-icon.html" %}
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon.html
new file mode 100644
index 0000000..3b23967
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-icon.html
@@ -0,0 +1,2 @@
+<!-- Icon badge on icon -->
+<div class="material-icons mdl-badge mdl-badge--overlap" data-badge="♥">account_box</div>
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text-demo.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text-demo.html
new file mode 100644
index 0000000..1437ef8
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text-demo.html
@@ -0,0 +1,9 @@
+<style>
+.demo-badge__badge-on-icon-text .mdl-badge {
+  color: rgba(0, 0, 0, 0.24);
+}
+.demo-badge__badge-on-icon-text .mdl-badge.material-icons {
+  font-size: 32px;
+}
+</style>
+{% include "badge-on-icon-text.html" %}
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text.html
new file mode 100644
index 0000000..e73a9f2
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-icon-text.html
@@ -0,0 +1,2 @@
+<!-- Number badge on icon -->
+<div class="material-icons mdl-badge mdl-badge--overlap" data-badge="1">account_box</div>
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon-demo.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon-demo.html
new file mode 100644
index 0000000..57ab2bf
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon-demo.html
@@ -0,0 +1,6 @@
+<style>
+.demo-badge__badge-on-text-icon .mdl-badge {
+  color: rgba(0, 0, 0, 0.24);
+}
+</style>
+{% include "badge-on-text-icon.html" %}
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon.html
new file mode 100644
index 0000000..86c1240
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-icon.html
@@ -0,0 +1,2 @@
+<!-- Icon badge -->
+<span class="mdl-badge" data-badge="♥">Mood</span>
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text-demo.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text-demo.html
new file mode 100644
index 0000000..37d26e1
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text-demo.html
@@ -0,0 +1,7 @@
+<style>
+.demo-badge__badge-on-text-text .mdl-badge {
+  color: rgba(0, 0, 0, 0.24);
+}
+</style>
+
+{% include "badge-on-text-text.html" %}
diff --git a/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text.html b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text.html
new file mode 100644
index 0000000..d2f66eb
--- /dev/null
+++ b/node_modules/material-design-lite/src/badge/snippets/badge-on-text-text.html
@@ -0,0 +1,2 @@
+<!-- Number badge -->
+<span class="mdl-badge" data-badge="4">Inbox</span>
diff --git a/node_modules/material-design-lite/src/button/README.md b/node_modules/material-design-lite/src/button/README.md
new file mode 100755
index 0000000..1ad5186
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/README.md
@@ -0,0 +1,59 @@
+## Introduction
+
+The Material Design Lite (MDL) **button** component is an enhanced version of the standard HTML `<button>` element. A button consists of text and/or an image that clearly communicates what action will occur when the user clicks or touches it. The MDL button component provides various types of buttons, and allows you to add both display and click effects.
+
+Buttons are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the button component's [Material Design specifications page](http://www.google.com/design/spec/components/buttons.html) for details.
+
+The available button display types are *flat* (default), *raised*, *fab*, *mini-fab*, and *icon*; any of these types may be plain (light gray) or *colored*, and may be initially or programmatically *disabled*. The *fab*, *mini-fab*, and *icon* button types typically use a small image as their caption rather than text.
+
+### To include an MDL **button** component:
+
+&nbsp;1. Code a `<button>` element. Include any desired attributes and values, such as an id or event handler, and add a text caption or image as appropriate.
+```html
+<button>Save</button>
+```
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the button using the `class` attribute.
+```html
+<button class="mdl-button mdl-js-button mdl-button--raised">Save</button>
+```
+
+The button component is ready for use.
+
+#### Examples
+
+A button with the "raised" effect.
+```html
+<button class="mdl-button mdl-js-button mdl-button--raised">Save</button>
+```
+
+A button with the "fab" effect.
+```html
+<button class="mdl-button mdl-js-button mdl-button--fab">OK</button>
+```
+
+A button with the "icon" and "colored" effects.
+```html
+<button class="mdl-button mdl-js-button mdl-button--icon mdl-button--colored">?</button>
+```
+
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the button. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-button` | Defines button as an MDL component | Required |
+| `mdl-js-button` | Assigns basic MDL behavior to button | Required |
+| (none) | Applies *flat* display effect to button (default) |  |
+| `mdl-button--raised` | Applies *raised* display effect | Mutually exclusive with *fab*, *mini-fab*, and *icon* |
+| `mdl-button--fab` | Applies *fab* (circular) display effect | Mutually exclusive with *raised*, *mini-fab*, and *icon* |
+| `mdl-button--mini-fab` | Applies *mini-fab* (small fab circular) display effect | Mutually exclusive with *raised*, *fab*, and *icon* |
+| `mdl-button--icon` | Applies *icon* (small plain circular) display effect | Mutually exclusive with *raised*, *fab*, and *mini-fab*  |
+| `mdl-button--colored` | Applies *colored* display effect (primary or accent color, depending on the type of button) | Colors are defined in `material.min.css` |
+| `mdl-button--primary` | Applies *primary* color display effect | Colors are defined in `material.min.css` |
+| `mdl-button--accent` | Applies *accent* color display effect | Colors are defined in `material.min.css` |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect | May be used in combination with any other classes |
+
+>**Note:** Disabled versions of all the available button types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect" disabled>Raised Ripples Disabled</button>`. Alternatively, the `mdl-button--disabled` class can be used to achieve the same style but it does not disable the functionality of the element.
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/button/_button.scss b/node_modules/material-design-lite/src/button/_button.scss
new file mode 100644
index 0000000..25bb3b3
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/_button.scss
@@ -0,0 +1,305 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+// The button component. Defaults to a flat button.
+.mdl-button {
+  background: transparent;
+  border: none;
+  border-radius: $button-border-radius;
+  color: $button-secondary-color;
+  position: relative;
+  height: $button-height;
+  margin: 0;
+  min-width: $button-min-width;
+  padding: 0 $button-padding;
+  display: inline-block;
+  @include typo-button();
+  overflow: hidden;
+  will-change: box-shadow;
+  transition: box-shadow 0.2s $animation-curve-fast-out-linear-in,
+              background-color 0.2s $animation-curve-default,
+              color 0.2s $animation-curve-default;
+  outline: none;
+  cursor: pointer;
+  text-decoration: none;
+  text-align: center;
+  line-height: $button-height;
+  vertical-align: middle;
+
+  &::-moz-focus-inner {
+    border: 0;
+  }
+
+  &:hover {
+    background-color: $button-hover-color;
+  }
+
+  &:focus:not(:active) {
+    background-color: $button-focus-color;
+  }
+
+  &:active {
+    background-color: $button-active-color;
+  }
+
+  &.mdl-button--colored {
+    color: $button-primary-color-alt;
+
+    &:focus:not(:active) {
+      background-color: $button-focus-color-alt;
+    }
+  }
+}
+
+input.mdl-button[type="submit"] {
+  -webkit-appearance:none;
+}
+
+  // Raised buttons
+  .mdl-button--raised {
+    background: $button-primary-color;
+    @include shadow-2dp();
+
+    &:active {
+      @include shadow-4dp();
+      background-color: $button-active-color;
+    }
+
+    &:focus:not(:active) {
+      @include focus-shadow();
+      background-color: $button-active-color;
+    }
+
+    &.mdl-button--colored {
+      background: $button-primary-color-alt;
+      color: $button-secondary-color-alt;
+
+      &:hover {
+        background-color: $button-hover-color-alt;
+      }
+
+      &:active {
+        background-color: $button-active-color-alt;
+      }
+
+      &:focus:not(:active) {
+        background-color: $button-active-color-alt;
+      }
+
+      & .mdl-ripple {
+        background: $button-ripple-color-alt;
+      }
+    }
+  }
+
+
+  // FABs
+  .mdl-button--fab {
+    border-radius: 50%;
+    font-size: $button-fab-font-size;
+    height: $button-fab-size;
+    margin: auto;
+    min-width: $button-fab-size;
+    width: $button-fab-size;
+    padding: 0;
+    overflow: hidden;
+    background: $button-primary-color;
+    box-shadow: 0 1px 1.5px 0 rgba(0,0,0,0.12), 0 1px 1px 0 rgba(0,0,0,0.24);
+    position: relative;
+    line-height: normal;
+
+    & .material-icons {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);
+      line-height: $button-fab-font-size;
+      width: $button-fab-font-size;
+    }
+
+    &.mdl-button--mini-fab {
+      height: $button-fab-size-mini;
+      min-width: $button-fab-size-mini;
+      width: $button-fab-size-mini;
+    }
+
+    & .mdl-button__ripple-container {
+      border-radius: 50%;
+      // Fixes clipping bug in Safari.
+      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+    }
+
+    &:active {
+      @include shadow-4dp();
+      background-color: $button-active-color;
+    }
+
+    &:focus:not(:active) {
+      @include focus-shadow();
+      background-color: $button-active-color;
+    }
+
+    &.mdl-button--colored {
+      background: $button-fab-color-alt;
+      color: $button-fab-text-color-alt;
+
+      &:hover {
+        background-color: $button-fab-hover-color-alt;
+      }
+
+      &:focus:not(:active) {
+        background-color: $button-fab-active-color-alt;
+      }
+
+      &:active {
+        background-color: $button-fab-active-color-alt;
+      }
+
+      & .mdl-ripple {
+        background: $button-fab-ripple-color-alt;
+      }
+    }
+  }
+
+
+  // Icon buttons
+  .mdl-button--icon {
+    border-radius: 50%;
+    font-size: $button-fab-font-size;
+    height: $button-icon-size;
+    margin-left: 0;
+    margin-right: 0;
+    min-width: $button-icon-size;
+    width: $button-icon-size;
+    padding: 0;
+    overflow: hidden;
+    color: inherit;
+    line-height: normal;
+
+    & .material-icons {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);
+      line-height: $button-fab-font-size;
+      width: $button-fab-font-size;
+    }
+
+    &.mdl-button--mini-icon {
+      height: $button-icon-size-mini;
+      min-width: $button-icon-size-mini;
+      width: $button-icon-size-mini;
+
+      & .material-icons {
+        top: ($button-icon-size-mini - $button-fab-font-size) / 2;
+        left: ($button-icon-size-mini - $button-fab-font-size) / 2;
+      }
+    }
+
+    & .mdl-button__ripple-container {
+      border-radius: 50%;
+      // Fixes clipping bug in Safari.
+      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+    }
+  }
+
+
+  // Ripples
+  .mdl-button__ripple-container {
+    display: block;
+    height: 100%;
+    left: 0px;
+    position: absolute;
+    top: 0px;
+    width: 100%;
+    z-index: 0;
+    overflow: hidden;
+
+    .mdl-button[disabled] & .mdl-ripple,
+    .mdl-button.mdl-button--disabled & .mdl-ripple {
+      background-color: transparent;
+    }
+  }
+
+// Colorized buttons
+
+.mdl-button--primary.mdl-button--primary {
+  color: $button-primary-color-alt;
+  & .mdl-ripple {
+    background: $button-secondary-color-alt;
+  }
+  &.mdl-button--raised, &.mdl-button--fab {
+    color: $button-secondary-color-alt;
+    background-color: $button-primary-color-alt;
+  }
+}
+
+.mdl-button--accent.mdl-button--accent {
+  color: $button-fab-color-alt;
+  & .mdl-ripple {
+    background: $button-fab-text-color-alt;
+  }
+  &.mdl-button--raised, &.mdl-button--fab {
+    color: $button-fab-text-color-alt;
+    background-color: $button-fab-color-alt;
+  }
+}
+
+// Disabled buttons
+
+.mdl-button {
+  // Bump up specificity by using [disabled] twice.
+  &[disabled][disabled],
+  &.mdl-button--disabled.mdl-button--disabled {
+    color: $button-secondary-color-disabled;
+    cursor: default;
+    background-color: transparent;
+  }
+
+  &--fab {
+    // Bump up specificity by using [disabled] twice.
+    &[disabled][disabled],
+    &.mdl-button--disabled.mdl-button--disabled {
+      background-color: $button-primary-color-disabled;
+      color: $button-secondary-color-disabled;
+    }
+  }
+
+  &--raised {
+    // Bump up specificity by using [disabled] twice.
+    &[disabled][disabled],
+    &.mdl-button--disabled.mdl-button--disabled {
+      background-color: $button-primary-color-disabled;
+      color: $button-secondary-color-disabled;
+      box-shadow: none;
+    }
+  }
+  &--colored {
+    // Bump up specificity by using [disabled] twice.
+    &[disabled][disabled],
+    &.mdl-button--disabled.mdl-button--disabled {
+      color: $button-secondary-color-disabled;
+    }
+  }
+}
+
+// Align icons inside buttons with text
+.mdl-button .material-icons {
+  vertical-align: middle;
+}
diff --git a/node_modules/material-design-lite/src/button/button.js b/node_modules/material-design-lite/src/button/button.js
new file mode 100644
index 0000000..cc9ba8d
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/button.js
@@ -0,0 +1,123 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Button MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialButton = function MaterialButton(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialButton'] = MaterialButton;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialButton.prototype.Constant_ = {
+    // None for now.
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialButton.prototype.CssClasses_ = {
+    RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_CONTAINER: 'mdl-button__ripple-container',
+    RIPPLE: 'mdl-ripple'
+  };
+
+  /**
+   * Handle blur of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialButton.prototype.blurHandler_ = function(event) {
+    if (event) {
+      this.element_.blur();
+    }
+  };
+
+  // Public methods.
+
+  /**
+   * Disable button.
+   *
+   * @public
+   */
+  MaterialButton.prototype.disable = function() {
+    this.element_.disabled = true;
+  };
+  MaterialButton.prototype['disable'] = MaterialButton.prototype.disable;
+
+  /**
+   * Enable button.
+   *
+   * @public
+   */
+  MaterialButton.prototype.enable = function() {
+    this.element_.disabled = false;
+  };
+  MaterialButton.prototype['enable'] = MaterialButton.prototype.enable;
+
+  /**
+   * Initialize element.
+   */
+  MaterialButton.prototype.init = function() {
+    if (this.element_) {
+      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {
+        var rippleContainer = document.createElement('span');
+        rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);
+        this.rippleElement_ = document.createElement('span');
+        this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);
+        rippleContainer.appendChild(this.rippleElement_);
+        this.boundRippleBlurHandler = this.blurHandler_.bind(this);
+        this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);
+        this.element_.appendChild(rippleContainer);
+      }
+      this.boundButtonBlurHandler = this.blurHandler_.bind(this);
+      this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);
+      this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialButton,
+    classAsString: 'MaterialButton',
+    cssClass: 'mdl-js-button',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-colored-ripple.html b/node_modules/material-design-lite/src/button/snippets/fab-colored-ripple.html
new file mode 100644
index 0000000..df2d39a
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-colored-ripple.html
@@ -0,0 +1,4 @@
+<!-- Colored FAB button with ripple -->
+<button class="mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-colored.html b/node_modules/material-design-lite/src/button/snippets/fab-colored.html
new file mode 100644
index 0000000..b25e8da
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-colored.html
@@ -0,0 +1,4 @@
+<!-- Colored FAB button -->
+<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-disabled.html b/node_modules/material-design-lite/src/button/snippets/fab-disabled.html
new file mode 100644
index 0000000..3dc9cb4
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-disabled.html
@@ -0,0 +1,4 @@
+<!-- Disabled FAB button -->
+<button class="mdl-button mdl-js-button mdl-button--fab" disabled>
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-mini-colored.html b/node_modules/material-design-lite/src/button/snippets/fab-mini-colored.html
new file mode 100644
index 0000000..3e35a15
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-mini-colored.html
@@ -0,0 +1,4 @@
+<!-- Colored mini FAB button -->
+<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-mini.html b/node_modules/material-design-lite/src/button/snippets/fab-mini.html
new file mode 100644
index 0000000..8b5c5ca
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-mini.html
@@ -0,0 +1,4 @@
+<!-- Mini FAB button -->
+<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab-ripple.html b/node_modules/material-design-lite/src/button/snippets/fab-ripple.html
new file mode 100644
index 0000000..02c42f9
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab-ripple.html
@@ -0,0 +1,4 @@
+<!-- FAB button with ripple -->
+<button class="mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/fab.html b/node_modules/material-design-lite/src/button/snippets/fab.html
new file mode 100644
index 0000000..0874925
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/fab.html
@@ -0,0 +1,4 @@
+<!-- FAB button -->
+<button class="mdl-button mdl-js-button mdl-button--fab">
+  <i class="material-icons">add</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/flat-accent.html b/node_modules/material-design-lite/src/button/snippets/flat-accent.html
new file mode 100644
index 0000000..b650bc2
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/flat-accent.html
@@ -0,0 +1,4 @@
+<!-- Accent-colored flat button -->
+<button class="mdl-button mdl-js-button mdl-button--accent">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/flat-disabled.html b/node_modules/material-design-lite/src/button/snippets/flat-disabled.html
new file mode 100644
index 0000000..9139038
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/flat-disabled.html
@@ -0,0 +1,4 @@
+<!-- Disabled flat button -->
+<button class="mdl-button mdl-js-button" disabled>
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/flat-primary.html b/node_modules/material-design-lite/src/button/snippets/flat-primary.html
new file mode 100644
index 0000000..780ce48
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/flat-primary.html
@@ -0,0 +1,4 @@
+<!-- Primary-colored flat button -->
+<button class="mdl-button mdl-js-button mdl-button--primary">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/flat-ripple.html b/node_modules/material-design-lite/src/button/snippets/flat-ripple.html
new file mode 100644
index 0000000..c8c37a8
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/flat-ripple.html
@@ -0,0 +1,4 @@
+<!-- Flat button with ripple -->
+<button class="mdl-button mdl-js-button mdl-js-ripple-effect">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/flat.html b/node_modules/material-design-lite/src/button/snippets/flat.html
new file mode 100644
index 0000000..19da613
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/flat.html
@@ -0,0 +1,4 @@
+<!-- Flat button -->
+<button class="mdl-button mdl-js-button">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/icon-colored.html b/node_modules/material-design-lite/src/button/snippets/icon-colored.html
new file mode 100644
index 0000000..cabcb5a
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/icon-colored.html
@@ -0,0 +1,4 @@
+<!-- Colored icon button -->
+<button class="mdl-button mdl-js-button mdl-button--icon mdl-button--colored">
+  <i class="material-icons">mood</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/icon.html b/node_modules/material-design-lite/src/button/snippets/icon.html
new file mode 100644
index 0000000..122023a
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/icon.html
@@ -0,0 +1,4 @@
+<!-- Icon button -->
+<button class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">mood</i>
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised-accent.html b/node_modules/material-design-lite/src/button/snippets/raised-accent.html
new file mode 100644
index 0000000..cb547f1
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised-accent.html
@@ -0,0 +1,4 @@
+<!-- Accent-colored raised button -->
+<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--accent">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised-colored.html b/node_modules/material-design-lite/src/button/snippets/raised-colored.html
new file mode 100644
index 0000000..713c2f5
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised-colored.html
@@ -0,0 +1,4 @@
+<!-- Colored raised button -->
+<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised-disabled.html b/node_modules/material-design-lite/src/button/snippets/raised-disabled.html
new file mode 100644
index 0000000..545bec7
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised-disabled.html
@@ -0,0 +1,4 @@
+<!-- Raised disabled button -->
+<button class="mdl-button mdl-js-button mdl-button--raised" disabled>
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised-ripple-accent.html b/node_modules/material-design-lite/src/button/snippets/raised-ripple-accent.html
new file mode 100644
index 0000000..9d33d8b
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised-ripple-accent.html
@@ -0,0 +1,4 @@
+<!-- Accent-colored raised button with ripple -->
+<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised-ripple.html b/node_modules/material-design-lite/src/button/snippets/raised-ripple.html
new file mode 100644
index 0000000..6b38c0b
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised-ripple.html
@@ -0,0 +1,4 @@
+<!-- Raised button with ripple -->
+<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/button/snippets/raised.html b/node_modules/material-design-lite/src/button/snippets/raised.html
new file mode 100644
index 0000000..a939733
--- /dev/null
+++ b/node_modules/material-design-lite/src/button/snippets/raised.html
@@ -0,0 +1,4 @@
+<!-- Raised button -->
+<button class="mdl-button mdl-js-button mdl-button--raised">
+  Button
+</button>
diff --git a/node_modules/material-design-lite/src/card/README.md b/node_modules/material-design-lite/src/card/README.md
new file mode 100755
index 0000000..2611892
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/README.md
@@ -0,0 +1,128 @@
+## Introduction
+
+The Material Design Lite (MDL) **card** component is a user interface element representing a virtual piece of paper that contains related data &mdash; such as a photo, some text, and a link &mdash; that are all about a single subject.
+
+Cards are a convenient means of coherently displaying related content that is composed of different types of objects. They are also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length. Cards have a constant width and a variable height, depending on their content.
+
+Cards are a fairly new feature in user interfaces, and allow users an access point to more complex and detailed information. Their design and use is an important factor in the overall user experience. See the card component's [Material Design specifications page](http://www.google.com/design/spec/components/cards.html) for details.
+
+### To include an MDL **card** component:
+
+&nbsp;1. Code a `<div>` element; this is the "outer" container, intended to hold all of the card's content.
+```html
+<div>
+</div>
+```
+&nbsp;2. Inside the div, code one or more "inner" divs, one for each desired content block. A card containing a title, an image, some text, and an action bar would contain four "inner" divs, all siblings.
+```html
+<div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+</div>
+```
+&nbsp;3. Add one or more MDL classes, separated by spaces, to the "outer" div and the "inner" divs (depending on their intended use) using the `class` attribute.
+```html
+<div class="mdl-card">
+  <div class="mdl-card__title">
+  ...
+  </div>
+  <div class="mdl-card__media">
+  ...
+  </div>
+  <div class="mdl-card__supporting-text">
+  ...
+  </div>
+  <div class="mdl-card__actions">
+  ...
+  </div>
+</div>
+```
+&nbsp;4. Add content to each "inner" div, again depending on its intended use, using standard HTML elements and, optionally, additional MDL classes.
+```html
+<div class="mdl-card">
+  <div class="mdl-card__title">
+    <h2 class="mdl-card__title-text">title Text Goes Here</h2>
+  </div>
+  <div class="mdl-card__media">
+    <img src="photo.jpg" width="220" height="140" border="0" alt="" style="padding:20px;">
+  </div>
+  <div class="mdl-card__supporting-text">
+    This text might describe the photo and provide further information, such as where and
+    when it was taken.
+  </div>
+  <div class="mdl-card__actions">
+    <a href="(URL or function)">Related Action</a>
+  </div>
+</div>
+```
+
+The card component is ready for use.
+
+#### Examples
+
+A card (no shadow) with a title, image, text, and action.
+
+```html
+<div class="mdl-card">
+  <div class="mdl-card__title">
+     <h2 class="mdl-card__title-text">Auckland Sky Tower<br>Auckland, New Zealand</h2>
+  </div>
+  <div class="mdl-card__media">
+    <img src="skytower.jpg" width="173" height="157" border="0" alt=""
+     style="padding:10px;">
+  </div>
+  <div class="mdl-card__supporting-text">
+  The Sky Tower is an observation and telecommunications tower located in Auckland,
+  New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure
+  in the Southern Hemisphere.
+  </div>
+  <div class="mdl-card__actions">
+     <a href="http://en.wikipedia.org/wiki/Sky_Tower_%28Auckland%29">Wikipedia entry</a>
+  </div>
+</div>
+```
+
+Card (level-3 shadow) with an image, caption, and text:
+
+```html
+<div class="mdl-card mdl-shadow--4dp">
+  <div class="mdl-card__media"><img src="skytower.jpg" width="173" height="157" border="0"
+   alt="" style="padding:10px;">
+  </div>
+  <div class="mdl-card__supporting-text">
+    Auckland Sky Tower, taken March 24th, 2014
+  </div>
+  <div class="mdl-card__supporting-text">
+  The Sky Tower is an observation and telecommunications tower located in Auckland,
+  New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure
+  in the Southern Hemisphere.
+  </div>
+</div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the card. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-card` | Defines div element as an MDL card container | Required on "outer" div |
+| `mdl-card--border` | Adds a border to the card section that it's applied to | Used on the "inner" divs |
+| `mdl-shadow--2dp through mdl-shadow--16dp` | Assigns variable shadow depths (2, 3, 4, 6, 8, or 16) to card | Optional, goes on "outer" div; if omitted, no shadow is present |
+| `mdl-card__title` | Defines div as a card title container | Required on "inner" title div |
+| `mdl-card__title-text` | Assigns appropriate text characteristics to card title | Required on head tag (H1 - H6) inside title div |
+| `mdl-card__subtitle-text` | Assigns text characteristics to a card subtitle | Optional. Should be a child of the title element. |
+| `mdl-card__media` | Defines div as a card media container | Required on "inner" media div |
+| `mdl-card__supporting-text` | Defines div as a card body text container and assigns appropriate text characteristics to body text | Required on "inner" body text div; text goes directly inside the div with no intervening containers |
+| `mdl-card__actions` | Defines div as a card actions container and assigns appropriate text characteristics to actions text | Required on "inner" actions div; content goes directly inside the div with no intervening containers |
+| `mdl-card__menu` | Defines element as top right menu button | Optional. Should be a child of the `mdl-card` element. |
diff --git a/node_modules/material-design-lite/src/card/_card.scss b/node_modules/material-design-lite/src/card/_card.scss
new file mode 100644
index 0000000..6f8c19f
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/_card.scss
@@ -0,0 +1,115 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-card {
+  display: flex;
+  flex-direction: column;
+  font-size: $card-font-size;
+  font-weight: 400;
+  min-height: $card-height;
+  overflow: hidden;
+  width: $card-width;
+  z-index: $card-z-index;
+  position: relative;
+  background: $card-background-color;
+  border-radius: 2px;
+  box-sizing: border-box;
+}
+
+.mdl-card__media {
+  background-color: $card-image-placeholder-color;
+  background-repeat: repeat;
+  background-position: 50% 50%;
+  background-size: cover;
+  background-origin: padding-box;
+  background-attachment: scroll;
+  box-sizing: border-box;
+}
+
+.mdl-card__title {
+  align-items: center;
+  color: $card-text-color;
+  display: block;
+  display: flex;
+  justify-content: stretch;
+  line-height: normal;
+  padding: $card-vertical-padding $card-horizontal-padding;
+  perspective-origin: $card-title-perspective-origin-x $card-title-perspective-origin-y;
+  transform-origin: $card-title-transform-origin-x $card-title-transform-origin-y;
+  box-sizing: border-box;
+
+  &.mdl-card--border {
+    border-bottom: 1px solid $card-border-color;
+  }
+}
+
+.mdl-card__title-text {
+  align-self: flex-end;
+  color: inherit;
+  display: block;
+  display: flex;
+  font-size: $card-title-font-size;
+  font-weight: $card-title-text-font-weight;
+  line-height: normal;
+  overflow: hidden;
+  transform-origin: $card-title-text-transform-origin-x $card-title-text-transform-origin-y;
+  margin: 0;
+}
+
+.mdl-card__subtitle-text {
+  font-size: $card-subtitle-font-size;
+  color: $card-subtitle-color;
+  margin: 0;
+}
+
+.mdl-card__supporting-text {
+  color: $card-supporting-text-text-color;
+  font-size: $card-supporting-text-font-size;
+  line-height: $card-supporting-text-line-height;
+  overflow: hidden;
+  padding: $card-vertical-padding $card-horizontal-padding;
+  width: 90%;
+
+  &.mdl-card--border {
+    border-bottom: 1px solid $card-border-color;
+  }
+}
+
+.mdl-card__actions {
+  font-size: $card-actions-font-size;
+  line-height: normal;
+  width: 100%;
+  background-color: rgba(0,0,0,0);
+  padding: 8px;
+  box-sizing: border-box;
+
+  &.mdl-card--border {
+    border-top: 1px solid $card-border-color;
+  }
+}
+
+.mdl-card--expand {
+  flex-grow: 1;
+}
+
+
+.mdl-card__menu {
+  position: absolute;
+  right: 16px;
+  top: 16px;
+}
diff --git a/node_modules/material-design-lite/src/card/snippets/event.html b/node_modules/material-design-lite/src/card/snippets/event.html
new file mode 100644
index 0000000..b5407c3
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/snippets/event.html
@@ -0,0 +1,47 @@
+<!-- Event card -->
+<style>
+.demo-card-event.mdl-card {
+  width: 256px;
+  height: 256px;
+  background: #3E4EB8;
+}
+.demo-card-event > .mdl-card__actions {
+  border-color: rgba(255, 255, 255, 0.2);
+}
+.demo-card-event > .mdl-card__title {
+  align-items: flex-start;
+}
+.demo-card-event > .mdl-card__title > h4 {
+  margin-top: 0;
+}
+.demo-card-event > .mdl-card__actions {
+  display: flex;
+  box-sizing:border-box;
+  align-items: center;
+}
+.demo-card-event > .mdl-card__actions > .material-icons {
+  padding-right: 10px;
+}
+.demo-card-event > .mdl-card__title,
+.demo-card-event > .mdl-card__actions,
+.demo-card-event > .mdl-card__actions > .mdl-button {
+  color: #fff;
+}
+</style>
+
+<div class="demo-card-event mdl-card mdl-shadow--2dp">
+  <div class="mdl-card__title mdl-card--expand">
+    <h4>
+      Featured event:<br>
+      May 24, 2016<br>
+      7-11pm
+    </h4>
+  </div>
+  <div class="mdl-card__actions mdl-card--border">
+    <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
+      Add to Calendar
+    </a>
+    <div class="mdl-layout-spacer"></div>
+    <i class="material-icons">event</i>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/card/snippets/image.html b/node_modules/material-design-lite/src/card/snippets/image.html
new file mode 100644
index 0000000..f9cb645
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/snippets/image.html
@@ -0,0 +1,25 @@
+<!-- Image card -->
+<style>
+.demo-card-image.mdl-card {
+  width: 256px;
+  height: 256px;
+  background: url('../assets/demos/image_card.jpg') center / cover;
+}
+.demo-card-image > .mdl-card__actions {
+  height: 52px;
+  padding: 16px;
+  background: rgba(0, 0, 0, 0.2);
+}
+.demo-card-image__filename {
+  color: #fff;
+  font-size: 14px;
+  font-weight: 500;
+}
+</style>
+
+<div class="demo-card-image mdl-card mdl-shadow--2dp">
+  <div class="mdl-card__title mdl-card--expand"></div>
+  <div class="mdl-card__actions">
+    <span class="demo-card-image__filename">Image.jpg</span>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/card/snippets/square.html b/node_modules/material-design-lite/src/card/snippets/square.html
new file mode 100644
index 0000000..93d13f5
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/snippets/square.html
@@ -0,0 +1,27 @@
+<!-- Square card -->
+<style>
+.demo-card-square.mdl-card {
+  width: 320px;
+  height: 320px;
+}
+.demo-card-square > .mdl-card__title {
+  color: #fff;
+  background:
+    url('../assets/demos/dog.png') bottom right 15% no-repeat #46B6AC;
+}
+</style>
+
+<div class="demo-card-square mdl-card mdl-shadow--2dp">
+  <div class="mdl-card__title mdl-card--expand">
+    <h2 class="mdl-card__title-text">Update</h2>
+  </div>
+  <div class="mdl-card__supporting-text">
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Aenan convallis.
+  </div>
+  <div class="mdl-card__actions mdl-card--border">
+    <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
+      View Updates
+    </a>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/card/snippets/wide.html b/node_modules/material-design-lite/src/card/snippets/wide.html
new file mode 100644
index 0000000..0ee9240
--- /dev/null
+++ b/node_modules/material-design-lite/src/card/snippets/wide.html
@@ -0,0 +1,34 @@
+<!-- Wide card with share menu button -->
+<style>
+.demo-card-wide.mdl-card {
+  width: 512px;
+}
+.demo-card-wide > .mdl-card__title {
+  color: #fff;
+  height: 176px;
+  background: url('../assets/demos/welcome_card.jpg') center / cover;
+}
+.demo-card-wide > .mdl-card__menu {
+  color: #fff;
+}
+</style>
+
+<div class="demo-card-wide mdl-card mdl-shadow--2dp">
+  <div class="mdl-card__title">
+    <h2 class="mdl-card__title-text">Welcome</h2>
+  </div>
+  <div class="mdl-card__supporting-text">
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Mauris sagittis pellentesque lacus eleifend lacinia...
+  </div>
+  <div class="mdl-card__actions mdl-card--border">
+    <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
+      Get Started
+    </a>
+  </div>
+  <div class="mdl-card__menu">
+    <button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect">
+      <i class="material-icons">share</i>
+    </button>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/checkbox/README.md b/node_modules/material-design-lite/src/checkbox/README.md
new file mode 100755
index 0000000..2a000e7
--- /dev/null
+++ b/node_modules/material-design-lite/src/checkbox/README.md
@@ -0,0 +1,64 @@
+## Introduction
+
+The Material Design Lite (MDL) **checkbox** component is an enhanced version of the standard HTML `<input type="checkbox">` element. A checkbox consists of a small square and, typically, text that clearly communicates a binary condition that will be set or unset when the user clicks or touches it. Checkboxes typically, but not necessarily, appear in groups, and can be selected and deselected individually. The MDL checkbox component allows you to add display and click effects.
+
+Checkboxes are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the checkbox component's [Material Design specifications page](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-checkbox) for details.
+
+The enhanced checkbox component has a more vivid visual look than a standard checkbox, and may be initially or programmatically *disabled*.
+
+### To include an MDL **checkbox** component:
+
+&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the checkbox it will contain. The `for` attribute is optional when the `<input>` element is contained inside the `<label>` element, but is recommended for clarity.
+```html
+<label for="chkbox1">
+...
+</label>
+```
+&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `"checkbox"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.
+```html
+<label for="chkbox1">
+  <input type="checkbox" id="chkbox1">
+</label>
+```
+&nbsp;3. Also inside the label, after the checkbox, code a `<span>` element containing the checkbox's text caption.
+```html
+<label for="chkbox1">
+  <input type="checkbox" id="chkbox1">
+  <span>Enable AutoSave</span>
+</label>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, checkbox, and caption using the `class` attribute.
+```html
+<label for="chkbox1" class="mdl-checkbox mdl-js-checkbox">
+  <input type="checkbox" id="chkbox1" class="mdl-checkbox__input">
+  <span class="mdl-checkbox__label">Enable AutoSave</span>
+</label>
+```
+
+The checkbox component is ready for use.
+
+#### Example
+
+A checkbox with a ripple click effect.
+
+```html
+<label for="chkbox1" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect">
+  <input type="checkbox" id="chkbox1" class="mdl-checkbox__input">
+  <span class="mdl-checkbox__label">Enable AutoSave</span>
+</label>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the checkbox. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-checkbox` | Defines label as an MDL component | Required on label element|
+| `mdl-js-checkbox` | Assigns basic MDL behavior to label | Required on label element |
+| `mdl-checkbox__input` | Applies basic MDL behavior to checkbox | Required on input element (checkbox) |
+| `mdl-checkbox__label` | Applies basic MDL behavior to caption | Required on span element (caption) |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (checkbox) |
+
+>**Note:** Disabled versions of all the available checkbox types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type="checkbox" id="checkbox-5" class="mdl-checkbox__input" disabled>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/checkbox/_checkbox.scss b/node_modules/material-design-lite/src/checkbox/_checkbox.scss
new file mode 100644
index 0000000..3dd265e
--- /dev/null
+++ b/node_modules/material-design-lite/src/checkbox/_checkbox.scss
@@ -0,0 +1,180 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-checkbox {
+  position: relative;
+
+  z-index: 1;
+
+  vertical-align: middle;
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: 100%;
+  height: $checkbox-label-height;
+  margin: 0;
+  padding: 0;
+
+  &.is-upgraded {
+    padding-left: $checkbox-button-size + $checkbox-padding;
+  }
+}
+
+.mdl-checkbox__input {
+  line-height: $checkbox-label-height;
+
+  .mdl-checkbox.is-upgraded & {
+    // Hide input element, while still making it respond to focus.
+    position: absolute;
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+    -ms-appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+    border: none;
+  }
+}
+
+.mdl-checkbox__box-outline {
+  position: absolute;
+  top: $checkbox-top-offset;
+  left: 0;
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: $checkbox-button-size;
+  height: $checkbox-button-size;
+  margin: 0;
+
+  cursor: pointer;
+  overflow: hidden;
+
+  border: 2px solid $checkbox-off-color;
+  border-radius: 2px;
+
+  z-index: 2;
+
+  .mdl-checkbox.is-checked & {
+    border: 2px solid $checkbox-color;
+  }
+
+  fieldset[disabled] .mdl-checkbox &,
+  .mdl-checkbox.is-disabled & {
+    border: 2px solid $checkbox-disabled-color;
+    cursor: auto;
+  }
+}
+
+.mdl-checkbox__focus-helper {
+  position: absolute;
+  top: $checkbox-top-offset;
+  left: 0;
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: $checkbox-button-size;
+  height: $checkbox-button-size;
+  border-radius: 50%;
+
+  background-color: transparent;
+
+  .mdl-checkbox.is-focused & {
+    box-shadow: 0 0 0px ($checkbox-button-size / 2) rgba(0, 0, 0, 0.1);
+    background-color: rgba(0, 0, 0, 0.1);
+  }
+
+  .mdl-checkbox.is-focused.is-checked & {
+    box-shadow: 0 0 0px ($checkbox-button-size / 2) $checkbox-focus-color;
+    background-color: $checkbox-focus-color;
+  }
+}
+
+.mdl-checkbox__tick-outline {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  mask: url("#{$checkbox-image-path}/tick-mask.svg?embed");
+
+  background: transparent;
+  @include material-animation-default(0.28s);
+  transition-property: background;
+
+  .mdl-checkbox.is-checked & {
+    background: $checkbox-color url("#{$checkbox-image-path}/tick.svg?embed");
+  }
+
+  fieldset[disabled] .mdl-checkbox.is-checked &,
+  .mdl-checkbox.is-checked.is-disabled & {
+    background: $checkbox-disabled-color url("#{$checkbox-image-path}/tick.svg?embed");
+  }
+}
+
+.mdl-checkbox__label {
+  position: relative;
+  cursor: pointer;
+  font-size: $checkbox-label-font-size;
+  line-height: $checkbox-label-height;
+  margin: 0;
+
+  fieldset[disabled] .mdl-checkbox &,
+  .mdl-checkbox.is-disabled & {
+    color: $checkbox-disabled-color;
+    cursor: auto;
+  }
+}
+
+.mdl-checkbox__ripple-container {
+  position: absolute;
+  z-index: 2;
+  top: -(($checkbox-ripple-size - $checkbox-label-height) / 2);
+  left: -(($checkbox-ripple-size - $checkbox-button-size) / 2);
+
+  box-sizing: border-box;
+  width: $checkbox-ripple-size;
+  height: $checkbox-ripple-size;
+  border-radius: 50%;
+
+  cursor: pointer;
+
+  overflow: hidden;
+  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+
+  & .mdl-ripple {
+    background: $checkbox-color;
+  }
+
+  fieldset[disabled] .mdl-checkbox &,
+  .mdl-checkbox.is-disabled & {
+    cursor: auto;
+  }
+
+  fieldset[disabled] .mdl-checkbox & .mdl-ripple,
+  .mdl-checkbox.is-disabled & .mdl-ripple {
+    background: transparent;
+  }
+}
diff --git a/node_modules/material-design-lite/src/checkbox/checkbox.js b/node_modules/material-design-lite/src/checkbox/checkbox.js
new file mode 100644
index 0000000..148035b
--- /dev/null
+++ b/node_modules/material-design-lite/src/checkbox/checkbox.js
@@ -0,0 +1,269 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Checkbox MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialCheckbox = function MaterialCheckbox(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialCheckbox'] = MaterialCheckbox;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialCheckbox.prototype.Constant_ = {
+    TINY_TIMEOUT: 0.001
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialCheckbox.prototype.CssClasses_ = {
+    INPUT: 'mdl-checkbox__input',
+    BOX_OUTLINE: 'mdl-checkbox__box-outline',
+    FOCUS_HELPER: 'mdl-checkbox__focus-helper',
+    TICK_OUTLINE: 'mdl-checkbox__tick-outline',
+    RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',
+    RIPPLE_CENTER: 'mdl-ripple--center',
+    RIPPLE: 'mdl-ripple',
+    IS_FOCUSED: 'is-focused',
+    IS_DISABLED: 'is-disabled',
+    IS_CHECKED: 'is-checked',
+    IS_UPGRADED: 'is-upgraded'
+  };
+
+  /**
+   * Handle change of state.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialCheckbox.prototype.onChange_ = function(event) {
+    this.updateClasses_();
+  };
+
+  /**
+   * Handle focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialCheckbox.prototype.onFocus_ = function(event) {
+    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle lost focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialCheckbox.prototype.onBlur_ = function(event) {
+    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle mouseup.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialCheckbox.prototype.onMouseUp_ = function(event) {
+    this.blur_();
+  };
+
+  /**
+   * Handle class updates.
+   *
+   * @private
+   */
+  MaterialCheckbox.prototype.updateClasses_ = function() {
+    this.checkDisabled();
+    this.checkToggleState();
+  };
+
+  /**
+   * Add blur.
+   *
+   * @private
+   */
+  MaterialCheckbox.prototype.blur_ = function() {
+    // TODO: figure out why there's a focus event being fired after our blur,
+    // so that we can avoid this hack.
+    window.setTimeout(function() {
+      this.inputElement_.blur();
+    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));
+  };
+
+  // Public methods.
+
+  /**
+   * Check the inputs toggle state and update display.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.checkToggleState = function() {
+    if (this.inputElement_.checked) {
+      this.element_.classList.add(this.CssClasses_.IS_CHECKED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);
+    }
+  };
+  MaterialCheckbox.prototype['checkToggleState'] =
+      MaterialCheckbox.prototype.checkToggleState;
+
+  /**
+   * Check the inputs disabled state and update display.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.checkDisabled = function() {
+    if (this.inputElement_.disabled) {
+      this.element_.classList.add(this.CssClasses_.IS_DISABLED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
+    }
+  };
+  MaterialCheckbox.prototype['checkDisabled'] =
+      MaterialCheckbox.prototype.checkDisabled;
+
+  /**
+   * Disable checkbox.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.disable = function() {
+    this.inputElement_.disabled = true;
+    this.updateClasses_();
+  };
+  MaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;
+
+  /**
+   * Enable checkbox.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.enable = function() {
+    this.inputElement_.disabled = false;
+    this.updateClasses_();
+  };
+  MaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;
+
+  /**
+   * Check checkbox.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.check = function() {
+    this.inputElement_.checked = true;
+    this.updateClasses_();
+  };
+  MaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;
+
+  /**
+   * Uncheck checkbox.
+   *
+   * @public
+   */
+  MaterialCheckbox.prototype.uncheck = function() {
+    this.inputElement_.checked = false;
+    this.updateClasses_();
+  };
+  MaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;
+
+  /**
+   * Initialize element.
+   */
+  MaterialCheckbox.prototype.init = function() {
+    if (this.element_) {
+      this.inputElement_ = this.element_.querySelector('.' +
+          this.CssClasses_.INPUT);
+
+      var boxOutline = document.createElement('span');
+      boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);
+
+      var tickContainer = document.createElement('span');
+      tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);
+
+      var tickOutline = document.createElement('span');
+      tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);
+
+      boxOutline.appendChild(tickOutline);
+
+      this.element_.appendChild(tickContainer);
+      this.element_.appendChild(boxOutline);
+
+      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {
+        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+        this.rippleContainerElement_ = document.createElement('span');
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);
+        this.boundRippleMouseUp = this.onMouseUp_.bind(this);
+        this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);
+
+        var ripple = document.createElement('span');
+        ripple.classList.add(this.CssClasses_.RIPPLE);
+
+        this.rippleContainerElement_.appendChild(ripple);
+        this.element_.appendChild(this.rippleContainerElement_);
+      }
+      this.boundInputOnChange = this.onChange_.bind(this);
+      this.boundInputOnFocus = this.onFocus_.bind(this);
+      this.boundInputOnBlur = this.onBlur_.bind(this);
+      this.boundElementMouseUp = this.onMouseUp_.bind(this);
+      this.inputElement_.addEventListener('change', this.boundInputOnChange);
+      this.inputElement_.addEventListener('focus', this.boundInputOnFocus);
+      this.inputElement_.addEventListener('blur', this.boundInputOnBlur);
+      this.element_.addEventListener('mouseup', this.boundElementMouseUp);
+
+      this.updateClasses_();
+      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialCheckbox,
+    classAsString: 'MaterialCheckbox',
+    cssClass: 'mdl-js-checkbox',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/checkbox/snippets/check-off.html b/node_modules/material-design-lite/src/checkbox/snippets/check-off.html
new file mode 100644
index 0000000..1cbcc25
--- /dev/null
+++ b/node_modules/material-design-lite/src/checkbox/snippets/check-off.html
@@ -0,0 +1,4 @@
+<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-2">
+  <input type="checkbox" id="checkbox-2" class="mdl-checkbox__input">
+  <span class="mdl-checkbox__label">Checkbox</span>
+</label>
diff --git a/node_modules/material-design-lite/src/checkbox/snippets/check-on.html b/node_modules/material-design-lite/src/checkbox/snippets/check-on.html
new file mode 100644
index 0000000..cd7a065
--- /dev/null
+++ b/node_modules/material-design-lite/src/checkbox/snippets/check-on.html
@@ -0,0 +1,4 @@
+<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1">
+  <input type="checkbox" id="checkbox-1" class="mdl-checkbox__input" checked>
+  <span class="mdl-checkbox__label">Checkbox</span>
+</label>
diff --git a/node_modules/material-design-lite/src/chip/README.md b/node_modules/material-design-lite/src/chip/README.md
new file mode 100644
index 0000000..21a0c9f
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/README.md
@@ -0,0 +1,65 @@
+## Introduction
+
+The Material Design Lite (MDL) **chip** component is a small, interactive element.
+Chips are commonly used for contacts, text, rules, icons, and photos.
+
+## TO INCLUDE AN MDL CHIP COMPONENT:
+
+&nbsp;1. Create a container element for the chip; typically `<span>` and `<div>` are used, but any container element should work equally well. If you need interactivity, use a `<button>`, or add the `tabindex` attribute to your container.
+```html
+<span>
+</span>
+```
+
+&nbsp;2. Add in the text wrapper and the MDL classes.
+```html
+<span class="mdl-chip">
+    <span class="mdl-chip__text">Chip Text</span>
+</span>
+```
+
+&nbsp;3. For deletable chips, add in the delete icon. This can be an `<a>`, `<button>` or non-interactive tags like `<span>`.
+```html
+<span class="mdl-chip">
+    <span class="mdl-chip__text">Chip Text</span>
+    <a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
+</span>
+```
+
+&nbsp;4. Contact chips need to have the `mdl-chip--contact` class added to the container, along with another container for the contact icon. The icon container for photos is typically an `<img>` tag, but other types of content can be used with a little extra supporting css.
+```html
+<span class="mdl-chip">
+    <span class="mdl-chip__contact mdl-color--teal mdl-color-text--white">A</span>
+    <span class="mdl-chip__text">Chip Text</span>
+    <a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
+</span>
+```
+
+## Examples
+
+A button based contact chip whose contact image is a `<span>` with a `background-image`.
+
+```html
+<style>
+    .demo-chip .mdl-chip__contact {
+        background-image: url("./path/to/image");
+        background-size: cover;
+    }
+</style>
+
+<button class="mdl-chip demo-chip">
+    <span class="mdl-chip__contact">&nbsp;</span>
+    <span class="mdl-chip__text">Chip Text</span>
+    <a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
+</button>
+```
+
+## CSS Classes
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-chip` | Defines element as an MDL chip container | Required on "outer" container |
+| `mdl-chip--contact` | Defines an MDL chip as a contact style chip | Optional, goes on "outer" container |
+| `mdl-chip__text` | Defines element as the chip's text | Required on "inner" text container |
+| `mdl-chip__action` | Defines element as the chip's action | Required on "inner" action container, if present |
+| `mdl-chip__contact` | Defines element as the chip's contact container | Required on "inner" contact container, if the `mdl-chip--contact` class is present on "outer" container |
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/chip/_chip.scss b/node_modules/material-design-lite/src/chip/_chip.scss
new file mode 100644
index 0000000..18e0549
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/_chip.scss
@@ -0,0 +1,88 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-chip {
+    height: $chip-height;
+    font-family: $preferred_font;
+    line-height: $chip-height;
+    padding: 0 12px;
+    border: 0;
+    border-radius: $chip-height / 2;
+    background-color: $chip-bg-color;
+    display: inline-block;
+    color: $text-color-primary;
+    margin: 2px 0;
+    font-size: 0;
+    white-space: nowrap;
+
+    &__text {
+        font-size: $chip-font-size;
+        vertical-align: middle;
+        display: inline-block;
+    }
+
+    &__action {
+        height: 24px;
+        width: 24px;
+        background: transparent;
+        opacity: 0.54;
+        display: inline-block;
+        cursor: pointer;
+        text-align: center;
+        vertical-align: middle;
+        padding: 0;
+        margin: 0 0 0 4px;
+        font-size: $chip-font-size;
+        text-decoration: none;
+        color: $text-color-primary;
+        border: none;
+        outline: none;
+        overflow: hidden;
+    }
+    
+    &__contact {
+        height: $chip-height;
+        width: $chip-height;
+        border-radius: $chip-height / 2;
+        display: inline-block;
+        vertical-align: middle;
+        margin-right: 8px;
+        overflow: hidden;
+        text-align: center;
+        font-size: 18px;
+        line-height: 32px;
+    }
+    
+    &:focus {
+        outline: 0;
+        @include shadow-2dp();
+    }
+    
+    &:active {
+        background-color: $chip-bg-active-color;
+    }
+    
+    &--deletable {
+        padding-right: 4px;
+    }
+    
+    &--contact {
+        padding-left: 0;
+    }
+}
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/chip/snippets/basic.html b/node_modules/material-design-lite/src/chip/snippets/basic.html
new file mode 100644
index 0000000..f996f82
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/snippets/basic.html
@@ -0,0 +1,4 @@
+<!-- Basic Chip -->
+<span class="mdl-chip">
+    <span class="mdl-chip__text">Basic Chip</span>
+</span>
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/chip/snippets/button.html b/node_modules/material-design-lite/src/chip/snippets/button.html
new file mode 100644
index 0000000..231fdf6
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/snippets/button.html
@@ -0,0 +1,4 @@
+<!-- Button Chip -->
+<button type="button" class="mdl-chip">
+    <span class="mdl-chip__text">Button Chip</span>
+</button>
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/chip/snippets/contact.html b/node_modules/material-design-lite/src/chip/snippets/contact.html
new file mode 100644
index 0000000..2d205cf
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/snippets/contact.html
@@ -0,0 +1,5 @@
+<!-- Contact Chip -->
+<span class="mdl-chip mdl-chip--contact">
+    <span class="mdl-chip__contact mdl-color--teal mdl-color-text--white">A</span>
+    <span class="mdl-chip__text">Contact Chip</span>
+</span>
diff --git a/node_modules/material-design-lite/src/chip/snippets/deletable-contact.html b/node_modules/material-design-lite/src/chip/snippets/deletable-contact.html
new file mode 100644
index 0000000..3f45da3
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/snippets/deletable-contact.html
@@ -0,0 +1,6 @@
+<!-- Deletable Contact Chip -->
+<span class="mdl-chip mdl-chip--contact mdl-chip--deletable">
+    <img class="mdl-chip__contact" src="/templates/dashboard/images/user.jpg"></img>
+    <span class="mdl-chip__text">Deletable Contact Chip</span>
+    <a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
+</span>
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/chip/snippets/deletable.html b/node_modules/material-design-lite/src/chip/snippets/deletable.html
new file mode 100644
index 0000000..6200e39
--- /dev/null
+++ b/node_modules/material-design-lite/src/chip/snippets/deletable.html
@@ -0,0 +1,5 @@
+<!-- Deletable Chip -->
+<span class="mdl-chip mdl-chip--deletable">
+    <span class="mdl-chip__text">Deletable Chip</span>
+    <button type="button" class="mdl-chip__action"><i class="material-icons">cancel</i></button>
+</span>
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/data-table/README.md b/node_modules/material-design-lite/src/data-table/README.md
new file mode 100644
index 0000000..63ff51e
--- /dev/null
+++ b/node_modules/material-design-lite/src/data-table/README.md
@@ -0,0 +1,162 @@
+## Introduction
+
+The Material Design Lite (MDL) **data-table** component is an enhanced version of the standard HTML `<table>`. A data-table consists of rows and columns of well-formatted data, presented with appropriate user interaction capabilities.
+
+Tables are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the data-table component's [Material Design specifications page](http://www.google.com/design/spec/components/data-tables.html) for details.
+
+The available row/column/cell types in a data-table are mostly self-formatting; that is, once the data-table is defined, the individual cells require very little specific attention. For example, the rows exhibit shading behavior on mouseover and selection, numeric values are automatically formatted by default, and the addition of a single class makes the table rows individually or collectively selectable. This makes the data-table component convenient and easy to code for the developer, as well as attractive and intuitive for the user.
+
+### To include an MDL **data-table** component:
+
+&nbsp;1. Code a `<table>` element. Include `<thead>` and `<tbody>` elements to hold the title and data rows, respectively.
+```html
+<table>
+  <thead>
+  </thead>
+  <tbody>
+  </tbody>
+</table>
+```
+
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the table using the `class` attribute.
+```html
+<table class="mdl-data-table mdl-js-data-table">
+  <thead>
+  </thead>
+  <tbody>
+  </tbody>
+</table>
+```
+
+&nbsp;2. Inside the `<thead>`, code exactly one table row `<tr>` containing one table header cell `<th>` for each column, and include the desired text in the header cells. To ensure proper header alignment, add the "non-numeric" MDL class to the header cell of text-only columns. (Data cells are formatted as numeric by default.)
+```html
+<table class="mdl-data-table mdl-js-data-table">
+  <thead>
+    <tr>
+      <th class="mdl-data-table__cell--non-numeric">Name</th>
+      <th>Age</th>
+      <th>ID Number</th>
+    </tr>
+  </thead>
+  <tbody>
+  </tbody>
+</table>
+```
+
+&nbsp;3. Inside the `<tbody>`, code one table row `<tr>` for each data row and one table data cell `<td>` for each column in the row. As with the header cells, add the "non-numeric" MDL class to text-only data cells to ensure proper alignment.
+```html
+<table class="mdl-data-table mdl-js-data-table">
+  <thead>
+    <tr>
+      <th class="mdl-data-table__cell--non-numeric">Name</th>
+      <th>Age</th>
+      <th>ID Number</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Don Aubrey</td>
+      <td>25</td>
+      <td>49021</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Sophia Carson</td>
+      <td>32</td>
+      <td>10258</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Steve Moreno</td>
+      <td>29</td>
+      <td>12359</td>
+    </tr>
+  </tbody>
+</table>
+```
+
+The data-table component is ready for use.
+
+#### Examples
+
+A data-table with a "master" select checkbox and individual row select checkboxes.
+```html
+<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable">
+  <thead>
+    <tr>
+      <th class="mdl-data-table__cell--non-numeric">Material</th>
+      <th>Quantity</th>
+      <th>Unit price</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Acrylic (Transparent)</td>
+      <td>250</td>
+      <td>$2.90</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Plywood (Birch)</td>
+      <td>50</td>
+      <td>$1.25</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Laminate (Gold on Blue)</td>
+      <td>10</td>
+      <td>$12.35</td>
+    </tr>
+  </tbody>
+</table>
+```
+
+A data-table without select checkboxes containing mostly text data.
+```html
+<table class="mdl-data-table mdl-js-data-table">
+  <thead>
+    <tr>
+      <th class="mdl-data-table__cell--non-numeric">Name</th>
+      <th class="mdl-data-table__cell--non-numeric">Nickname</th>
+      <th>Age</th>
+      <th class="mdl-data-table__cell--non-numeric">Living?</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">John Lennon</td>
+      <td class="mdl-data-table__cell--non-numeric">The smart one</td>
+      <td>40</td>
+      <td class="mdl-data-table__cell--non-numeric">No</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Paul McCartney</td>
+      <td class="mdl-data-table__cell--non-numeric">The cute one</td>
+      <td>73</td>
+      <td class="mdl-data-table__cell--non-numeric">Yes</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">George Harrison</td>
+      <td class="mdl-data-table__cell--non-numeric">The shy one</td>
+      <td>58</td>
+      <td class="mdl-data-table__cell--non-numeric">No</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Ringo Starr</td>
+      <td class="mdl-data-table__cell--non-numeric">The funny one</td>
+      <td>74</td>
+      <td class="mdl-data-table__cell--non-numeric">Yes</td>
+    </tr>
+  </tbody>
+</table>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the data-table. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-data-table` | Defines table as an MDL component | Required on table element|
+| `mdl-js-data-table` | Assigns basic MDL behavior to table | Required on table element|
+| `mdl-data-table--selectable` | Applies all/individual selectable behavior (checkboxes) | Optional; goes on table element |
+| `mdl-data-table__header--sorted-ascending` | Applies visual styling to indicate the column is sorted in ascending order | Optional; goes on table header (`th`) |
+| `mdl-data-table__header--sorted-descending` | Applies visual styling to indicate the column is sorted in descending order | Optional; goes on table header (`th`) |
+| `mdl-data-table__cell--non-numeric` | Applies text formatting to data cell | Optional; goes on both table header and table data cells |
+| (none) | Applies numeric formatting to header or data cell (default) |  |
diff --git a/node_modules/material-design-lite/src/data-table/_data-table.scss b/node_modules/material-design-lite/src/data-table/_data-table.scss
new file mode 100644
index 0000000..1f04724
--- /dev/null
+++ b/node_modules/material-design-lite/src/data-table/_data-table.scss
@@ -0,0 +1,120 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-data-table {
+  position: relative;
+  border: $data-table-dividers;
+  border-collapse: collapse;
+  white-space: nowrap;
+  font-size: $data-table-font-size;
+  background-color: unquote("rgb(#{$color-white})");
+
+  thead {
+    padding-bottom: 3px;
+
+    .mdl-data-table__select {
+      margin-top: 0;
+    }
+  }
+
+  tbody {
+    tr {
+      position: relative;
+      height: $data-table-row-height;
+      @include material-animation-default(0.28s);
+      transition-property: background-color;
+
+      &.is-selected {
+        background-color: $data-table-selection-color;
+      }
+
+      &:hover {
+        background-color: $data-table-hover-color;
+      }
+    }
+  }
+
+  td, th {
+    padding: 0 $data-table-column-padding 12px $data-table-column-padding;
+    text-align: right;
+
+    &:first-of-type {
+      padding-left: 24px;
+    }
+
+    &:last-of-type {
+      padding-right: 24px;
+    }
+  }
+
+  td {
+    position: relative;
+    vertical-align: middle;
+    height: $data-table-row-height;
+    border-top: $data-table-dividers;
+    border-bottom: $data-table-dividers;
+    padding-top: $data-table-cell-top;
+    box-sizing: border-box;
+
+    .mdl-data-table__select {
+      vertical-align: middle;
+    }
+  }
+
+  th {
+    position: relative;
+    vertical-align: bottom;
+    text-overflow: ellipsis;
+    @include typo-body-2();
+    height: $data-table-row-height;
+    font-size: $data-table-header-font-size;
+    color: $data-table-header-color;
+    padding-bottom: 8px;
+    box-sizing: border-box;
+
+    &.mdl-data-table__header--sorted-ascending,
+    &.mdl-data-table__header--sorted-descending {
+      color: $data-table-header-sorted-color;
+      &:before {
+        @include typo-icon;
+        font-size: $data-table-header-sort-icon-size;
+        content: "\e5d8";
+        margin-right: 5px;
+        vertical-align: sub;
+      }
+      &:hover {
+        cursor: pointer;
+        &:before {
+          color: $data-table-header-sorted-icon-hover-color;
+        }
+      }
+    }
+    &.mdl-data-table__header--sorted-descending:before {
+      content: "\e5db";
+    }
+  }
+}
+
+.mdl-data-table__select {
+  width: 16px;
+}
+
+.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric {
+  text-align: left;
+}
diff --git a/node_modules/material-design-lite/src/data-table/data-table.js b/node_modules/material-design-lite/src/data-table/data-table.js
new file mode 100644
index 0000000..f2d7983
--- /dev/null
+++ b/node_modules/material-design-lite/src/data-table/data-table.js
@@ -0,0 +1,177 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Data Table Card MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {Element} element The element that will be upgraded.
+   */
+  var MaterialDataTable = function MaterialDataTable(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+
+  window['MaterialDataTable'] = MaterialDataTable;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialDataTable.prototype.Constant_ = {
+    // None at the moment.
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialDataTable.prototype.CssClasses_ = {
+    DATA_TABLE: 'mdl-data-table',
+    SELECTABLE: 'mdl-data-table--selectable',
+    SELECT_ELEMENT: 'mdl-data-table__select',
+    IS_SELECTED: 'is-selected',
+    IS_UPGRADED: 'is-upgraded'
+  };
+
+  /**
+   * Generates and returns a function that toggles the selection state of a
+   * single row (or multiple rows).
+   *
+   * @param {Element} checkbox Checkbox that toggles the selection state.
+   * @param {Element} row Row to toggle when checkbox changes.
+   * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.
+   * @private
+   */
+  MaterialDataTable.prototype.selectRow_ = function(checkbox, row, opt_rows) {
+    if (row) {
+      return function() {
+        if (checkbox.checked) {
+          row.classList.add(this.CssClasses_.IS_SELECTED);
+        } else {
+          row.classList.remove(this.CssClasses_.IS_SELECTED);
+        }
+      }.bind(this);
+    }
+
+    if (opt_rows) {
+      return function() {
+        var i;
+        var el;
+        if (checkbox.checked) {
+          for (i = 0; i < opt_rows.length; i++) {
+            el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');
+            el['MaterialCheckbox'].check();
+            opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);
+          }
+        } else {
+          for (i = 0; i < opt_rows.length; i++) {
+            el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');
+            el['MaterialCheckbox'].uncheck();
+            opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);
+          }
+        }
+      }.bind(this);
+    }
+  };
+
+  /**
+   * Creates a checkbox for a single or or multiple rows and hooks up the
+   * event handling.
+   *
+   * @param {Element} row Row to toggle when checkbox changes.
+   * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.
+   * @private
+   */
+  MaterialDataTable.prototype.createCheckbox_ = function(row, opt_rows) {
+    var label = document.createElement('label');
+    var labelClasses = [
+      'mdl-checkbox',
+      'mdl-js-checkbox',
+      'mdl-js-ripple-effect',
+      this.CssClasses_.SELECT_ELEMENT
+    ];
+    label.className = labelClasses.join(' ');
+    var checkbox = document.createElement('input');
+    checkbox.type = 'checkbox';
+    checkbox.classList.add('mdl-checkbox__input');
+
+    if (row) {
+      checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);
+      checkbox.addEventListener('change', this.selectRow_(checkbox, row));
+    } else if (opt_rows) {
+      checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));
+    }
+
+    label.appendChild(checkbox);
+    componentHandler.upgradeElement(label, 'MaterialCheckbox');
+    return label;
+  };
+
+  /**
+   * Initialize element.
+   */
+  MaterialDataTable.prototype.init = function() {
+    if (this.element_) {
+      var firstHeader = this.element_.querySelector('th');
+      var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));
+      var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));
+      var rows = bodyRows.concat(footRows);
+
+      if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {
+        var th = document.createElement('th');
+        var headerCheckbox = this.createCheckbox_(null, rows);
+        th.appendChild(headerCheckbox);
+        firstHeader.parentElement.insertBefore(th, firstHeader);
+
+        for (var i = 0; i < rows.length; i++) {
+          var firstCell = rows[i].querySelector('td');
+          if (firstCell) {
+            var td = document.createElement('td');
+            if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {
+              var rowCheckbox = this.createCheckbox_(rows[i]);
+              td.appendChild(rowCheckbox);
+            }
+            rows[i].insertBefore(td, firstCell);
+          }
+        }
+        this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+      }
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialDataTable,
+    classAsString: 'MaterialDataTable',
+    cssClass: 'mdl-js-data-table'
+  });
+})();
diff --git a/node_modules/material-design-lite/src/data-table/snippets/data-table.html b/node_modules/material-design-lite/src/data-table/snippets/data-table.html
new file mode 100644
index 0000000..e269e04
--- /dev/null
+++ b/node_modules/material-design-lite/src/data-table/snippets/data-table.html
@@ -0,0 +1,26 @@
+<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp">
+  <thead>
+    <tr>
+      <th class="mdl-data-table__cell--non-numeric">Material</th>
+      <th>Quantity</th>
+      <th>Unit price</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Acrylic (Transparent)</td>
+      <td>25</td>
+      <td>$2.90</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Plywood (Birch)</td>
+      <td>50</td>
+      <td>$1.25</td>
+    </tr>
+    <tr>
+      <td class="mdl-data-table__cell--non-numeric">Laminate (Gold on Blue)</td>
+      <td>10</td>
+      <td>$2.35</td>
+    </tr>
+  </tbody>
+</table>
diff --git a/node_modules/material-design-lite/src/demos.css b/node_modules/material-design-lite/src/demos.css
new file mode 100644
index 0000000..d0cfefb
--- /dev/null
+++ b/node_modules/material-design-lite/src/demos.css
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.demo-page {
+  width: 100%;
+  height: auto;
+
+  margin: 0;
+  padding: 0;
+
+  padding: 24px;
+  box-sizing: border-box;
+}
+
+.demo-preview-block {
+  padding: 20px;
+  padding-bottom: 0;
+  margin-bottom: 0;
+  box-sizing: border-box;
+  width: 100%;
+}
+
+.demo-code {
+  width: 100%;
+  box-sizing: border-box;
+}
diff --git a/node_modules/material-design-lite/src/dialog/README.md b/node_modules/material-design-lite/src/dialog/README.md
new file mode 100644
index 0000000..6faff7e
--- /dev/null
+++ b/node_modules/material-design-lite/src/dialog/README.md
@@ -0,0 +1,128 @@
+## Introduction
+
+The Material Design Lite (MDL) **dialog** component allows for verification of
+user actions, simple data input, and alerts to provide extra information to users.
+
+## Basic Usage
+
+To use the dialog component, you must be using a browser that supports the [dialog element](http://www.w3.org/TR/2013/CR-html5-20130806/interactive-elements.html#the-dialog-element).
+Only Chrome and Opera have native support at the time of writing.
+For other browsers you will need to include the [dialog polyfill](https://github.com/GoogleChrome/dialog-polyfill) or create your own.
+
+Once you have dialog support create a dialog element.
+The element when using the polyfill **must** be a child of the `body` element.
+Within that container, add a content element with the class `mdl-dialog__content`.
+Add you content, then create an action container with the class `mdl-dialog__actions`.
+Finally for the markup, add your buttons within this container for triggering dialog functions.
+
+Keep in mind, the order is automatically reversed for actions.
+Material Design requires that the primary (confirmation) action be displayed last.
+So, the first action you create will appear last on the action bar.
+This allows for more natural coding and tab ordering while following the specification.
+
+Remember to add the event handlers for your action items.
+After your dialog markup is created, add the event listeners to the page to trigger the dialog to show.
+
+For example:
+
+```javascript
+  var button = document.querySelector('button');
+  var dialog = document.querySelector('dialog');
+  button.addEventListener('click', function() {
+    dialog.showModal();
+    /* Or dialog.show(); to show the dialog without a backdrop. */
+  });
+```
+
+## Examples
+
+### Simple Dialog
+
+See this example live in [codepen](http://codepen.io/Garbee/full/EPoaMj/).
+
+```html
+<body>
+  <button id="show-dialog" type="button" class="mdl-button">Show Dialog</button>
+  <dialog class="mdl-dialog">
+    <h4 class="mdl-dialog__title">Allow data collection?</h4>
+    <div class="mdl-dialog__content">
+      <p>
+        Allowing us to collect data will let us get you the information you want faster.
+      </p>
+    </div>
+    <div class="mdl-dialog__actions">
+      <button type="button" class="mdl-button">Agree</button>
+      <button type="button" class="mdl-button close">Disagree</button>
+    </div>
+  </dialog>
+  <script>
+    var dialog = document.querySelector('dialog');
+    var showDialogButton = document.querySelector('#show-dialog');
+    if (! dialog.showModal) {
+      dialogPolyfill.registerDialog(dialog);
+    }
+    showDialogButton.addEventListener('click', function() {
+      dialog.showModal();
+    });
+    dialog.querySelector('.close').addEventListener('click', function() {
+      dialog.close();
+    });
+  </script>
+</body>
+```
+
+### Dialog with full width actions
+
+See this example live in [codepen](http://codepen.io/Garbee/full/JGMowG/).
+
+```html
+<body>
+  <button type="button" class="mdl-button show-modal">Show Modal</button>
+  <dialog class="mdl-dialog">
+    <div class="mdl-dialog__content">
+      <p>
+        Allow this site to collect usage data to improve your experience?
+      </p>
+    </div>
+    <div class="mdl-dialog__actions mdl-dialog__actions--full-width">
+      <button type="button" class="mdl-button">Agree</button>
+      <button type="button" class="mdl-button close">Disagree</button>
+    </div>
+  </dialog>
+  <script>
+    var dialog = document.querySelector('dialog');
+    var showModalButton = document.querySelector('.show-modal');
+    if (! dialog.showModal) {
+      dialogPolyfill.registerDialog(dialog);
+    }
+    showModalButton.addEventListener('click', function() {
+      dialog.showModal();
+    });
+    dialog.querySelector('.close').addEventListener('click', function() {
+      dialog.close();
+    });
+  </script>
+</body>
+```
+
+## CSS Classes
+
+### Blocks
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-dialog` | Defines the container of the dialog component. | Required on dialog container. |
+
+### Elements
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-dialog__title` | Defines the title container in the dialog. | Optional on title container. |
+| `mdl-dialog__content` | Defines the content container of the dialog. | Required on content container. |
+| `mdl-dialog__actions` | Defines the actions container in the dialog. | Required on action container. |
+
+### Modifiers
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-dialog__actions--full-width` | Modifies the actions to each take the full width of the container. This makes each take their own line. | Optional on action container. |
diff --git a/node_modules/material-design-lite/src/dialog/_dialog.scss b/node_modules/material-design-lite/src/dialog/_dialog.scss
new file mode 100644
index 0000000..9f2c3e6
--- /dev/null
+++ b/node_modules/material-design-lite/src/dialog/_dialog.scss
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-dialog {
+    border: none;
+    @include shadow-24dp;
+    @include dialog-width;
+
+    &__title {
+        padding: 24px 24px 0;
+        margin: 0;
+        font-size: 2.5rem;
+    }
+    &__actions {
+        padding: 8px 8px 8px 24px;
+        display: flex;
+        flex-direction: row-reverse;
+        flex-wrap: wrap;
+        > * {
+            margin-right: 8px;
+            height: 36px;
+            &:first-child {
+                margin-right: 0;
+            }
+        }
+        &--full-width {
+          padding: 0 0 8px 0;
+          > * {
+            height: 48px;
+            flex: 0 0 100%;
+            padding-right: 16px;
+            margin-right: 0;
+            text-align: right;
+          }
+        }
+    }
+    &__content {
+        padding: 20px 24px 24px 24px;
+        color: $dialog-content-color;
+    }
+}
diff --git a/node_modules/material-design-lite/src/footer/README.md b/node_modules/material-design-lite/src/footer/README.md
new file mode 100755
index 0000000..3913a51
--- /dev/null
+++ b/node_modules/material-design-lite/src/footer/README.md
@@ -0,0 +1,405 @@
+## Introduction
+
+The Material Design Lite (MDL) **footer** component is a comprehensive container intended to present a substantial amount of related content in a visually attractive and logically intuitive area. Although it is called "footer", it may be placed at any appropriate location on a device screen, either before or after other content.
+
+An MDL footer component takes two basic forms: *mega-footer* and *mini-footer*. As the names imply, mega-footers contain more (and more complex) content than mini-footers. A mega-footer presents multiple sections of content separated by horizontal rules, while a mini-footer presents a single section of content. Both footer forms have their own internal structures, including required and optional elements, and typically include both informational and clickable content, such as links.
+
+Footers, as represented by this component, are a fairly new feature in user interfaces, and allow users to view discrete blocks of content in a coherent and consistently organized way. Their design and use is an important factor in the overall user experience.
+
+### To include an MDL **mega-footer** component:
+
+&nbsp;1a. Code a `<footer>` element. Inside the footer, include one `<div>` element for each content section, typically three: *top*, *middle*, and *bottom*.
+```html
+<footer>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+</footer>
+```
+&nbsp;1b. Add the appropriate MDL classes to the footer and divs using the `class` attribute.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+  ...
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+  ...
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;2a. Inside the top section div, code two sibling "inner" divs for the *left* and *right* content sections.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div>
+    ...
+    </div>
+    <div>
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+  ...
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;2b. Add the appropriate MDL classes to the two "inner" left and right divs using the `class` attribute.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__right-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+  ...
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;3a. Inside the middle section div, code one or more sibling "inner" divs for the *drop-down* content sections. That is, for two drop-down sections, you would code two divs.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__right-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div>
+    ...
+    </div>
+    <div>
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;3b. Add the appropriate MDL classes to the two "inner" drop-down divs using the `class` attribute.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__right-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;4a. Inside the bottom section div, code an "inner" div for the section heading and a sibling unordered list for the bottom section links.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__right-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+    <div>
+      ...
+    </div>
+    <ul>
+      ...
+    </ul>
+  </div>
+</footer>
+```
+&nbsp;4b. Add the appropriate MDL classes to the "inner" div heading and list using the `class` attribute.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__right-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+    <div class="mdl-mega-footer__drop-down-section">
+    ...
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+    <div class="mdl-logo">
+    </div>
+    <ul class="mdl-mega-footer__link-list">
+      ...
+    </ul>
+  </div>
+</footer>
+```
+&nbsp;5. Add content to the top (left and right), middle (drop-downs), and bottom (text and links) sections of the footer; include any appropriate MDL classes using the `class` attribute.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+      <button class="mdl-mega-footer__social-btn"></button>
+      <button class="mdl-mega-footer__social-btn"></button>
+      <button class="mdl-mega-footer__social-btn"></button>
+    </div>
+    <div class="mdl-mega-footer__right-section">
+      <a href="">Link 1</a>
+      <a href="">Link 2</a>
+      <a href="">Link 3</a>
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div class="mdl-mega-footer__drop-down-section">
+      <h1 class="mdl-mega-footer__heading">Drop-down 1 Heading</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="">Link A</a></li>
+        <li><a href="">Link B</a></li>
+        <li><a href="">Link C</a></li>
+        <li><a href="">Link D</a></li>
+      </ul>
+    </div>
+    <div class="mdl-mega-footer__drop-down-section">
+      <h1 class="mdl-mega-footer__heading">Drop-down 2 Heading</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="">Link A</a></li>
+        <li><a href="">Link B</a></li>
+        <li><a href="">Link C</a></li>
+      </ul>
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+    <div class="mdl-logo">
+    Mega-Footer Bottom Section Heading
+    </div>
+    <ul class="mdl-mega-footer__link-list">
+      <li><a href="">Link A</a></li>
+      <li><a href="">Link B</a></li>
+    </ul>
+  </div>
+</footer>
+```
+
+The mega-footer component is ready for use.
+
+#### Examples
+
+A mega-footer component with three sections and two drop-down sections in the middle section.
+```html
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__top-section">
+    <div class="mdl-mega-footer__left-section">
+      <button class="mdl-mega-footer__social-btn"></button>
+      <button class="mdl-mega-footer__social-btn"></button>
+      <button class="mdl-mega-footer__social-btn"></button>
+    </div>
+    <div class="mdl-mega-footer__right-section">
+      <a href="#">Introduction</a>
+      <a href="#">App Status Dashboard</a>
+      <a href="#">Terms of Service</a>
+    </div>
+  </div>
+  <div class="mdl-mega-footer__middle-section">
+    <div class="mdl-mega-footer__drop-down-section">
+      <h1 class="mdl-mega-footer__heading">Learning and Support</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">Resource Center</a></li>
+        <li><a href="#">Help Center</a></li>
+        <li><a href="#">Community</a></li>
+        <li><a href="#">Learn with Google</a></li>
+        <li><a href="#">Small Business Community</a></li>
+        <li><a href="#">Think Insights</a></li>
+      </ul>
+    </div>
+    <div class="mdl-mega-footer__drop-down-section">
+      <h1 class="mdl-mega-footer__heading">Just for Developers</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">Google Developers</a></li>
+        <li><a href="#">AdWords API</a></li>
+        <li><a href="#">AdWords Scipts</a></li>
+        <li><a href="#">AdWords Remarketing Tag</a></li>
+      </ul>
+    </div>
+  </div>
+  <div class="mdl-mega-footer__bottom-section">
+    <div class="mdl-logo">
+      More Information
+    </div>
+    <ul class="mdl-mega-footer__link-list">
+      <li><a href="#">Help</a></li>
+      <li><a href="#">Privacy and Terms</a></li>
+    </ul>
+  </div>
+</footer>
+```
+
+### To include an MDL **mini-footer** component:
+
+&nbsp;1a. Code a `<footer>` element. Inside the footer, code two `<div>` elements, one for the *left* section and one for the *right* section.
+```html
+<footer>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+</footer>
+```
+&nbsp;1b. Add the appropriate MDL classes to the footer and divs using the `class` attribute.
+```html
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+  ...
+  </div>
+  <div class="mdl-mini-footer__right-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;2a. Inside the left section div, code an "inner" div for the section heading and a sibling unordered list for the left section links.
+```html
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+    <div>
+      ...
+    </div>
+    <ul>
+      ...
+    </ul>
+  </div>
+  <div class="mdl-mini-footer__right-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;2b. Add the appropriate MDL classes to the "inner" div and list using the `class` attribute.
+```html
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+    <div class="mdl-logo">
+      ...
+    </div>
+    <ul class="mdl-mini-footer__link-list">
+      ...
+    </ul>
+  </div>
+  <div class="mdl-mini-footer__right-section">
+  ...
+  </div>
+</footer>
+```
+&nbsp;3. Add content to the left (text and links) and right (text or decoration) sections of the footer; include any appropriate MDL classes using the `class` attribute.
+```html
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+    <div class="mdl-logo">
+      Mini-footer Heading
+    </div>
+    <ul class="mdl-mini-footer__link-list">
+      <li><a href="">Link 1</a></li>
+      <li><a href="">Link 2</a></li>
+      <li><a href="">Link 3</a></li>
+    </ul>
+  </div>
+  <div class="mdl-mini-footer__right-section">
+    <button class="mdl-mini-footer__social-btn"></button>
+    <button class="mdl-mini-footer__social-btn"></button>
+    <button class="mdl-mini-footer__social-btn"></button>
+  </div>
+</footer>
+```
+
+The mini-footer component is ready for use.
+
+#### Examples
+
+A mini-footer with left and right sections.
+
+```html
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+    <div class="mdl-logo">
+      More Information
+    </div>
+    <ul class="mdl-mini-footer__link-list">
+      <li><a href="#">Help</a></li>
+      <li><a href="#">Privacy and Terms</a></li>
+      <li><a href="#">User Agreement</a></li>
+    </ul>
+  </div>
+  <div class="mdl-mini-footer__right-section">
+    <button class="mdl-mini-footer__social-btn"></button>
+    <button class="mdl-mini-footer__social-btn"></button>
+    <button class="mdl-mini-footer__social-btn"></button>
+  </div>
+</footer>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements to the footer. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-mega-footer` | Defines container as an MDL mega-footer component | Required on footer element |
+| `mdl-mega-footer__top-section` | Defines container as a footer top section | Required on top section "outer" div element |
+| `mdl-mega-footer__left-section` | Defines container as a left section | Required on left section "inner" div element |
+| `mdl-mega-footer__social-btn` | Defines a decorative square within mega-footer | Required on button element (if used) |
+| `mdl-mega-footer__right-section` | Defines container as a right section | Required on right section "inner" div element |
+| `mdl-mega-footer__middle-section` | Defines container as a footer middle section | Required on middle section "outer" div element |
+| `mdl-mega-footer__drop-down-section` | Defines container as a drop-down (vertical) content area | Required on drop-down "inner" div elements |
+| `mdl-mega-footer__heading` | Defines a heading as a mega-footer heading | Required on h1 element inside drop-down section |
+| `mdl-mega-footer__link-list` | Defines an unordered list as a drop-down (vertical) list | Required on ul element inside drop-down section |
+| `mdl-mega-footer__bottom-section` | Defines container as a footer bottom section | Required on bottom section "outer" div element |
+| `mdl-logo` | Defines a container as a styled section heading | Required on "inner" div element in mega-footer bottom-section or mini-footer left-section |
+| `mdl-mini-footer` | Defines container as an MDL mini-footer component | Required on footer element |
+| `mdl-mini-footer__left-section` | Defines container as a left section | Required on left section "inner" div element |
+| `mdl-mini-footer__link-list` | Defines an unordered list as an inline (horizontal) list | Required on ul element sibling to "mdl-logo" div element |
+| `mdl-mini-footer__right-section` | Defines container as a right section | Required on right section "inner" div element |
+| `mdl-mini-footer__social-btn` | Defines a decorative square within mini-footer | Required on button element (if used) |
diff --git a/node_modules/material-design-lite/src/footer/_mega_footer.scss b/node_modules/material-design-lite/src/footer/_mega_footer.scss
new file mode 100644
index 0000000..49ea23a
--- /dev/null
+++ b/node_modules/material-design-lite/src/footer/_mega_footer.scss
@@ -0,0 +1,321 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-mega-footer {
+  padding: $footer-min-padding $footer-padding-sides;
+
+  color: $footer-color;
+  background-color: $footer-bg-color;
+}
+
+
+.mdl-mega-footer--top-section:after,
+.mdl-mega-footer--middle-section:after,
+.mdl-mega-footer--bottom-section:after,
+.mdl-mega-footer__top-section:after,
+.mdl-mega-footer__middle-section:after,
+.mdl-mega-footer__bottom-section:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+
+.mdl-mega-footer--left-section,
+.mdl-mega-footer__left-section {
+  margin-bottom: $footer-min-padding;
+}
+
+.mdl-mega-footer--right-section,
+.mdl-mega-footer__right-section {
+  margin-bottom: $footer-min-padding;
+}
+
+.mdl-mega-footer--right-section a,
+.mdl-mega-footer__right-section a {
+  display: block;
+
+  margin-bottom: $footer-min-padding;
+
+  color: inherit;
+  text-decoration: none;
+}
+
+@media screen and (min-width: 760px) {
+  .mdl-mega-footer--left-section,
+  .mdl-mega-footer__left-section {
+    float: left;
+  }
+
+  .mdl-mega-footer--right-section,
+  .mdl-mega-footer__right-section {
+    float: right;
+  }
+
+  .mdl-mega-footer--right-section a,
+  .mdl-mega-footer__right-section a {
+    display: inline-block;
+
+    margin-left: $footer-min-padding;
+
+    line-height: $footer-btn-size;
+    vertical-align: middle;
+  }
+}
+
+.mdl-mega-footer--social-btn,
+.mdl-mega-footer__social-btn {
+  width: $footer-btn-size;
+  height: $footer-btn-size;
+
+  padding: 0;
+  margin: 0;
+
+  background-color: $footer-button-fill-color;
+
+  border: none;
+}
+
+.mdl-mega-footer--drop-down-section,
+.mdl-mega-footer__drop-down-section {
+  display: block;
+
+  position: relative;
+}
+
+@media screen and (min-width: 760px) {
+  .mdl-mega-footer--drop-down-section,
+  .mdl-mega-footer__drop-down-section {
+    width: 33%;
+  }
+
+  .mdl-mega-footer--drop-down-section:nth-child(1),
+  .mdl-mega-footer--drop-down-section:nth-child(2),
+  .mdl-mega-footer__drop-down-section:nth-child(1),
+  .mdl-mega-footer__drop-down-section:nth-child(2) {
+    float: left;
+  }
+
+  .mdl-mega-footer--drop-down-section:nth-child(3),
+  .mdl-mega-footer__drop-down-section:nth-child(3) {
+    float: right;
+
+    &:after {
+      clear: right;
+    }
+  }
+
+  .mdl-mega-footer--drop-down-section:nth-child(4),
+  .mdl-mega-footer__drop-down-section:nth-child(4) {
+    clear: right;
+    float: right;
+  }
+
+  .mdl-mega-footer--middle-section:after,
+  .mdl-mega-footer__middle-section:after {
+    content: '';
+
+    display: block;
+
+    clear: both;
+  }
+
+  .mdl-mega-footer--bottom-section,
+  .mdl-mega-footer__bottom-section {
+    padding-top: 0;
+  }
+}
+
+@media screen and (min-width: 1024px) {
+  .mdl-mega-footer--drop-down-section,
+  .mdl-mega-footer--drop-down-section:nth-child(3),
+  .mdl-mega-footer--drop-down-section:nth-child(4),
+  .mdl-mega-footer__drop-down-section,
+  .mdl-mega-footer__drop-down-section:nth-child(3),
+  .mdl-mega-footer__drop-down-section:nth-child(4) {
+    width: 24%;
+
+    float: left;
+  }
+}
+
+.mdl-mega-footer--heading-checkbox,
+.mdl-mega-footer__heading-checkbox {
+  position: absolute;
+  width: 100%;
+  height: $footer-heading-line-height + ($footer-min-padding * 2);
+
+  padding: ($footer-min-padding * 2);
+  margin: 0;
+  margin-top: -$footer-min-padding;
+
+  cursor: pointer;
+
+  z-index: 1;
+  opacity: 0;
+
+  & + .mdl-mega-footer--heading:after,
+  & + .mdl-mega-footer__heading:after {
+    font-family: 'Material Icons';
+    content: '\E5CE'
+  }
+}
+
+.mdl-mega-footer--heading-checkbox:checked,
+.mdl-mega-footer__heading-checkbox:checked {
+  // WebViews in iOS 9 break the "~" operator, and WebViews in OS X 10.10
+  // break consecutive "+" operators in some cases. Therefore, we need to use
+  // both here to cover all the bases.
+  & ~ .mdl-mega-footer--link-list,
+  & ~ .mdl-mega-footer__link-list,
+  & + .mdl-mega-footer--heading + .mdl-mega-footer--link-list,
+  & + .mdl-mega-footer__heading + .mdl-mega-footer__link-list {
+    display: none;
+  }
+
+  & + .mdl-mega-footer--heading:after,
+  & + .mdl-mega-footer__heading:after {
+    font-family: 'Material Icons';
+    content: '\E5CF'
+  }
+}
+
+.mdl-mega-footer--heading,
+.mdl-mega-footer__heading {
+  position: relative;
+  width: 100%;
+
+  padding-right: $footer-heading-line-height + $footer-min-padding;
+  margin-bottom: $footer-min-padding;
+
+  box-sizing:border-box;
+
+  font-size: $footer-heading-font-size;
+  line-height: $footer-heading-line-height;
+
+  font-weight: 500;
+
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+
+  color: $footer-heading-color;
+}
+
+.mdl-mega-footer--heading:after,
+.mdl-mega-footer__heading:after {
+  content: '';
+
+  position: absolute;
+  top: 0;
+  right: 0;
+
+  display: block;
+
+  width: $footer-heading-line-height;
+  height: $footer-heading-line-height;
+
+  background-size: cover;
+}
+
+.mdl-mega-footer--link-list,
+.mdl-mega-footer__link-list {
+  list-style: none;
+
+  margin: 0;
+  padding: 0;
+
+  margin-bottom: $footer-min-padding * 2;
+  &:after {
+    clear: both;
+    display: block;
+    content: '';
+  }
+}
+
+.mdl-mega-footer--link-list li,
+.mdl-mega-footer__link-list li {
+  @include typo-body-1();
+  line-height: 20px;
+}
+
+.mdl-mega-footer--link-list a,
+.mdl-mega-footer__link-list a {
+  color: inherit;
+  text-decoration: none;
+  white-space: nowrap;
+}
+
+@media screen and (min-width: 760px) {
+  .mdl-mega-footer--heading-checkbox,
+  .mdl-mega-footer__heading-checkbox {
+    display: none;
+
+    & + .mdl-mega-footer--heading:after,
+    & + .mdl-mega-footer__heading:after {
+      content: '';
+    }
+  }
+  .mdl-mega-footer--heading-checkbox:checked,
+  .mdl-mega-footer__heading-checkbox:checked {
+    // WebViews in iOS 9 break the "~" operator, and WebViews in OS X 10.10
+    // break consecutive "+" operators in some cases. Therefore, we need to use
+    // both here to cover all the bases.
+    & ~ .mdl-mega-footer--link-list,
+    & ~ .mdl-mega-footer__link-list,
+    & + .mdl-mega-footer__heading + .mdl-mega-footer__link-list,
+    & + .mdl-mega-footer--heading + .mdl-mega-footer--link-list {
+      display: block;
+    }
+
+    & + .mdl-mega-footer--heading:after,
+    & + .mdl-mega-footer__heading:after {
+      content: '';
+    }
+  }
+}
+
+.mdl-mega-footer--bottom-section,
+.mdl-mega-footer__bottom-section {
+  padding-top: $footer-min-padding;
+  margin-bottom: $footer-min-padding;
+}
+
+.mdl-logo {
+  margin-bottom: $footer-min-padding;
+  color: white;
+}
+
+.mdl-mega-footer--bottom-section .mdl-mega-footer--link-list li,
+.mdl-mega-footer__bottom-section .mdl-mega-footer__link-list li {
+  float: left;
+
+  margin-bottom: 0;
+  margin-right: $footer-min-padding;
+}
+
+
+
+@media screen and (min-width: 760px) {
+  .mdl-logo {
+    float: left;
+
+    margin-bottom: 0;
+    margin-right: $footer-min-padding;
+  }
+}
diff --git a/node_modules/material-design-lite/src/footer/_mini_footer.scss b/node_modules/material-design-lite/src/footer/_mini_footer.scss
new file mode 100644
index 0000000..6a1c8ed
--- /dev/null
+++ b/node_modules/material-design-lite/src/footer/_mini_footer.scss
@@ -0,0 +1,88 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-mini-footer {
+  display: flex;
+  flex-flow: row wrap;
+  justify-content: space-between;
+
+  padding: ($padding * 2) $padding;
+
+  color: $footer-color;
+  background-color: $footer-bg-color;
+
+  &:after {
+    content: '';
+    display: block;
+  }
+
+  & .mdl-logo {
+    line-height: $footer-btn-size;
+  }
+}
+
+.mdl-mini-footer--link-list,
+.mdl-mini-footer__link-list {
+  display: flex;
+  flex-flow: row nowrap;
+
+  list-style: none;
+
+  margin: 0;
+  padding: 0;
+
+  & li {
+    margin-bottom: 0;
+    margin-right: $padding;
+
+    @media screen and (min-width: 760px) {
+      line-height: $footer-btn-size;
+    }
+  }
+
+  & a {
+    color: inherit;
+    text-decoration: none;
+    white-space: nowrap;
+  }
+}
+
+.mdl-mini-footer--left-section,
+.mdl-mini-footer__left-section {
+  display: inline-block;
+  order: 0;
+}
+
+.mdl-mini-footer--right-section,
+.mdl-mini-footer__right-section {
+  display: inline-block;
+  order: 1;
+}
+
+.mdl-mini-footer--social-btn,
+.mdl-mini-footer__social-btn {
+  width: $footer-btn-size;
+  height: $footer-btn-size;
+
+  padding: 0;
+  margin: 0;
+
+  background-color: $footer-button-fill-color;
+
+  border: none;
+}
diff --git a/node_modules/material-design-lite/src/footer/snippets/mega-footer.html b/node_modules/material-design-lite/src/footer/snippets/mega-footer.html
new file mode 100644
index 0000000..edd2f7d
--- /dev/null
+++ b/node_modules/material-design-lite/src/footer/snippets/mega-footer.html
@@ -0,0 +1,57 @@
+<footer class="mdl-mega-footer">
+  <div class="mdl-mega-footer__middle-section">
+
+    <div class="mdl-mega-footer__drop-down-section">
+      <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked>
+      <h1 class="mdl-mega-footer__heading">Features</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">About</a></li>
+        <li><a href="#">Terms</a></li>
+        <li><a href="#">Partners</a></li>
+        <li><a href="#">Updates</a></li>
+      </ul>
+    </div>
+
+    <div class="mdl-mega-footer__drop-down-section">
+      <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked>
+      <h1 class="mdl-mega-footer__heading">Details</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">Specs</a></li>
+        <li><a href="#">Tools</a></li>
+        <li><a href="#">Resources</a></li>
+      </ul>
+    </div>
+
+    <div class="mdl-mega-footer__drop-down-section">
+      <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked>
+      <h1 class="mdl-mega-footer__heading">Technology</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">How it works</a></li>
+        <li><a href="#">Patterns</a></li>
+        <li><a href="#">Usage</a></li>
+        <li><a href="#">Products</a></li>
+        <li><a href="#">Contracts</a></li>
+      </ul>
+    </div>
+
+    <div class="mdl-mega-footer__drop-down-section">
+      <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked>
+      <h1 class="mdl-mega-footer__heading">FAQ</h1>
+      <ul class="mdl-mega-footer__link-list">
+        <li><a href="#">Questions</a></li>
+        <li><a href="#">Answers</a></li>
+        <li><a href="#">Contact us</a></li>
+      </ul>
+    </div>
+
+  </div>
+
+  <div class="mdl-mega-footer__bottom-section">
+    <div class="mdl-logo">Title</div>
+    <ul class="mdl-mega-footer__link-list">
+      <li><a href="#">Help</a></li>
+      <li><a href="#">Privacy &amp; Terms</a></li>
+    </ul>
+  </div>
+
+</footer>
diff --git a/node_modules/material-design-lite/src/footer/snippets/mini-footer.html b/node_modules/material-design-lite/src/footer/snippets/mini-footer.html
new file mode 100644
index 0000000..1d78b27
--- /dev/null
+++ b/node_modules/material-design-lite/src/footer/snippets/mini-footer.html
@@ -0,0 +1,9 @@
+<footer class="mdl-mini-footer">
+  <div class="mdl-mini-footer__left-section">
+    <div class="mdl-logo">Title</div>
+    <ul class="mdl-mini-footer__link-list">
+      <li><a href="#">Help</a></li>
+      <li><a href="#">Privacy &amp; Terms</a></li>
+    </ul>
+  </div>
+</footer>
diff --git a/node_modules/material-design-lite/src/grid/README.md b/node_modules/material-design-lite/src/grid/README.md
new file mode 100644
index 0000000..9b40d8e
--- /dev/null
+++ b/node_modules/material-design-lite/src/grid/README.md
@@ -0,0 +1,122 @@
+## Introduction
+
+The Material Design Lite (MDL) **grid** component is a simplified method for laying out content for multiple screen sizes. It reduces the usual coding burden required to correctly display blocks of content in a variety of display conditions.
+
+The MDL grid is defined and enclosed by a container element. A grid has 12 columns in the desktop screen size, 8 in the tablet size, and 4 in the phone size, each size having predefined margins and gutters. Cells are laid out sequentially in a row, in the order they are defined, with some exceptions:
+
+- If a cell doesn't fit in the row in one of the screen sizes, it flows into the following line.
+- If a cell has a specified column size equal to or larger than the number of columns for the current screen size, it takes up the entirety of its row.
+
+You can set a maximum grid width, after which the grid stays centered with padding on either side, by setting its `max-width` CSS property.
+
+Grids are a fairly new and non-standardized feature in most user interfaces, and provide users with a way to view content in an organized manner that might otherwise be difficult to understand or retain. Their design and use is an important factor in the overall user experience.
+
+### To include an MDL **grid** component:
+
+&nbsp;1. Code a `<div>` element; this is the "outer" container, intended to hold all of the grid's cells. Style the div as desired (colors, font size, etc.).
+```html
+<div>
+</div>
+```
+&nbsp;2. Add the `mdl-grid` MDL class to the div using the `class` attribute.
+```
+<div class="mdl-grid">
+</div>
+```
+&nbsp;3. For each cell, code one "inner" div, including the text to be displayed.
+```html
+<div class="mdl-grid">
+  <div>Content</div>
+  <div>goes</div>
+  <div>here</div>
+</div>
+```
+&nbsp;4. Add the `mdl-cell` class and an `mdl-cell--COLUMN-col` class, where COLUMN specifies the column size for the cell, to the "inner" divs using the `class` attribute.
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--4-col">Content</div>
+  <div class="mdl-cell mdl-cell--4-col">goes</div>
+  <div class="mdl-cell mdl-cell--4-col">here</div>
+</div>
+```
+&nbsp;5. Optionally add an `mdl-cell--COLUMN-col-DEVICE` class, where COLUMN specifies the column size for the cell on a specific device, and DEVICE specifies the device type.
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">Content</div>
+  <div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">goes</div>
+  <div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">here</div>
+</div>
+```
+
+The grid component is ready for use.
+
+#### Examples
+
+A grid with five cells of column size 1.
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--1-col">CS 1</div>
+  <div class="mdl-cell mdl-cell--1-col">CS 1</div>
+  <div class="mdl-cell mdl-cell--1-col">CS 1</div>
+  <div class="mdl-cell mdl-cell--1-col">CS 1</div>
+  <div class="mdl-cell mdl-cell--1-col">CS 1</div>
+</div>
+```
+
+A grid with three cells, one of column size 6, one of column size 4, and one of column size 2.
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--6-col">CS 6</div>
+  <div class="mdl-cell mdl-cell--4-col">CS 4</div>
+  <div class="mdl-cell mdl-cell--2-col">CS 2</div>
+</div>
+```
+
+A grid with three cells of column size 6 that will display as column size 8 on a tablet device.
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
+  <div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
+  <div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
+</div>
+```
+
+A grid with four cells of column size 2 that will display as column size 4 on a phone device.
+
+```html
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
+  <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
+  <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
+  <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
+</div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements and behavioral effects to the grid. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-grid` | Defines a container as an MDL grid component | Required on "outer" div element |
+| `mdl-cell` | Defines a container as an MDL cell | Required on "inner" div elements |
+| `mdl-grid--no-spacing` | Modifies the grid cells to have no margin between them. | Optional on grid container. |
+| `mdl-cell--N-col` | Sets the column size for the cell to N | N is 1-12 inclusive, defaults to 4; optional on "inner" div elements|
+| `mdl-cell--N-col-desktop` | Sets the column size for the cell to N in desktop mode only | N is 1-12 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-col-tablet` | Sets the column size for the cell to N in tablet mode only | N is 1-8 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-col-phone` | Sets the column size for the cell to N in phone mode only | N is 1-4 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-offset` | Adds N columns of whitespace before the cell | N is 1-11 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-offset-desktop` | Adds N columns of whitespace before the cell in desktop mode | N is 1-11 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-offset-tablet` | Adds N columns of whitespace before the cell in tablet mode | N is 1-7 inclusive; optional on "inner" div elements|
+| `mdl-cell--N-offset-phone` | Adds N columns of whitespace before the cell in phone mode | N is 1-3 inclusive; optional on "inner" div elements|
+| `mdl-cell--order-N` | Reorders cell to position N | N is 1-12 inclusive; optional on "inner" div elements|
+| `mdl-cell--order-N-desktop` | Reorders cell to position N when in desktop mode | N is 1-12 inclusive; optional on "inner" div elements|
+| `mdl-cell--order-N-tablet` | Reorders cell to position N when in tablet mode | N is 1-12 inclusive; optional on "inner" div elements|
+| `mdl-cell--order-N-phone` | Reorders cell to position N when in phone mode | N is 1-12 inclusive; optional on "inner" div elements|
+| `mdl-cell--hide-desktop` | Hides the cell when in desktop mode | Optional on "inner" div elements |
+| `mdl-cell--hide-tablet` | Hides the cell when in tablet mode | Optional on "inner" div elements |
+| `mdl-cell--hide-phone` | Hides the cell when in phone mode | Optional on "inner" div elements |
+| `mdl-cell--stretch` | Stretches the cell vertically to fill the parent | Default; optional on "inner" div elements |
+| `mdl-cell--top` | Aligns the cell to the top of the parent | Optional on "inner" div elements |
+| `mdl-cell--middle` | Aligns the cell to the middle of the parent | Optional on "inner" div elements |
+|`mdl-cell--bottom` | Aligns the cell to the bottom of the parent | Optional on "inner" div elements |
diff --git a/node_modules/material-design-lite/src/grid/_grid.scss b/node_modules/material-design-lite/src/grid/_grid.scss
new file mode 100644
index 0000000..d0aab57
--- /dev/null
+++ b/node_modules/material-design-lite/src/grid/_grid.scss
@@ -0,0 +1,231 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+* NOTE: Some rules here are applied using duplicate selectors.
+* This is on purpose to increase their specificity when applied.
+* For example: `.mdl-cell--1-col-phone.mdl-cell--1-col-phone`
+*/
+
+@import "../variables";
+
+.mdl-grid {
+  display: flex;
+  flex-flow: row wrap;
+  margin: 0 auto 0 auto;
+  align-items: stretch;
+
+  &.mdl-grid--no-spacing {
+    padding: 0;
+  }
+}
+
+.mdl-cell {
+  box-sizing: border-box;
+}
+
+
+.mdl-cell--top {
+  align-self: flex-start;
+}
+
+.mdl-cell--middle {
+  align-self: center;
+}
+
+.mdl-cell--bottom {
+  align-self: flex-end;
+}
+
+.mdl-cell--stretch {
+  align-self: stretch;
+}
+
+.mdl-grid.mdl-grid--no-spacing > .mdl-cell {
+  margin: 0;
+}
+
+// Define order override classes.
+@for $i from 1 through $grid-max-columns {
+  .mdl-cell--order-#{$i} {
+    order: $i;
+  }
+}
+
+
+// Mixins for width calculation.
+@mixin partial-size($size, $columns, $gutter) {
+  width: calc(#{(($size / $columns) * 100)+"%"} - #{$gutter});
+
+  .mdl-grid--no-spacing > & {
+    width: #{(($size / $columns) * 100)+"%"};
+  }
+}
+
+@mixin full-size($gutter) {
+  @include partial-size(1, 1, $gutter);
+}
+
+@mixin offset-size($size, $columns, $gutter) {
+  margin-left: calc(#{(($size / $columns) * 100)+"%"} + #{$gutter / 2});
+
+  .mdl-grid.mdl-grid--no-spacing > & {
+    margin-left: #{(($size / $columns) * 100)+"%"};
+  }
+}
+
+
+
+////////// Phone //////////
+
+@media (max-width: $grid-tablet-breakpoint - 1) {
+  .mdl-grid {
+    padding: $grid-phone-margin - ($grid-phone-gutter / 2);
+  }
+
+  .mdl-cell {
+    margin: $grid-phone-gutter / 2;
+    @include partial-size($grid-cell-default-columns, $grid-phone-columns,
+        $grid-phone-gutter);
+  }
+
+  .mdl-cell--hide-phone {
+    display: none !important;
+  }
+
+  // Define order override classes.
+  @for $i from 1 through $grid-max-columns {
+    .mdl-cell--order-#{$i}-phone.mdl-cell--order-#{$i}-phone {
+      order: $i;
+    }
+  }
+
+  // Define partial sizes for columnNumber < totalColumns.
+  @for $i from 1 through ($grid-phone-columns - 1) {
+    .mdl-cell--#{$i}-col,
+    .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone {
+      @include partial-size($i, $grid-phone-columns, $grid-phone-gutter);
+    }
+  }
+
+  // Define 100% for everything else.
+  @for $i from $grid-phone-columns through $grid-desktop-columns {
+    .mdl-cell--#{$i}-col,
+    .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone {
+      @include full-size($grid-phone-gutter);
+    }
+  }
+
+  // Define valid phone offsets.
+  @for $i from 1 through ($grid-phone-columns - 1) {
+    .mdl-cell--#{$i}-offset,
+    .mdl-cell--#{$i}-offset-phone.mdl-cell--#{$i}-offset-phone {
+      @include offset-size($i, $grid-phone-columns, $grid-phone-gutter);
+    }
+  }
+}
+
+
+////////// Tablet //////////
+
+@media (min-width: $grid-tablet-breakpoint) and (max-width: $grid-desktop-breakpoint - 1) {
+  .mdl-grid {
+    padding: $grid-tablet-margin - ($grid-tablet-gutter / 2);
+  }
+
+  .mdl-cell {
+    margin: $grid-tablet-gutter / 2;
+    @include partial-size($grid-cell-default-columns, $grid-tablet-columns,
+        $grid-tablet-gutter);
+  }
+
+  .mdl-cell--hide-tablet {
+    display: none !important;
+  }
+
+  // Define order override classes.
+  @for $i from 1 through $grid-max-columns {
+    .mdl-cell--order-#{$i}-tablet.mdl-cell--order-#{$i}-tablet {
+      order: $i;
+    }
+  }
+
+  // Define partial sizes for columnNumber < totalColumns.
+  @for $i from 1 through ($grid-tablet-columns - 1) {
+    .mdl-cell--#{$i}-col,
+    .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet {
+      @include partial-size($i, $grid-tablet-columns, $grid-tablet-gutter);
+    }
+  }
+
+  // Define 100% for everything else.
+  @for $i from $grid-tablet-columns through $grid-desktop-columns {
+    .mdl-cell--#{$i}-col,
+    .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet {
+      @include full-size($grid-tablet-gutter);
+    }
+  }
+
+  // Define valid tablet offsets.
+  @for $i from 1 through ($grid-tablet-columns - 1) {
+    .mdl-cell--#{$i}-offset,
+    .mdl-cell--#{$i}-offset-tablet.mdl-cell--#{$i}-offset-tablet {
+      @include offset-size($i, $grid-tablet-columns, $grid-tablet-gutter);
+    }
+  }
+}
+
+
+////////// Desktop //////////
+
+@media (min-width: $grid-desktop-breakpoint) {
+  .mdl-grid {
+    padding: $grid-desktop-margin - ($grid-desktop-gutter / 2);
+  }
+
+  .mdl-cell {
+    margin: $grid-desktop-gutter / 2;
+    @include partial-size($grid-cell-default-columns, $grid-desktop-columns,
+        $grid-desktop-gutter);
+  }
+
+  .mdl-cell--hide-desktop {
+    display: none !important;
+  }
+
+  // Define order override classes.
+  @for $i from 1 through $grid-max-columns {
+    .mdl-cell--order-#{$i}-desktop.mdl-cell--order-#{$i}-desktop {
+      order: $i;
+    }
+  }
+
+  // Define partial sizes for all numbers of columns.
+  @for $i from 1 through $grid-desktop-columns {
+    .mdl-cell--#{$i}-col,
+    .mdl-cell--#{$i}-col-desktop.mdl-cell--#{$i}-col-desktop {
+      @include partial-size($i, $grid-desktop-columns, $grid-desktop-gutter);
+    }
+  }
+
+  // Define valid desktop offsets.
+  @for $i from 1 through ($grid-desktop-columns - 1) {
+    .mdl-cell--#{$i}-offset,
+    .mdl-cell--#{$i}-offset-desktop.mdl-cell--#{$i}-offset-desktop {
+      @include offset-size($i, $grid-desktop-columns, $grid-desktop-gutter);
+    }
+  }
+}
diff --git a/node_modules/material-design-lite/src/grid/snippets/codepen-grid.css b/node_modules/material-design-lite/src/grid/snippets/codepen-grid.css
new file mode 100644
index 0000000..b716189
--- /dev/null
+++ b/node_modules/material-design-lite/src/grid/snippets/codepen-grid.css
@@ -0,0 +1,11 @@
+.mdl-cell {
+  box-sizing: border-box;
+  background-color: #BDBDBD;
+  height: 200px;
+  padding-left: 8px;
+  padding-top: 4px;
+  color: white;
+}
+.mdl-grid:first-of-type .mdl-cell {
+  height: 50px;
+}
diff --git a/node_modules/material-design-lite/src/grid/snippets/grid-demo.html b/node_modules/material-design-lite/src/grid/snippets/grid-demo.html
new file mode 100644
index 0000000..88f6040
--- /dev/null
+++ b/node_modules/material-design-lite/src/grid/snippets/grid-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-grid .mdl-cell {
+  box-sizing: border-box;
+  background-color: #BDBDBD;
+  height: 200px;
+  padding-left: 8px;
+  padding-top: 4px;
+  color: white;
+}
+.demo-grid .mdl-grid:first-of-type .mdl-cell {
+  height: 50px;
+}
+</style>
+
+{% include "grid.html" %}
diff --git a/node_modules/material-design-lite/src/grid/snippets/grid.html b/node_modules/material-design-lite/src/grid/snippets/grid.html
new file mode 100644
index 0000000..202a091
--- /dev/null
+++ b/node_modules/material-design-lite/src/grid/snippets/grid.html
@@ -0,0 +1,29 @@
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+  <div class="mdl-cell mdl-cell--1-col">1</div>
+</div>
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--4-col">4</div>
+  <div class="mdl-cell mdl-cell--4-col">4</div>
+  <div class="mdl-cell mdl-cell--4-col">4</div>
+</div>
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--6-col">6</div>
+  <div class="mdl-cell mdl-cell--4-col">4</div>
+  <div class="mdl-cell mdl-cell--2-col">2</div>
+</div>
+<div class="mdl-grid">
+  <div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">6 (8 tablet)</div>
+  <div class="mdl-cell mdl-cell--4-col mdl-cell--6-col-tablet">4 (6 tablet)</div>
+  <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">2 (4 phone)</div>
+</div>
diff --git a/node_modules/material-design-lite/src/icon-toggle/README.md b/node_modules/material-design-lite/src/icon-toggle/README.md
new file mode 100755
index 0000000..7af700a
--- /dev/null
+++ b/node_modules/material-design-lite/src/icon-toggle/README.md
@@ -0,0 +1,64 @@
+## Introduction
+
+The Material Design Lite (MDL) **icon-toggle** component is an enhanced version of the standard HTML `<input type="checkbox">` element. An icon-toggle consists of a user defined icon that indicates, by visual highlighting, a binary condition that will be set or unset when the user clicks or touches it. Like checkboxes, icon-toggles may appear individually or in groups, and can be selected and deselected individually.
+
+Icon toggles, particularly as a replacement for certain checkboxes, can be a valuable feature in user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the icon-toggle component's [Material Design specifications page](http://www.google.com/design/spec/components/buttons.html#buttons-other-buttons) for details.
+
+The icon-toggle component can have a more customized visual look than a standard checkbox, and may be initially or programmatically *disabled*.
+
+### To include an MDL **icon-toggle** component:
+
+&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the icon-toggle it will contain.
+```html
+<label for="icon-toggle-1">
+...
+</label>
+```
+&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `"checkbox"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.
+```html
+<label for="icon-toggle-1">
+  <input type="checkbox" id="icon-toggle-1">
+</label>
+```
+&nbsp;3. Also inside the label, after the input element, code an `<i>` element containing the icon-toggle's desired icon.
+```html
+<label for="icon-toggle-1">
+  <input type="checkbox" id="icon-toggle-1">
+  <i class="mdl-icon-toggle__label material-icons">format_bold</i>
+</label>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the label and input elements, using the `class` attribute.
+```html
+<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1">
+  <input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input">
+  <i class="mdl-icon-toggle__label material-icons">format_bold</i>
+</label>
+```
+
+The icon-toggle component is ready for use.
+
+#### Example
+
+An icon-toggle with a ripple click effect.
+
+```html
+<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1">
+  <input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input">
+  <i class="mdl-icon-toggle__label material-icons">format_bold</i>
+</label>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the icon-toggle. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-icon-toggle` | Defines label as an MDL component | Required on label element|
+| `mdl-js-icon-toggle` | Assigns basic MDL behavior to label | Required on label element |
+| `mdl-icon-toggle__input` | Applies basic MDL behavior to icon-toggle | Required on input element (icon-toggle) |
+| `mdl-icon-toggle__label` | Applies basic MDL behavior to caption | Required on i element (icon) |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (icon-toggle) |
+
+>**Note:** Disabled versions of all available input types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type="checkbox" id="icon-toggle-5" class="mdl-icon-toggle__input" disabled>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/icon-toggle/_icon-toggle.scss b/node_modules/material-design-lite/src/icon-toggle/_icon-toggle.scss
new file mode 100644
index 0000000..354f023
--- /dev/null
+++ b/node_modules/material-design-lite/src/icon-toggle/_icon-toggle.scss
@@ -0,0 +1,121 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-icon-toggle {
+  position: relative;
+
+  z-index: 1;
+
+  vertical-align: middle;
+
+  display: inline-block;
+  height: $icon-toggle-size;
+  margin: 0;
+  padding: 0;
+}
+
+.mdl-icon-toggle__input {
+  line-height: $icon-toggle-size;
+
+  .mdl-icon-toggle.is-upgraded & {
+    // Hide input element, while still making it respond to focus.
+    position: absolute;
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+    -ms-appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+    border: none;
+  }
+}
+
+.mdl-icon-toggle__label {
+  display: inline-block;
+  position: relative;
+  cursor: pointer;
+  height: $icon-toggle-size;
+  width: $icon-toggle-size;
+  min-width: $icon-toggle-size;
+  color: $icon-toggle-color;
+  border-radius: 50%;
+  padding: 0;
+  margin-left: 0;
+  margin-right: 0;
+  text-align: center;
+  background-color: transparent;
+  will-change: background-color;
+  transition: background-color 0.2s $animation-curve-default,
+  color 0.2s $animation-curve-default;
+
+  &.material-icons {
+    line-height: $icon-toggle-size;
+    font-size: $icon-toggle-font-size;
+  }
+
+  .mdl-icon-toggle.is-checked & {
+    color: $icon-toggle-checked-color;
+  }
+
+  .mdl-icon-toggle.is-disabled & {
+    color: $icon-toggle-disabled-color;
+    cursor: auto;
+    transition: none;
+  }
+
+  .mdl-icon-toggle.is-focused & {
+    background-color: $icon-toggle-focus-color;
+  }
+
+  .mdl-icon-toggle.is-focused.is-checked & {
+    background-color: $icon-toggle-checked-focus-color;
+  }
+}
+
+
+.mdl-icon-toggle__ripple-container {
+  position: absolute;
+  z-index: 2;
+  top: -(($icon-toggle-ripple-size - $icon-toggle-size) / 2);
+  left: -(($icon-toggle-ripple-size - $icon-toggle-size) / 2);
+
+  box-sizing: border-box;
+  width: $icon-toggle-ripple-size;
+  height: $icon-toggle-ripple-size;
+  border-radius: 50%;
+
+  cursor: pointer;
+
+  overflow: hidden;
+  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+
+  & .mdl-ripple {
+    background: $icon-toggle-color;
+  }
+
+  .mdl-icon-toggle.is-disabled & {
+    cursor: auto;
+  }
+
+  .mdl-icon-toggle.is-disabled & .mdl-ripple {
+    background: transparent;
+  }
+}
diff --git a/node_modules/material-design-lite/src/icon-toggle/icon-toggle.js b/node_modules/material-design-lite/src/icon-toggle/icon-toggle.js
new file mode 100644
index 0000000..5d5a17c
--- /dev/null
+++ b/node_modules/material-design-lite/src/icon-toggle/icon-toggle.js
@@ -0,0 +1,255 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for icon toggle MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialIconToggle = function MaterialIconToggle(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialIconToggle'] = MaterialIconToggle;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialIconToggle.prototype.Constant_ = {
+    TINY_TIMEOUT: 0.001
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialIconToggle.prototype.CssClasses_ = {
+    INPUT: 'mdl-icon-toggle__input',
+    JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',
+    RIPPLE_CENTER: 'mdl-ripple--center',
+    RIPPLE: 'mdl-ripple',
+    IS_FOCUSED: 'is-focused',
+    IS_DISABLED: 'is-disabled',
+    IS_CHECKED: 'is-checked'
+  };
+
+  /**
+   * Handle change of state.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialIconToggle.prototype.onChange_ = function(event) {
+    this.updateClasses_();
+  };
+
+  /**
+   * Handle focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialIconToggle.prototype.onFocus_ = function(event) {
+    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle lost focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialIconToggle.prototype.onBlur_ = function(event) {
+    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle mouseup.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialIconToggle.prototype.onMouseUp_ = function(event) {
+    this.blur_();
+  };
+
+  /**
+   * Handle class updates.
+   *
+   * @private
+   */
+  MaterialIconToggle.prototype.updateClasses_ = function() {
+    this.checkDisabled();
+    this.checkToggleState();
+  };
+
+  /**
+   * Add blur.
+   *
+   * @private
+   */
+  MaterialIconToggle.prototype.blur_ = function() {
+    // TODO: figure out why there's a focus event being fired after our blur,
+    // so that we can avoid this hack.
+    window.setTimeout(function() {
+      this.inputElement_.blur();
+    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));
+  };
+
+  // Public methods.
+
+  /**
+   * Check the inputs toggle state and update display.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.checkToggleState = function() {
+    if (this.inputElement_.checked) {
+      this.element_.classList.add(this.CssClasses_.IS_CHECKED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);
+    }
+  };
+  MaterialIconToggle.prototype['checkToggleState'] =
+      MaterialIconToggle.prototype.checkToggleState;
+
+  /**
+   * Check the inputs disabled state and update display.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.checkDisabled = function() {
+    if (this.inputElement_.disabled) {
+      this.element_.classList.add(this.CssClasses_.IS_DISABLED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
+    }
+  };
+  MaterialIconToggle.prototype['checkDisabled'] =
+      MaterialIconToggle.prototype.checkDisabled;
+
+  /**
+   * Disable icon toggle.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.disable = function() {
+    this.inputElement_.disabled = true;
+    this.updateClasses_();
+  };
+  MaterialIconToggle.prototype['disable'] =
+      MaterialIconToggle.prototype.disable;
+
+  /**
+   * Enable icon toggle.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.enable = function() {
+    this.inputElement_.disabled = false;
+    this.updateClasses_();
+  };
+  MaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;
+
+  /**
+   * Check icon toggle.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.check = function() {
+    this.inputElement_.checked = true;
+    this.updateClasses_();
+  };
+  MaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;
+
+  /**
+   * Uncheck icon toggle.
+   *
+   * @public
+   */
+  MaterialIconToggle.prototype.uncheck = function() {
+    this.inputElement_.checked = false;
+    this.updateClasses_();
+  };
+  MaterialIconToggle.prototype['uncheck'] =
+      MaterialIconToggle.prototype.uncheck;
+
+  /**
+   * Initialize element.
+   */
+  MaterialIconToggle.prototype.init = function() {
+
+    if (this.element_) {
+      this.inputElement_ =
+          this.element_.querySelector('.' + this.CssClasses_.INPUT);
+
+      if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {
+        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+        this.rippleContainerElement_ = document.createElement('span');
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);
+        this.boundRippleMouseUp = this.onMouseUp_.bind(this);
+        this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);
+
+        var ripple = document.createElement('span');
+        ripple.classList.add(this.CssClasses_.RIPPLE);
+
+        this.rippleContainerElement_.appendChild(ripple);
+        this.element_.appendChild(this.rippleContainerElement_);
+      }
+
+      this.boundInputOnChange = this.onChange_.bind(this);
+      this.boundInputOnFocus = this.onFocus_.bind(this);
+      this.boundInputOnBlur = this.onBlur_.bind(this);
+      this.boundElementOnMouseUp = this.onMouseUp_.bind(this);
+      this.inputElement_.addEventListener('change', this.boundInputOnChange);
+      this.inputElement_.addEventListener('focus', this.boundInputOnFocus);
+      this.inputElement_.addEventListener('blur', this.boundInputOnBlur);
+      this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);
+
+      this.updateClasses_();
+      this.element_.classList.add('is-upgraded');
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialIconToggle,
+    classAsString: 'MaterialIconToggle',
+    cssClass: 'mdl-js-icon-toggle',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/icon-toggle/snippets/icon-off.html b/node_modules/material-design-lite/src/icon-toggle/snippets/icon-off.html
new file mode 100644
index 0000000..347a490
--- /dev/null
+++ b/node_modules/material-design-lite/src/icon-toggle/snippets/icon-off.html
@@ -0,0 +1,4 @@
+<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-2">
+  <input type="checkbox" id="icon-toggle-2" class="mdl-icon-toggle__input">
+  <i class="mdl-icon-toggle__label material-icons">format_italic</i>
+</label>
diff --git a/node_modules/material-design-lite/src/icon-toggle/snippets/icon-on.html b/node_modules/material-design-lite/src/icon-toggle/snippets/icon-on.html
new file mode 100644
index 0000000..23632a3
--- /dev/null
+++ b/node_modules/material-design-lite/src/icon-toggle/snippets/icon-on.html
@@ -0,0 +1,4 @@
+<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1">
+  <input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input" checked>
+  <i class="mdl-icon-toggle__label material-icons">format_bold</i>
+</label>
diff --git a/node_modules/material-design-lite/src/images/buffer.svg b/node_modules/material-design-lite/src/images/buffer.svg
new file mode 100644
index 0000000..790b160
--- /dev/null
+++ b/node_modules/material-design-lite/src/images/buffer.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<svg width="12" height="4" viewPort="0 0 12 4" version="1.1" xmlns="http://www.w3.org/2000/svg">
+  <ellipse cx="2" cy="2" rx="2" ry="2">
+    <animate attributeName="cx" from="2" to="-10" dur="0.6s" repeatCount="indefinite" />
+  </ellipse>
+  <ellipse cx="14" cy="2" rx="2" ry="2" class="loader">
+    <animate attributeName="cx" from="14" to="2" dur="0.6s" repeatCount="indefinite" />
+  </ellipse>
+</svg>
diff --git a/node_modules/material-design-lite/src/images/tick-mask.svg b/node_modules/material-design-lite/src/images/tick-mask.svg
new file mode 100644
index 0000000..b098920
--- /dev/null
+++ b/node_modules/material-design-lite/src/images/tick-mask.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   viewBox="0 0 1 1"
+   preserveAspectRatio="xMinYMin meet">
+  <defs>
+    <clipPath id="clip">
+      <path
+         d="M 0,0 0,1 1,1 1,0 0,0 z M 0.8534375,0.1671875 0.9596875,0.273125 0.429375,0.8034375 0.323125,0.9096875 0.2171875,0.8034375 0.0403125,0.626875 0.1465625,0.520625 0.323125,0.6975 0.8534375,0.1671875 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </clipPath>
+    <mask id="mask" maskUnits="objectBoundingBox" maskContentUnits="objectBoundingBox">
+      <path
+         d="M 0,0 0,1 1,1 1,0 0,0 z M 0.8534375,0.1671875 0.9596875,0.273125 0.429375,0.8034375 0.323125,0.9096875 0.2171875,0.8034375 0.0403125,0.626875 0.1465625,0.520625 0.323125,0.6975 0.8534375,0.1671875 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </mask>
+  </defs>
+  <rect
+     width="1"
+     height="1"
+     x="0"
+     y="0"
+     clip-path="url(#clip)"
+     style="fill:#000000;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/node_modules/material-design-lite/src/images/tick.svg b/node_modules/material-design-lite/src/images/tick.svg
new file mode 100644
index 0000000..b3d6ec8
--- /dev/null
+++ b/node_modules/material-design-lite/src/images/tick.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   viewBox="0 0 1 1"
+   preserveAspectRatio="xMinYMin meet">
+  <path
+     d="M 0.04038059,0.6267767 0.14644661,0.52071068 0.42928932,0.80355339 0.3232233,0.90961941 z M 0.21715729,0.80355339 0.85355339,0.16715729 0.95961941,0.2732233 0.3232233,0.90961941 z"
+     id="rect3780"
+     style="fill:#ffffff;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/node_modules/material-design-lite/src/index.html b/node_modules/material-design-lite/src/index.html
new file mode 100644
index 0000000..5b0f88b
--- /dev/null
+++ b/node_modules/material-design-lite/src/index.html
@@ -0,0 +1,209 @@
+<!doctype html>
+<html lang="">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="description" content="A front-end template that helps you build fast, modern mobile web apps.">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>Material Design Lite</title>
+
+    <!-- Add to homescreen for Chrome on Android -->
+    <meta name="mobile-web-app-capable" content="yes">
+    <link rel="icon" sizes="192x192" href="images/touch/chrome-touch-icon-192x192.png">
+
+    <!-- Add to homescreen for Safari on iOS -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="apple-mobile-web-app-title" content="Material Design Lite">
+    <link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">
+
+    <!-- Tile icon for Win8 (144x144 + tile color) -->
+    <meta name="msapplication-TileImage" content="images/touch/ms-touch-icon-144x144-precomposed.png">
+    <meta name="msapplication-TileColor" content="#3372DF">
+
+    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->
+    <!--
+    <link rel="canonical" href="http://www.example.com/">
+    -->
+
+    <!-- Page styles -->
+    <link href='//fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>
+
+    <link rel="stylesheet" href="styleguide.css">
+  </head>
+  <body>
+    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-styleguide">
+
+      <div class="mdl-layout__drawer">
+        <span class="mdl-layout-title">Material Design Lite</span>
+        <nav id="main-navigation" class="mdl-navigation">
+        </nav>
+      </div>
+
+      <div class="mdl-layout__content">
+        <div class="styleguide-demo">
+          <h1>Typography</h1>
+          <iframe src="./typography/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>List</h1>
+          <iframe src="./list/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Palette</h1>
+          <iframe src="./palette/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Shadows</h1>
+          <iframe src="./shadow/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Cards</h1>
+          <iframe src="./card/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Animation</h1>
+          <iframe src="./animation/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Button</h1>
+          <iframe src="./button/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Menu</h1>
+          <iframe src="./menu/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Text Field</h1>
+          <iframe src="./textfield/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Radio Buttons</h1>
+          <iframe src="./radio/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Checkbox</h1>
+          <iframe src="./checkbox/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Switch</h1>
+          <iframe src="./switch/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Icon Toggle</h1>
+          <iframe src="./icon-toggle/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Slider</h1>
+          <iframe src="./slider/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Spinner</h1>
+          <iframe src="./spinner/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Progress Bar</h1>
+          <iframe src="./progress/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Layout</h1>
+            <iframe src="./layout/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Content Tabs</h1>
+          <iframe src="./tabs/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Icons</h1>
+          <iframe src="./icons/demo.html" scrolling="no"></iframe>
+        </div>
+
+
+        <div class="styleguide-demo">
+          <h1>Tooltip</h1>
+          <iframe src="./tooltip/demo.html" scrolling="no"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Column Layout</h1>
+            <iframe src="./column-layout/demo.html"></iframe>
+        </div>
+
+        <div class="styleguide-demo">
+          <h1>Footer</h1>
+            <iframe src="./footer/demo.html"></iframe>
+        </div>
+      </div>
+    </div>
+    <!-- build:js scripts/main.min.js -->
+    <script src="mdlComponentHandler.js"></script>
+    <script src="layout/layout.js" async defer></script>
+    <!-- endbuild -->
+
+    <!-- Script to handle sizing the iFrames -->
+    <script>
+      'use strict';
+      var navList = document.getElementById('main-navigation');
+      var totalDemosPendingLoading = 0;
+      sizeDemos();
+
+      function sizeDemos() {
+        var demos = document.querySelectorAll('.styleguide-demo');
+        totalDemosPendingLoading = demos.length;
+        for (var i = 0; i < demos.length; i++) {
+          var demoTitle = demos[i].querySelector('h1').textContent;
+          var anchorLink = 'demo-' + i;
+
+          // Add list item
+          var navAnchor = document.createElement('a');
+          navAnchor.classList.add('mdl-navigation__link');
+          navAnchor.href = '#' + anchorLink;
+          navAnchor.appendChild(document.createTextNode(demoTitle));
+          navList.appendChild(navAnchor);
+
+          var anchor = document.createElement('a');
+          anchor.id = anchorLink;
+          demos[i].insertBefore(anchor , demos[i].querySelector('h1'));
+
+          // Size iframe
+          sizeDemo(demos[i]);
+        }
+      }
+
+      function sizeDemo(rootDemoElement) {
+        var iframe = rootDemoElement.querySelector('iframe');
+        if (iframe === null) {
+          totalDemosPendingLoading--;
+          return;
+        }
+        iframe.onload = function() {
+          var contentHeight = iframe.contentDocument.documentElement.scrollHeight;
+          iframe.style.height = contentHeight + 'px';
+          iframe.classList.add('heightSet');
+          totalDemosPendingLoading--;
+          if (totalDemosPendingLoading <= 0) {
+            document.body.classList.add('demosLoaded');
+          }
+        };
+      }
+    </script>
+  </body>
+</html>
diff --git a/node_modules/material-design-lite/src/layout/README.md b/node_modules/material-design-lite/src/layout/README.md
new file mode 100644
index 0000000..9c8238c
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/README.md
@@ -0,0 +1,340 @@
+## Introduction
+
+The Material Design Lite (MDL) **layout** component is a comprehensive approach to page layout that uses MDL development tenets, allows for efficient use of MDL components, and automatically adapts to different browsers, screen sizes, and devices.
+
+Appropriate and accessible layout is a critical feature of all user interfaces, regardless of a site's content or function. Page design and presentation is therefore an important factor in the overall user experience. See the layout component's [Material Design specifications page](http://www.google.com/design/spec/layout/principles.html) for details.
+
+Use of MDL layout principles simplifies the creation of scalable pages by providing reusable components and encourages consistency across environments by establishing recognizable visual elements, adhering to logical structural grids, and maintaining appropriate spacing across multiple platforms and screen sizes. MDL layout is extremely powerful and dynamic, allowing for great consistency in outward appearance and behavior while maintaining development flexibility and ease of use.
+
+### To include a basic MDL **layout** component:
+
+&nbsp;1. Code a `<div>` element. This is the "outer" div that holds the entire layout.
+```html
+<div>
+</div>
+```
+
+>**Note:** The layout cannot be applied directly on the `<body>` element. Always create a nested `<div>` element.
+
+&nbsp;2. Add MDL classes as indicated, separated by spaces, to the div using the `class` attribute.
+```html
+<div class="mdl-layout mdl-js-layout">
+</div>
+```
+
+&nbsp;3. Inside the div, code a `<header>` element. This holds the header row with navigation links that is displayed on large screens, and the menu icon that opens the navigation drawer for smaller screens. Add the MDL class to the header using the `class` attribute.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+  </header>
+</div>
+```
+
+&nbsp;4. Inside the header, add a `<div>` to produce the menu icon, and include the MDL class as indicated. The div has no content of its own.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+  </header>
+</div>
+```
+
+&nbsp;5. Still inside the header, add another `<div>` to hold the header row's content, and include the MDL class as indicated.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+    </div>
+  </header>
+</div>
+```
+
+&nbsp;6. Inside the header row div, add a span containing the layout title, and include the MDL class as indicated.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+    </div>
+  </header>
+</div>
+```
+
+&nbsp;7. Following the span, add a `<div>` to align the header's navigation links to the right, and include the MDL class as indicated.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+    </div>
+  </header>
+</div>
+```
+
+&nbsp;8. Following the spacer div, add a `<nav>` element to contain the header's navigation links, and include the MDL class as indicated. Inside the nav, add one anchor `<a>` element for each header link, and include the MDL class as indicated. This completes the layout's header.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Nav link 1</a>
+        <a class="mdl-navigation__link" href="#">Nav link 2</a>
+        <a class="mdl-navigation__link" href="#">Nav link 3</a>
+      </nav>
+    </div>
+  </header>
+</div>
+```
+
+&nbsp;9. Following the header, add a `<div>` element to hold the slide-out drawer's content, and add the MDL class as indicated. The drawer appears automatically on smaller screens, and may be opened with the menu icon on any screen size.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Nav link 1</a>
+        <a class="mdl-navigation__link" href="#">Nav link 2</a>
+        <a class="mdl-navigation__link" href="#">Nav link 3</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+  </div>
+</div>
+```
+
+&nbsp;10. Inside the drawer div, add a span containing the layout title (this should match the title in step 5), and include the MDL class as indicated.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Nav link 1</a>
+        <a class="mdl-navigation__link" href="#">Nav link 2</a>
+        <a class="mdl-navigation__link" href="#">Nav link 3</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Simple Layout</span>
+  </div>
+</div>
+```
+
+&nbsp;11. Following the span, add a `<nav>` element to contain the drawer's navigation links, and one anchor `<a>` element for each drawer link (these should match the links in step 7), and include the MDL classes as indicated. This completes the layout's drawer.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Nav link 1</a>
+        <a class="mdl-navigation__link" href="#">Nav link 2</a>
+        <a class="mdl-navigation__link" href="#">Nav link 3</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Simple Layout</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Nav link 1</a>
+      <a class="mdl-navigation__link" href="#">Nav link 2</a>
+      <a class="mdl-navigation__link" href="#">Nav link 3</a>
+    </nav>
+  </div>
+</div>
+```
+
+&nbsp;12. Finally, following the drawer div, add a `<main>` element to hold the layout's primary content, and include the MDL class as indicated. Inside that element, add your desired content.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Simple Layout</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Nav link 1</a>
+        <a class="mdl-navigation__link" href="#">Nav link 2</a>
+        <a class="mdl-navigation__link" href="#">Nav link 3</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Simple Layout</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Nav link 1</a>
+      <a class="mdl-navigation__link" href="#">Nav link 2</a>
+      <a class="mdl-navigation__link" href="#">Nav link 3</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <p>Content</p>
+    <p>Goes</p>
+    <p>Here</p>
+  </main>
+</div>
+```
+
+The layout component is ready for use.
+
+#### Examples
+
+A layout with a fixed header for larger screens and a collapsible drawer for smaller screens.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout-icon"></div>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Material Design Lite</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Hello</a>
+        <a class="mdl-navigation__link" href="#">World.</a>
+        <a class="mdl-navigation__link" href="#">How</a>
+        <a class="mdl-navigation__link" href="#">Are</a>
+        <a class="mdl-navigation__link" href="#">You?</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Material Design Lite</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Hello</a>
+      <a class="mdl-navigation__link" href="#">World.</a>
+      <a class="mdl-navigation__link" href="#">How</a>
+      <a class="mdl-navigation__link" href="#">Are</a>
+      <a class="mdl-navigation__link" href="#">You?</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div>Content</div>
+  </main>
+</div>
+```
+
+The same layout with a non-fixed header that scrolls with the content.
+```html
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header mdl-layout__header--scroll">
+    <img class="mdl-layout-icon"></img>
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Material Design Lite</span>
+      <div class="mdl-layout-spacer"></div>
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="#">Hello</a>
+        <a class="mdl-navigation__link" href="#">World.</a>
+        <a class="mdl-navigation__link" href="#">How</a>
+        <a class="mdl-navigation__link" href="#">Are</a>
+        <a class="mdl-navigation__link" href="#">You?</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Material Design Lite</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Hello</a>
+      <a class="mdl-navigation__link" href="#">World.</a>
+      <a class="mdl-navigation__link" href="#">How</a>
+      <a class="mdl-navigation__link" href="#">Are</a>
+      <a class="mdl-navigation__link" href="#">You?</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div>Content</div>
+  </main>
+</div>
+```
+
+A layout with a fixed drawer that serves as sidebar navigation on larger screens. The drawer collapses and the menu icon is displayed on smaller screens.
+```html
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout__header-row">
+      <span class="mdl-layout__title">Fixed drawer layout demo</span>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Material Design Lite</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Hello</a>
+      <a class="mdl-navigation__link" href="#">World.</a>
+      <a class="mdl-navigation__link" href="#">How</a>
+      <a class="mdl-navigation__link" href="#">Are</a>
+      <a class="mdl-navigation__link" href="#">You?</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div>Content</div>
+  </main>
+</div>
+```
+
+A layout with a fixed drawer but no header.
+```html
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout__title">Material Design Lite</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="#">Hello</a>
+      <a class="mdl-navigation__link" href="#">World.</a>
+      <a class="mdl-navigation__link" href="#">How</a>
+      <a class="mdl-navigation__link" href="#">Are</a>
+      <a class="mdl-navigation__link" href="#">You?</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div>Content</div>
+  </main>
+</div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the layout. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-layout` | Defines container as an MDL component | Required on outer div element |
+| `mdl-js-layout` | Assigns basic MDL behavior to layout | Required on outer div element |
+| `mdl-layout__header` | Defines container as an MDL component | Required on header element |
+| `mdl-layout-icon` | Used for adding an application icon. Gets concealed by menu icon if both are visible.  | Goes on optional icon element |
+| `mdl-layout__header-row` | Defines container as MDL header row | Required on header content div |
+| `mdl-layout__title` | Defines layout title text | Required on layout title span |
+| `mdl-layout-spacer` | Used to align elements inside a header or drawer, by growing to fill remaining space. Commonly used for aligning elements to the right. | Goes on optional div following layout title |
+| `mdl-navigation` | Defines container as MDL navigation group | Required on nav element |
+| `mdl-navigation__link` | Defines anchor as MDL navigation link | Required on header and/or drawer anchor elements |
+| `mdl-layout__drawer` | Defines container as MDL layout drawer | Required on drawer div element |
+| `mdl-layout__content` | Defines container as MDL layout content | Required on main element |
+| `mdl-layout__header--scroll` | Makes the header scroll with the content | Optional; goes on header element |
+| `mdl-layout--fixed-drawer` | Makes the drawer always visible and open in larger screens | Optional; goes on outer div element (not drawer div element) |
+| `mdl-layout--fixed-header` | Makes the header always visible, even in small screens | Optional; goes on outer div element |
+| `mdl-layout--no-drawer-button` | Does not display a drawer button | Optional; goes on `mdl-layout` element |
+| `mdl-layout--no-desktop-drawer-button` | Does not display a drawer button in desktop mode | Optional; goes on `mdl-layout` element |
+| `mdl-layout--large-screen-only` | Hides an element on smaller screens | Optional; goes on any descendant of `mdl-layout` |
+| `mdl-layout--small-screen-only` | Hides an element on larger screens | Optional; goes on any descendant of `mdl-layout` |
+| `mdl-layout__header--waterfall` | Allows a "waterfall" effect with multiple header lines | Optional; goes on header element |
+| `mdl-layout__header--waterfall-hide-top` | Hides the top rather than the bottom rows on a waterfall header | Optional; goes on header element. Requires `mdl-layout__header--waterfall` |
+| `mdl-layout__header--transparent` | Makes header transparent (draws on top of layout background) | Optional; goes on header element |
+| `mdl-layout__header--seamed` | Uses a header without a shadow | Optional; goes on header element |
+| `mdl-layout__tab-bar` | Defines container as an MDL tab bar | Required on div element inside header (tabbed layout) |
+| `mdl-layout__tab` | Defines anchor as MDL tab link | Required on tab bar anchor elements |
+| `is-active` | Defines tab as default active tab | Optional; goes on tab bar anchor element and associated tab section element|
+| `mdl-layout__tab-panel` | Defines container as tab content panel | Required on tab section elements |
+| `mdl-layout__tab-manual-switch` | Disables tab switching when clicking on tab separators. Useful for disabling default behavior and setting up your own event listeners. | Optional; goes on tab bar element |
+| `mdl-layout--fixed-tabs` | Uses fixed tabs instead of the default scrollable tabs | Optional; goes on outer div element (not div inside header) |
diff --git a/node_modules/material-design-lite/src/layout/_layout.scss b/node_modules/material-design-lite/src/layout/_layout.scss
new file mode 100644
index 0000000..05a317a
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/_layout.scss
@@ -0,0 +1,662 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+// Navigation classes. Only used here for now, but we may at some point move
+// this to its own component.
+.mdl-navigation {
+  display: flex;
+  flex-wrap: nowrap;
+  box-sizing: border-box;
+}
+
+.mdl-navigation__link {
+  color: $layout-text-color;
+  text-decoration: none;
+  margin: 0;
+  @include typo-body-1(true);
+
+  // Align icons inside link with text
+  & .material-icons {
+    vertical-align: middle;
+  }
+}
+
+// Main layout class.
+.mdl-layout {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  overflow-y: auto;
+  overflow-x: hidden;
+  position: relative;
+  -webkit-overflow-scrolling: touch;
+}
+
+// Utility classes for screen sizes.
+.mdl-layout.is-small-screen .mdl-layout--large-screen-only {
+  display: none;
+}
+
+.mdl-layout:not(.is-small-screen) .mdl-layout--small-screen-only {
+  display: none;
+}
+
+.mdl-layout__container {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+}
+
+
+  // Optional utility classes for formatting special blocks in this component.
+  .mdl-layout__title,
+  .mdl-layout-title {
+    display: block;
+    position: relative;
+
+    @include typo-title();
+    font-weight: 400;
+    box-sizing: border-box;
+  }
+
+  .mdl-layout-spacer {
+    flex-grow: 1;
+  }
+
+
+  // Drawer.
+  .mdl-layout__drawer {
+    display: flex;
+    flex-direction: column;
+    flex-wrap: nowrap;
+
+    width: $layout-drawer-width;
+    height: 100%;
+    max-height: 100%;
+
+    position: absolute;
+    top: 0;
+    left: 0;
+
+    @include shadow-2dp();
+
+    box-sizing: border-box;
+    border-right: 1px solid $layout-drawer-border-color;
+    background: $layout-drawer-bg-color;
+
+    // Transform offscreen.
+    transform: translateX(-$layout-drawer-width - 10px);
+    transform-style: preserve-3d;
+    will-change: transform;
+
+    @include material-animation-default();
+    transition-property: transform;
+
+    color: $layout-text-color;
+
+    overflow: visible;
+    overflow-y: auto;
+
+    z-index: 5;
+
+    &.is-visible {
+      transform: translateX(0);
+      & ~ .mdl-layout__content.mdl-layout__content {
+        overflow: hidden;
+      }
+    }
+
+    & > * {
+      flex-shrink: 0;
+    }
+
+    & > .mdl-layout__title,
+    & > .mdl-layout-title {
+      line-height: $layout-desktop-header-height;
+      padding-left: $layout-header-desktop-indent;
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        line-height: $layout-mobile-header-height;
+        padding-left: $layout-header-mobile-indent;
+      }
+    }
+
+    & .mdl-navigation {
+      flex-direction: column;
+      align-items: stretch;
+      padding-top: 16px;
+
+      & .mdl-navigation__link {
+      display: block;
+      flex-shrink: 0;
+      padding: 16px $layout-header-desktop-indent;
+      margin: 0;
+      color: $layout-drawer-navigation-color;
+
+        @media screen and (max-width: $layout-screen-size-threshold) {
+          padding: 16px $layout-header-mobile-indent;
+        }
+
+        &:hover {
+          background-color: $layout-nav-color;
+        }
+
+        &--current {
+            background-color: $layout-drawer-navigation-link-active-background;
+            color: $layout-drawer-navigation-link-active-color;
+        }
+      }
+    }
+
+    @media screen and (min-width: $layout-screen-size-threshold + 1px) {
+      .mdl-layout--fixed-drawer > & {
+        transform: translateX(0);
+      }
+    }
+  }
+
+
+  // Drawer button.
+  // TODO(sgomes): Replace with an icon button when we have that component.
+  .mdl-layout__drawer-button {
+    display: block;
+
+    position: absolute;
+    height: $layout-drawer-button-desktop-size;
+    width: $layout-drawer-button-desktop-size;
+    border: 0;
+
+    flex-shrink: 0;
+
+    overflow: hidden;
+    text-align: center;
+    cursor: pointer;
+    font-size: 26px;
+    line-height: $layout-mobile-header-height;
+    font-family: Helvetica, Arial, sans-serif;
+    margin: ($layout-mobile-header-height - $layout-drawer-button-desktop-size) 12px;
+    top: 0;
+    left: 0;
+    color: $layout-header-text-color;
+
+    z-index: 4;
+
+    .mdl-layout__header & {
+      position: absolute;
+      color: $layout-header-text-color;
+      background-color: inherit;
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        margin: 4px;
+      }
+    }
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      margin: 4px;
+      color: rgba(0, 0, 0, 0.5);
+    }
+
+    @media screen and (min-width: $layout-screen-size-threshold + 1px) {
+      line-height: 54px;
+
+      .mdl-layout--no-desktop-drawer-button &,
+      .mdl-layout--fixed-drawer > &,
+      .mdl-layout--no-drawer-button & {
+        display: none;
+      }
+    }
+  }
+
+  .mdl-layout__header {
+    display: flex;
+    flex-direction: column;
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+    box-sizing: border-box;
+    flex-shrink: 0;
+
+    width: 100%;
+    margin: 0;
+    padding: 0;
+    border: none;
+    min-height: $layout-desktop-header-height;
+    max-height: 1000px;
+    z-index: 3;
+
+    background-color: $layout-header-bg-color;
+    color: $layout-header-text-color;
+
+    @include shadow-2dp();
+    @include material-animation-default();
+    transition-property: max-height, box-shadow;
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      min-height: $layout-mobile-header-height;
+    }
+
+    .mdl-layout--fixed-drawer.is-upgraded:not(.is-small-screen) > & {
+      margin-left: $layout-drawer-width;
+      width: calc(100% - #{$layout-drawer-width});
+    }
+
+    @media screen and (min-width: $layout-screen-size-threshold + 1px) {
+      .mdl-layout--fixed-drawer > & {
+        .mdl-layout__header-row {
+          padding-left: 40px;
+        }
+      }
+    }
+
+    & > .mdl-layout-icon {
+      position: absolute;
+      left: $layout-header-desktop-indent;
+      top: ($layout-desktop-header-height - $layout-header-icon-size) / 2;
+      height: $layout-header-icon-size;
+      width: $layout-header-icon-size;
+      overflow: hidden;
+      z-index: 3;
+      display: block;
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        left: $layout-header-mobile-indent;
+        top: ($layout-mobile-header-height - $layout-header-icon-size) / 2;
+      }
+    }
+
+    .mdl-layout.has-drawer & > .mdl-layout-icon {
+      display: none;
+    }
+
+    &.is-compact {
+      max-height: $layout-desktop-header-height;
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        max-height: $layout-mobile-header-height;
+      }
+    }
+
+    &.is-compact.has-tabs {
+      height: $layout-desktop-header-height + $layout-tab-bar-height;
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        min-height: $layout-mobile-header-height + $layout-tab-bar-height;
+      }
+    }
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      & {
+        display: none;
+      }
+
+      .mdl-layout--fixed-header > & {
+        display: flex;
+      }
+    }
+  }
+
+    .mdl-layout__header--transparent.mdl-layout__header--transparent {
+      background-color: transparent;
+      box-shadow: none;
+    }
+
+    .mdl-layout__header--seamed {
+      box-shadow: none;
+    }
+
+    .mdl-layout__header--scroll {
+      box-shadow: none;
+    }
+
+    .mdl-layout__header--waterfall {
+      box-shadow: none;
+      overflow: hidden;
+
+      &.is-casting-shadow {
+        @include shadow-2dp();
+      }
+
+      &.mdl-layout__header--waterfall-hide-top {
+        justify-content: flex-end;
+      }
+    }
+
+    .mdl-layout__header-row {
+      display: flex;
+      flex-direction: row;
+      flex-wrap: nowrap;
+      flex-shrink: 0;
+      box-sizing: border-box;
+      align-self: stretch;
+      align-items: center;
+      height: $layout-header-desktop-row-height;
+      margin: 0;
+      padding: 0 $layout-header-desktop-indent 0 $layout-header-desktop-baseline;
+
+      .mdl-layout--no-drawer-button & {
+        padding-left: $layout-header-desktop-indent;
+      }
+
+      @media screen and (min-width: $layout-screen-size-threshold + 1px) {
+        .mdl-layout--no-desktop-drawer-button & {
+          padding-left: $layout-header-desktop-indent;
+        }
+      }
+
+      @media screen and (max-width: $layout-screen-size-threshold) {
+        height: $layout-header-mobile-row-height;
+        padding: 0 $layout-header-mobile-indent 0 $layout-header-mobile-baseline;
+
+        .mdl-layout--no-drawer-button & {
+          padding-left: $layout-header-mobile-indent;
+        }
+      }
+
+      & > * {
+        flex-shrink: 0;
+      }
+
+      .mdl-layout__header--scroll & {
+        width: 100%;
+      }
+
+      & .mdl-navigation {
+        margin: 0;
+        padding: 0;
+        height: $layout-header-desktop-row-height;
+        flex-direction: row;
+        align-items: center;
+
+        @media screen and (max-width: $layout-screen-size-threshold) {
+          height: $layout-header-mobile-row-height;
+        }
+      }
+
+      & .mdl-navigation__link {
+        display: block;
+        color: $layout-header-text-color;
+        line-height: $layout-header-desktop-row-height;
+        padding: 0 24px;
+
+        @media screen and (max-width: $layout-screen-size-threshold) {
+          line-height: $layout-header-mobile-row-height;
+          padding: 0 $layout-header-mobile-indent;
+        }
+      }
+    }
+
+  // Obfuscator.
+  .mdl-layout__obfuscator {
+    background-color: transparent;
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 100%;
+    width: 100%;
+    z-index: 4;
+    visibility: hidden;
+    transition-property: background-color;
+    @include material-animation-default();
+
+    &.is-visible {
+      background-color: rgba(0, 0, 0, 0.5);
+      visibility: visible;
+    }
+
+    @supports (pointer-events: auto) {
+      background-color: rgba(0, 0, 0, 0.5);
+      opacity: 0;
+      transition-property: opacity;
+      visibility: visible;
+      pointer-events: none;
+      &.is-visible {
+        pointer-events: auto;
+        opacity: 1;
+      }
+    }
+  }
+
+
+  // Content.
+  .mdl-layout__content {
+    // Fix IE10 bug.
+    -ms-flex: 0 1 auto;
+
+    position: relative;
+    display: inline-block;
+    overflow-y: auto;
+    overflow-x: hidden;
+    flex-grow: 1;
+    z-index: 1;
+    -webkit-overflow-scrolling: touch;
+
+    .mdl-layout--fixed-drawer > & {
+      margin-left: $layout-drawer-width;
+    }
+
+    .mdl-layout__container.has-scrolling-header & {
+      overflow: visible;
+    }
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      .mdl-layout--fixed-drawer > & {
+        margin-left: 0;
+      }
+
+      .mdl-layout__container.has-scrolling-header & {
+        overflow-y: auto;
+        overflow-x: hidden;
+      }
+    }
+  }
+
+  // Tabs.
+  .mdl-layout__tab-bar {
+    height: $layout-tab-bar-height * 2;
+    margin: 0;
+    width: calc(100% -
+        #{(($layout-header-desktop-baseline - $layout-tab-desktop-padding) * 2)});
+    padding: 0 0 0
+        ($layout-header-desktop-baseline - $layout-tab-desktop-padding);
+    display: flex;
+    background-color: $layout-header-bg-color;
+    overflow-y: hidden;
+    overflow-x: scroll;
+
+    &::-webkit-scrollbar {
+      display: none;
+    }
+
+    .mdl-layout--no-drawer-button & {
+      padding-left: $layout-header-desktop-indent - $layout-tab-desktop-padding;
+      width: calc(100% -
+          #{(($layout-header-desktop-indent - $layout-tab-desktop-padding) * 2)});
+    }
+
+    @media screen and (min-width: $layout-screen-size-threshold + 1px) {
+      .mdl-layout--no-desktop-drawer-button & {
+        padding-left: $layout-header-desktop-indent - $layout-tab-desktop-padding;
+        width: calc(100% -
+            #{(($layout-header-desktop-indent - $layout-tab-desktop-padding) * 2)});
+      }
+    }
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      width: calc(100% -
+          #{($layout-header-mobile-baseline - $layout-tab-mobile-padding)});
+      padding: 0 0 0
+          ($layout-header-mobile-baseline - $layout-tab-mobile-padding);
+
+      .mdl-layout--no-drawer-button & {
+        width: calc(100% -
+            #{(($layout-header-mobile-indent - $layout-tab-mobile-padding) * 2)});
+        padding-left: $layout-header-mobile-indent - $layout-tab-mobile-padding;
+      }
+    }
+
+    .mdl-layout--fixed-tabs & {
+      padding: 0;
+      overflow: hidden;
+      width: 100%;
+    }
+  }
+
+  .mdl-layout__tab-bar-container {
+    position: relative;
+    height: $layout-tab-bar-height;
+    width: 100%;
+    border: none;
+    margin: 0;
+    z-index: 2;
+    flex-grow: 0;
+    flex-shrink: 0;
+    overflow: hidden;
+
+    .mdl-layout__container > & {
+      position: absolute;
+      top: 0;
+      left: 0;
+    }
+  }
+
+  .mdl-layout__tab-bar-button {
+    display: inline-block;
+    position: absolute;
+    top: 0;
+    height: $layout-tab-bar-height;
+    width: $layout-header-desktop-baseline - $layout-tab-desktop-padding;
+    z-index: 4;
+    text-align: center;
+    background-color: $layout-header-bg-color;
+    color: transparent;
+    cursor: pointer;
+    user-select: none;
+
+    .mdl-layout--no-desktop-drawer-button &,
+    .mdl-layout--no-drawer-button & {
+      width: $layout-header-desktop-indent - $layout-tab-desktop-padding;
+
+      & .material-icons {
+        position: relative;
+        left: ($layout-header-desktop-indent - $layout-tab-desktop-padding - 24px) / 2;
+      }
+    }
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      width: $layout-header-mobile-baseline - $layout-tab-mobile-padding;
+    }
+
+    .mdl-layout--fixed-tabs & {
+      display: none;
+    }
+
+    & .material-icons {
+      line-height: $layout-tab-bar-height;
+    }
+
+    &.is-active {
+      color: $layout-header-text-color;
+    }
+  }
+
+  .mdl-layout__tab-bar-left-button {
+    left: 0;
+  }
+
+  .mdl-layout__tab-bar-right-button {
+    right: 0;
+  }
+
+  .mdl-layout__tab {
+    margin: 0;
+    border: none;
+    padding: 0 $layout-tab-desktop-padding 0 $layout-tab-desktop-padding;
+
+    float: left;
+    position: relative;
+    display: block;
+    flex-grow: 0;
+    flex-shrink: 0;
+
+    text-decoration: none;
+    height: $layout-tab-bar-height;
+    line-height: $layout-tab-bar-height;
+
+    text-align: center;
+    font-weight: 500;
+    font-size: $layout-tab-font-size;
+    text-transform: uppercase;
+
+    color: $layout-header-tab-text-color;
+    overflow: hidden;
+
+    @media screen and (max-width: $layout-screen-size-threshold) {
+      padding: 0 $layout-tab-mobile-padding 0 $layout-tab-mobile-padding;
+    }
+
+    .mdl-layout--fixed-tabs & {
+      float: none;
+      flex-grow: 1;
+      padding: 0;
+    }
+
+    .mdl-layout.is-upgraded &.is-active {
+      color: $layout-header-text-color;
+    }
+
+    .mdl-layout.is-upgraded &.is-active::after {
+      height: $layout-tab-highlight-thickness;
+      width: 100%;
+      display: block;
+      content: " ";
+      bottom: 0;
+      left: 0;
+      position: absolute;
+      background: $layout-header-tab-highlight;
+      animation: border-expand 0.2s cubic-bezier(0.4, 0.0, 0.4, 1) 0.01s alternate forwards;
+      transition: all 1s cubic-bezier(0.4, 0.0, 1, 1);
+    }
+
+    & .mdl-layout__tab-ripple-container {
+      display: block;
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      left: 0;
+      top: 0;
+      z-index: 1;
+      overflow: hidden;
+
+      & .mdl-ripple {
+        background-color: $layout-header-text-color;
+      }
+    }
+  }
+
+  .mdl-layout__tab-panel {
+    display: block;
+
+    .mdl-layout.is-upgraded & {
+      display: none;
+    }
+
+    .mdl-layout.is-upgraded &.is-active {
+      display: block;
+    }
+  }
diff --git a/node_modules/material-design-lite/src/layout/layout.js b/node_modules/material-design-lite/src/layout/layout.js
new file mode 100644
index 0000000..a1cc1dc
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/layout.js
@@ -0,0 +1,574 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Layout MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialLayout = function MaterialLayout(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialLayout'] = MaterialLayout;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialLayout.prototype.Constant_ = {
+    MAX_WIDTH: '(max-width: 1024px)',
+    TAB_SCROLL_PIXELS: 100,
+    RESIZE_TIMEOUT: 100,
+
+    MENU_ICON: '&#xE5D2;',
+    CHEVRON_LEFT: 'chevron_left',
+    CHEVRON_RIGHT: 'chevron_right'
+  };
+
+  /**
+   * Keycodes, for code readability.
+   *
+   * @enum {number}
+   * @private
+   */
+  MaterialLayout.prototype.Keycodes_ = {
+    ENTER: 13,
+    ESCAPE: 27,
+    SPACE: 32
+  };
+
+  /**
+   * Modes.
+   *
+   * @enum {number}
+   * @private
+   */
+  MaterialLayout.prototype.Mode_ = {
+    STANDARD: 0,
+    SEAMED: 1,
+    WATERFALL: 2,
+    SCROLL: 3
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialLayout.prototype.CssClasses_ = {
+    CONTAINER: 'mdl-layout__container',
+    HEADER: 'mdl-layout__header',
+    DRAWER: 'mdl-layout__drawer',
+    CONTENT: 'mdl-layout__content',
+    DRAWER_BTN: 'mdl-layout__drawer-button',
+
+    ICON: 'material-icons',
+
+    JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',
+    RIPPLE: 'mdl-ripple',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+
+    HEADER_SEAMED: 'mdl-layout__header--seamed',
+    HEADER_WATERFALL: 'mdl-layout__header--waterfall',
+    HEADER_SCROLL: 'mdl-layout__header--scroll',
+
+    FIXED_HEADER: 'mdl-layout--fixed-header',
+    OBFUSCATOR: 'mdl-layout__obfuscator',
+
+    TAB_BAR: 'mdl-layout__tab-bar',
+    TAB_CONTAINER: 'mdl-layout__tab-bar-container',
+    TAB: 'mdl-layout__tab',
+    TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',
+    TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',
+    TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',
+    TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',
+    PANEL: 'mdl-layout__tab-panel',
+
+    HAS_DRAWER: 'has-drawer',
+    HAS_TABS: 'has-tabs',
+    HAS_SCROLLING_HEADER: 'has-scrolling-header',
+    CASTING_SHADOW: 'is-casting-shadow',
+    IS_COMPACT: 'is-compact',
+    IS_SMALL_SCREEN: 'is-small-screen',
+    IS_DRAWER_OPEN: 'is-visible',
+    IS_ACTIVE: 'is-active',
+    IS_UPGRADED: 'is-upgraded',
+    IS_ANIMATING: 'is-animating',
+
+    ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',
+    ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'
+
+  };
+
+  /**
+   * Handles scrolling on the content.
+   *
+   * @private
+   */
+  MaterialLayout.prototype.contentScrollHandler_ = function() {
+    if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {
+      return;
+    }
+
+    var headerVisible =
+        !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) ||
+        this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);
+
+    if (this.content_.scrollTop > 0 &&
+        !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {
+      this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);
+      this.header_.classList.add(this.CssClasses_.IS_COMPACT);
+      if (headerVisible) {
+        this.header_.classList.add(this.CssClasses_.IS_ANIMATING);
+      }
+    } else if (this.content_.scrollTop <= 0 &&
+        this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {
+      this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);
+      this.header_.classList.remove(this.CssClasses_.IS_COMPACT);
+      if (headerVisible) {
+        this.header_.classList.add(this.CssClasses_.IS_ANIMATING);
+      }
+    }
+  };
+
+  /**
+   * Handles a keyboard event on the drawer.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialLayout.prototype.keyboardEventHandler_ = function(evt) {
+    // Only react when the drawer is open.
+    if (evt.keyCode === this.Keycodes_.ESCAPE &&
+        this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {
+      this.toggleDrawer();
+    }
+  };
+
+  /**
+   * Handles changes in screen size.
+   *
+   * @private
+   */
+  MaterialLayout.prototype.screenSizeHandler_ = function() {
+    if (this.screenSizeMediaQuery_.matches) {
+      this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);
+      // Collapse drawer (if any) when moving to a large screen size.
+      if (this.drawer_) {
+        this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
+        this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
+      }
+    }
+  };
+
+  /**
+   * Handles events of drawer button.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialLayout.prototype.drawerToggleHandler_ = function(evt) {
+    if (evt && (evt.type === 'keydown')) {
+      if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {
+        // prevent scrolling in drawer nav
+        evt.preventDefault();
+      } else {
+        // prevent other keys
+        return;
+      }
+    }
+
+    this.toggleDrawer();
+  };
+
+  /**
+   * Handles (un)setting the `is-animating` class
+   *
+   * @private
+   */
+  MaterialLayout.prototype.headerTransitionEndHandler_ = function() {
+    this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);
+  };
+
+  /**
+   * Handles expanding the header on click
+   *
+   * @private
+   */
+  MaterialLayout.prototype.headerClickHandler_ = function() {
+    if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {
+      this.header_.classList.remove(this.CssClasses_.IS_COMPACT);
+      this.header_.classList.add(this.CssClasses_.IS_ANIMATING);
+    }
+  };
+
+  /**
+   * Reset tab state, dropping active classes
+   *
+   * @private
+   */
+  MaterialLayout.prototype.resetTabState_ = function(tabBar) {
+    for (var k = 0; k < tabBar.length; k++) {
+      tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);
+    }
+  };
+
+  /**
+   * Reset panel state, droping active classes
+   *
+   * @private
+   */
+  MaterialLayout.prototype.resetPanelState_ = function(panels) {
+    for (var j = 0; j < panels.length; j++) {
+      panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);
+    }
+  };
+
+  /**
+  * Toggle drawer state
+  *
+  * @public
+  */
+  MaterialLayout.prototype.toggleDrawer = function() {
+    var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);
+    this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);
+    this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);
+
+    // Set accessibility properties.
+    if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {
+      this.drawer_.setAttribute('aria-hidden', 'false');
+      drawerButton.setAttribute('aria-expanded', 'true');
+    } else {
+      this.drawer_.setAttribute('aria-hidden', 'true');
+      drawerButton.setAttribute('aria-expanded', 'false');
+    }
+  };
+  MaterialLayout.prototype['toggleDrawer'] =
+      MaterialLayout.prototype.toggleDrawer;
+
+  /**
+   * Initialize element.
+   */
+  MaterialLayout.prototype.init = function() {
+    if (this.element_) {
+      var container = document.createElement('div');
+      container.classList.add(this.CssClasses_.CONTAINER);
+
+      var focusedElement = this.element_.querySelector(':focus');
+
+      this.element_.parentElement.insertBefore(container, this.element_);
+      this.element_.parentElement.removeChild(this.element_);
+      container.appendChild(this.element_);
+
+      if (focusedElement) {
+        focusedElement.focus();
+      }
+
+      var directChildren = this.element_.childNodes;
+      var numChildren = directChildren.length;
+      for (var c = 0; c < numChildren; c++) {
+        var child = directChildren[c];
+        if (child.classList &&
+            child.classList.contains(this.CssClasses_.HEADER)) {
+          this.header_ = child;
+        }
+
+        if (child.classList &&
+            child.classList.contains(this.CssClasses_.DRAWER)) {
+          this.drawer_ = child;
+        }
+
+        if (child.classList &&
+            child.classList.contains(this.CssClasses_.CONTENT)) {
+          this.content_ = child;
+        }
+      }
+
+      window.addEventListener('pageshow', function(e) {
+        if (e.persisted) { // when page is loaded from back/forward cache
+          // trigger repaint to let layout scroll in safari
+          this.element_.style.overflowY = 'hidden';
+          requestAnimationFrame(function() {
+            this.element_.style.overflowY = '';
+          }.bind(this));
+        }
+      }.bind(this), false);
+
+      if (this.header_) {
+        this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);
+      }
+
+      var mode = this.Mode_.STANDARD;
+
+      if (this.header_) {
+        if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {
+          mode = this.Mode_.SEAMED;
+        } else if (this.header_.classList.contains(
+            this.CssClasses_.HEADER_WATERFALL)) {
+          mode = this.Mode_.WATERFALL;
+          this.header_.addEventListener('transitionend',
+            this.headerTransitionEndHandler_.bind(this));
+          this.header_.addEventListener('click',
+            this.headerClickHandler_.bind(this));
+        } else if (this.header_.classList.contains(
+            this.CssClasses_.HEADER_SCROLL)) {
+          mode = this.Mode_.SCROLL;
+          container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);
+        }
+
+        if (mode === this.Mode_.STANDARD) {
+          this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);
+          if (this.tabBar_) {
+            this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);
+          }
+        } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {
+          this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);
+          if (this.tabBar_) {
+            this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);
+          }
+        } else if (mode === this.Mode_.WATERFALL) {
+          // Add and remove shadows depending on scroll position.
+          // Also add/remove auxiliary class for styling of the compact version of
+          // the header.
+          this.content_.addEventListener('scroll',
+              this.contentScrollHandler_.bind(this));
+          this.contentScrollHandler_();
+        }
+      }
+
+      // Add drawer toggling button to our layout, if we have an openable drawer.
+      if (this.drawer_) {
+        var drawerButton = this.element_.querySelector('.' +
+          this.CssClasses_.DRAWER_BTN);
+        if (!drawerButton) {
+          drawerButton = document.createElement('div');
+          drawerButton.setAttribute('aria-expanded', 'false');
+          drawerButton.setAttribute('role', 'button');
+          drawerButton.setAttribute('tabindex', '0');
+          drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);
+
+          var drawerButtonIcon = document.createElement('i');
+          drawerButtonIcon.classList.add(this.CssClasses_.ICON);
+          drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;
+          drawerButton.appendChild(drawerButtonIcon);
+        }
+
+        if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {
+          //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.
+          drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);
+        } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {
+          //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.
+          drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);
+        }
+
+        drawerButton.addEventListener('click',
+            this.drawerToggleHandler_.bind(this));
+
+        drawerButton.addEventListener('keydown',
+            this.drawerToggleHandler_.bind(this));
+
+        // Add a class if the layout has a drawer, for altering the left padding.
+        // Adds the HAS_DRAWER to the elements since this.header_ may or may
+        // not be present.
+        this.element_.classList.add(this.CssClasses_.HAS_DRAWER);
+
+        // If we have a fixed header, add the button to the header rather than
+        // the layout.
+        if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {
+          this.header_.insertBefore(drawerButton, this.header_.firstChild);
+        } else {
+          this.element_.insertBefore(drawerButton, this.content_);
+        }
+
+        var obfuscator = document.createElement('div');
+        obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);
+        this.element_.appendChild(obfuscator);
+        obfuscator.addEventListener('click',
+            this.drawerToggleHandler_.bind(this));
+        this.obfuscator_ = obfuscator;
+
+        this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));
+        this.drawer_.setAttribute('aria-hidden', 'true');
+      }
+
+      // Keep an eye on screen size, and add/remove auxiliary class for styling
+      // of small screens.
+      this.screenSizeMediaQuery_ = window.matchMedia(
+          /** @type {string} */ (this.Constant_.MAX_WIDTH));
+      this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));
+      this.screenSizeHandler_();
+
+      // Initialize tabs, if any.
+      if (this.header_ && this.tabBar_) {
+        this.element_.classList.add(this.CssClasses_.HAS_TABS);
+
+        var tabContainer = document.createElement('div');
+        tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);
+        this.header_.insertBefore(tabContainer, this.tabBar_);
+        this.header_.removeChild(this.tabBar_);
+
+        var leftButton = document.createElement('div');
+        leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);
+        leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);
+        var leftButtonIcon = document.createElement('i');
+        leftButtonIcon.classList.add(this.CssClasses_.ICON);
+        leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;
+        leftButton.appendChild(leftButtonIcon);
+        leftButton.addEventListener('click', function() {
+          this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;
+        }.bind(this));
+
+        var rightButton = document.createElement('div');
+        rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);
+        rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);
+        var rightButtonIcon = document.createElement('i');
+        rightButtonIcon.classList.add(this.CssClasses_.ICON);
+        rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;
+        rightButton.appendChild(rightButtonIcon);
+        rightButton.addEventListener('click', function() {
+          this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;
+        }.bind(this));
+
+        tabContainer.appendChild(leftButton);
+        tabContainer.appendChild(this.tabBar_);
+        tabContainer.appendChild(rightButton);
+
+        // Add and remove tab buttons depending on scroll position and total
+        // window size.
+        var tabUpdateHandler = function() {
+          if (this.tabBar_.scrollLeft > 0) {
+            leftButton.classList.add(this.CssClasses_.IS_ACTIVE);
+          } else {
+            leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);
+          }
+
+          if (this.tabBar_.scrollLeft <
+              this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {
+            rightButton.classList.add(this.CssClasses_.IS_ACTIVE);
+          } else {
+            rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);
+          }
+        }.bind(this);
+
+        this.tabBar_.addEventListener('scroll', tabUpdateHandler);
+        tabUpdateHandler();
+
+        // Update tabs when the window resizes.
+        var windowResizeHandler = function() {
+          // Use timeouts to make sure it doesn't happen too often.
+          if (this.resizeTimeoutId_) {
+            clearTimeout(this.resizeTimeoutId_);
+          }
+          this.resizeTimeoutId_ = setTimeout(function() {
+            tabUpdateHandler();
+            this.resizeTimeoutId_ = null;
+          }.bind(this), /** @type {number} */ (this.Constant_.RESIZE_TIMEOUT));
+        }.bind(this);
+
+        window.addEventListener('resize', windowResizeHandler);
+
+        if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {
+          this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+        }
+
+        // Select element tabs, document panels
+        var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);
+        var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);
+
+        // Create new tabs for each tab element
+        for (var i = 0; i < tabs.length; i++) {
+          new MaterialLayoutTab(tabs[i], tabs, panels, this);
+        }
+      }
+
+      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+    }
+  };
+
+  /**
+   * Constructor for an individual tab.
+   *
+   * @constructor
+   * @param {HTMLElement} tab The HTML element for the tab.
+   * @param {!Array<HTMLElement>} tabs Array with HTML elements for all tabs.
+   * @param {!Array<HTMLElement>} panels Array with HTML elements for all panels.
+   * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.
+   */
+  function MaterialLayoutTab(tab, tabs, panels, layout) {
+
+    /**
+     * Auxiliary method to programmatically select a tab in the UI.
+     */
+    function selectTab() {
+      var href = tab.href.split('#')[1];
+      var panel = layout.content_.querySelector('#' + href);
+      layout.resetTabState_(tabs);
+      layout.resetPanelState_(panels);
+      tab.classList.add(layout.CssClasses_.IS_ACTIVE);
+      panel.classList.add(layout.CssClasses_.IS_ACTIVE);
+    }
+
+    if (layout.tabBar_.classList.contains(
+        layout.CssClasses_.JS_RIPPLE_EFFECT)) {
+      var rippleContainer = document.createElement('span');
+      rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);
+      rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);
+      var ripple = document.createElement('span');
+      ripple.classList.add(layout.CssClasses_.RIPPLE);
+      rippleContainer.appendChild(ripple);
+      tab.appendChild(rippleContainer);
+    }
+
+    if (!layout.tabBar_.classList.contains(
+      layout.CssClasses_.TAB_MANUAL_SWITCH)) {
+      tab.addEventListener('click', function(e) {
+        if (tab.getAttribute('href').charAt(0) === '#') {
+          e.preventDefault();
+          selectTab();
+        }
+      });
+    }
+
+    tab.show = selectTab;
+  }
+  window['MaterialLayoutTab'] = MaterialLayoutTab;
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialLayout,
+    classAsString: 'MaterialLayout',
+    cssClass: 'mdl-js-layout'
+  });
+})();
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-drawer-demo.html b/node_modules/material-design-lite/src/layout/snippets/fixed-drawer-demo.html
new file mode 100644
index 0000000..6a975c8
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-drawer-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-layout.demo-layout__fixed-drawer {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__fixed-drawer .mdl-layout__content {
+  background: white;
+}
+</style>
+
+{% include "fixed-drawer.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-drawer.html b/node_modules/material-design-lite/src/layout/snippets/fixed-drawer.html
new file mode 100644
index 0000000..d03455e
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-drawer.html
@@ -0,0 +1,15 @@
+<!-- No header, and the drawer stays open on larger screens (fixed drawer). -->
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div class="page-content"><!-- Your content goes here --></div>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-header-demo.html b/node_modules/material-design-lite/src/layout/snippets/fixed-header-demo.html
new file mode 100644
index 0000000..992953a
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-header-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-layout.demo-layout__fixed-header {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__fixed-header .mdl-layout__content {
+  background: white;
+}
+</style>
+
+{% include "fixed-header.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer-demo.html b/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer-demo.html
new file mode 100644
index 0000000..389199e
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-layout.demo-layout__fixed-header-drawer {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__fixed-header-drawer.mdl-layout__content {
+  background: white;
+}
+</style>
+
+{% include "fixed-header-drawer.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer.html b/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer.html
new file mode 100644
index 0000000..9d85c30
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-header-drawer.html
@@ -0,0 +1,33 @@
+<!-- The drawer is always open in large screens. The header is always shown,
+  even in small screens. -->
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+            mdl-layout--fixed-header">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout__header-row">
+      <div class="mdl-layout-spacer"></div>
+      <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable
+                  mdl-textfield--floating-label mdl-textfield--align-right">
+        <label class="mdl-button mdl-js-button mdl-button--icon"
+               for="fixed-header-drawer-exp">
+          <i class="material-icons">search</i>
+        </label>
+        <div class="mdl-textfield__expandable-holder">
+          <input class="mdl-textfield__input" type="text" name="sample"
+                 id="fixed-header-drawer-exp">
+        </div>
+      </div>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div class="page-content"><!-- Your content goes here --></div>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-header.html b/node_modules/material-design-lite/src/layout/snippets/fixed-header.html
new file mode 100644
index 0000000..43ecea3
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-header.html
@@ -0,0 +1,30 @@
+<!-- Always shows a header, even in smaller screens. -->
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+      <!-- Add spacer, to align navigation to the right -->
+      <div class="mdl-layout-spacer"></div>
+      <!-- Navigation. We hide it in small screens. -->
+      <nav class="mdl-navigation mdl-layout--large-screen-only">
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div class="page-content"><!-- Your content goes here --></div>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-tabs-demo.html b/node_modules/material-design-lite/src/layout/snippets/fixed-tabs-demo.html
new file mode 100644
index 0000000..7091a09
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-tabs-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-layout.demo-layout__fixed-tabs {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__fixed-tabs .mdl-layout__content {
+  background: white;
+}
+</style>
+
+{% include "fixed-tabs.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/fixed-tabs.html b/node_modules/material-design-lite/src/layout/snippets/fixed-tabs.html
new file mode 100644
index 0000000..d9e7521
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/fixed-tabs.html
@@ -0,0 +1,30 @@
+<!-- Simple header with fixed tabs. -->
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header
+            mdl-layout--fixed-tabs">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+    </div>
+    <!-- Tabs -->
+    <div class="mdl-layout__tab-bar mdl-js-ripple-effect">
+      <a href="#fixed-tab-1" class="mdl-layout__tab is-active">Tab 1</a>
+      <a href="#fixed-tab-2" class="mdl-layout__tab">Tab 2</a>
+      <a href="#fixed-tab-3" class="mdl-layout__tab">Tab 3</a>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+  </div>
+  <main class="mdl-layout__content">
+    <section class="mdl-layout__tab-panel is-active" id="fixed-tab-1">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="fixed-tab-2">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="fixed-tab-3">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs-demo.html b/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs-demo.html
new file mode 100644
index 0000000..848dcdd
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs-demo.html
@@ -0,0 +1,15 @@
+<style>
+.demo-layout.demo-layout__scrollable-tabs {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__scrollable-tabs .mdl-layout__content {
+  background: white;
+}
+</style>
+
+{% include "scrollable-tabs.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs.html b/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs.html
new file mode 100644
index 0000000..822863a
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/scrollable-tabs.html
@@ -0,0 +1,41 @@
+<!-- Simple header with scrollable tabs. -->
+<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
+  <header class="mdl-layout__header">
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+    </div>
+    <!-- Tabs -->
+    <div class="mdl-layout__tab-bar mdl-js-ripple-effect">
+      <a href="#scroll-tab-1" class="mdl-layout__tab is-active">Tab 1</a>
+      <a href="#scroll-tab-2" class="mdl-layout__tab">Tab 2</a>
+      <a href="#scroll-tab-3" class="mdl-layout__tab">Tab 3</a>
+      <a href="#scroll-tab-4" class="mdl-layout__tab">Tab 4</a>
+      <a href="#scroll-tab-5" class="mdl-layout__tab">Tab 5</a>
+      <a href="#scroll-tab-6" class="mdl-layout__tab">Tab 6</a>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+  </div>
+  <main class="mdl-layout__content">
+    <section class="mdl-layout__tab-panel is-active" id="scroll-tab-1">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="scroll-tab-2">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="scroll-tab-3">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="scroll-tab-4">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="scroll-tab-5">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+    <section class="mdl-layout__tab-panel" id="scroll-tab-6">
+      <div class="page-content"><!-- Your content goes here --></div>
+    </section>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/scrolling-header-demo.html b/node_modules/material-design-lite/src/layout/snippets/scrolling-header-demo.html
new file mode 100644
index 0000000..7a01533
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/scrolling-header-demo.html
@@ -0,0 +1,16 @@
+<style>
+.demo-layout.demo-layout__scrolling-header {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__scrolling-header .page-content {
+  height: 600px;
+  background: white;
+}
+</style>
+
+{% include "scrolling-header.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/scrolling-header.html b/node_modules/material-design-lite/src/layout/snippets/scrolling-header.html
new file mode 100644
index 0000000..6d798a7
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/scrolling-header.html
@@ -0,0 +1,31 @@
+<!-- Uses a header that scrolls with the text, rather than staying
+  locked at the top -->
+<div class="mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header mdl-layout__header--scroll">
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+      <!-- Add spacer, to align navigation to the right -->
+      <div class="mdl-layout-spacer"></div>
+      <!-- Navigation -->
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div class="page-content"><!-- Your content goes here --></div>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/transparent-demo.html b/node_modules/material-design-lite/src/layout/snippets/transparent-demo.html
new file mode 100644
index 0000000..75dc854
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/transparent-demo.html
@@ -0,0 +1,12 @@
+<style>
+.demo-layout.demo-layout__transparent {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+</style>
+
+{% include "transparent.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/transparent.html b/node_modules/material-design-lite/src/layout/snippets/transparent.html
new file mode 100644
index 0000000..752b8b8
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/transparent.html
@@ -0,0 +1,41 @@
+<!-- Uses a transparent header that draws on top of the layout's background -->
+<style>
+.demo-layout-transparent {
+  background: url('../assets/demos/transparent.jpg') center / cover;
+}
+.demo-layout-transparent .mdl-layout__header,
+.demo-layout-transparent .mdl-layout__drawer-button {
+  /* This background is dark, so we set text to white. Use 87% black instead if
+     your background is light. */
+  color: white;
+}
+</style>
+
+<div class="demo-layout-transparent mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header mdl-layout__header--transparent">
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+      <!-- Add spacer, to align navigation to the right -->
+      <div class="mdl-layout-spacer"></div>
+      <!-- Navigation -->
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/layout/snippets/waterfall-header-demo.html b/node_modules/material-design-lite/src/layout/snippets/waterfall-header-demo.html
new file mode 100644
index 0000000..15cb494
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/waterfall-header-demo.html
@@ -0,0 +1,16 @@
+<style>
+.demo-layout.demo-layout__waterfall-header {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+              0 3px 1px -2px rgba(0, 0, 0, 0.2),
+              0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  width: 100%;
+  position: relative;
+  height: 300px;
+}
+.demo-layout.demo-layout__waterfall-header .page-content {
+  height: 600px;
+  background: white;
+}
+</style>
+
+{% include "waterfall-header.html" %}
diff --git a/node_modules/material-design-lite/src/layout/snippets/waterfall-header.html b/node_modules/material-design-lite/src/layout/snippets/waterfall-header.html
new file mode 100644
index 0000000..0b2e492
--- /dev/null
+++ b/node_modules/material-design-lite/src/layout/snippets/waterfall-header.html
@@ -0,0 +1,51 @@
+<!-- Uses a header that contracts as the page scrolls down. -->
+<style>
+.demo-layout-waterfall .mdl-layout__header-row .mdl-navigation__link:last-of-type  {
+  padding-right: 0;
+}
+</style>
+
+<div class="demo-layout-waterfall mdl-layout mdl-js-layout">
+  <header class="mdl-layout__header mdl-layout__header--waterfall">
+    <!-- Top row, always visible -->
+    <div class="mdl-layout__header-row">
+      <!-- Title -->
+      <span class="mdl-layout-title">Title</span>
+      <div class="mdl-layout-spacer"></div>
+      <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable
+                  mdl-textfield--floating-label mdl-textfield--align-right">
+        <label class="mdl-button mdl-js-button mdl-button--icon"
+               for="waterfall-exp">
+          <i class="material-icons">search</i>
+        </label>
+        <div class="mdl-textfield__expandable-holder">
+          <input class="mdl-textfield__input" type="text" name="sample"
+                 id="waterfall-exp">
+        </div>
+      </div>
+    </div>
+    <!-- Bottom row, not visible on scroll -->
+    <div class="mdl-layout__header-row">
+      <div class="mdl-layout-spacer"></div>
+      <!-- Navigation -->
+      <nav class="mdl-navigation">
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+        <a class="mdl-navigation__link" href="">Link</a>
+      </nav>
+    </div>
+  </header>
+  <div class="mdl-layout__drawer">
+    <span class="mdl-layout-title">Title</span>
+    <nav class="mdl-navigation">
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+      <a class="mdl-navigation__link" href="">Link</a>
+    </nav>
+  </div>
+  <main class="mdl-layout__content">
+    <div class="page-content"><!-- Your content goes here --></div>
+  </main>
+</div>
diff --git a/node_modules/material-design-lite/src/list/README.md b/node_modules/material-design-lite/src/list/README.md
new file mode 100644
index 0000000..a909990
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/README.md
@@ -0,0 +1,54 @@
+## Introduction
+Lists present multiple line items vertically as a single continuous element. Refer the [Material Design
+Spec](https://www.google.com/design/spec/components/lists.html) to know more about the content options.
+
+### To include the MDL **list** component:
+
+## Create a List with basic items.
+
+&nbsp;1. Code a `<ul>` element with the class `mdl-list`; this is the "outer" container, intended to hold all of the list's content.
+```html
+<ul class='mdl-list'>
+</ul>
+```
+&nbsp;2. Code as many `<li>` elements as required with the class `mdl-list__item`; this is intended to hold all of the **item's** content.
+```html
+<ul class='mdl-list'>
+  <li class="mdl-list__item"></li>
+  <li class="mdl-list__item"></li>
+  <li class="mdl-list__item"></li>
+</ul>
+```
+
+&nbsp;3. Add your content as the children of the `<li>`, with the appropriate content type modification class for example .
+```html
+<ul class='mdl-list'>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content"></span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content"></span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content"></span>
+  </li>
+</ul>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements to the list. The table below lists the available classes and their effects.
+
+| MDL Class        | Effect           | Remark  |
+| ------------- |:-------------:| -----:|
+| .mdl-list | Defines list as an MDL component| - |
+| .mdl-list__item | Defines the List's Items | required |
+| .mdl-list__item--two-line | Defines the List's Items as Two Line | Optional Two Line List Variant |
+| .mdl-list__item--three-line | Defines the List's Items  as a Three Line | Optional Three Line List Variant |
+| .mdl-list__item-primary-content | Defines the primary content sub-division |-|
+| .mdl-list__item-avatar | Defines the avatar sub-division |-|
+| .mdl-list__item-icon | Defines the icon sub-division |-|
+| .mdl-list__item-secondary-content | Defines the secondary content sub-division | requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |
+| .mdl-list__item-secondary-info | Defines the information sub-division |requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |
+| .mdl-list__item-secondary-action | Defines the Action sub-division | requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |
+| .mdl-list__item-text-body | Defines the Text Body sub-division | requires `.mdl-list__item--three-line` |
diff --git a/node_modules/material-design-lite/src/list/_list.scss b/node_modules/material-design-lite/src/list/_list.scss
new file mode 100644
index 0000000..980ef38
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/_list.scss
@@ -0,0 +1,157 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+
+.mdl-list {
+  display: block;
+  padding: $list-border 0;
+  list-style: none;
+}
+
+.mdl-list__item {
+  @include typo-subhead();
+  line-height: 1;
+  display: flex;
+  min-height: $list-min-height;
+  box-sizing: border-box;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  padding: $list-min-padding;
+  cursor: default;
+  color: $list-main-text-text-color;
+  overflow: hidden;
+
+  & .mdl-list__item-primary-content {
+    order: 0;
+    flex-grow: 2;
+    text-decoration: none;
+    box-sizing: border-box;
+    display: flex;
+    align-items: center;
+
+    & .mdl-list__item-icon {
+      margin-right: $list-icon-text-left-distance - $list-icon-size - $list-min-padding;
+    }
+
+    & .mdl-list__item-avatar {
+      margin-right: $list-avatar-text-left-distance - $list-avatar-size - $list-min-padding;
+    }
+  }
+
+  & .mdl-list__item-secondary-content {
+    display: flex;
+    flex-flow: column;
+    align-items: flex-end;
+    margin-left: $list-min-padding;
+
+    & .mdl-list__item-secondary-action label { display: inline; }
+    & .mdl-list__item-secondary-info {
+      @include typo-caption();
+      color: $list-supporting-text-text-color;
+    }
+    & .mdl-list__item-sub-header {
+      padding: 0 0 0 $list-min-padding;
+    }
+  }
+}
+
+.mdl-list__item-icon,
+.mdl-list__item-icon.material-icons {
+  height: $list-icon-size;
+  width: $list-icon-size;
+  font-size: $list-icon-size;
+  box-sizing: border-box;
+  color: $list-icon-color;
+}
+
+.mdl-list__item-avatar,
+.mdl-list__item-avatar.material-icons {
+  height: $list-avatar-size;
+  width: $list-avatar-size;
+  box-sizing: border-box;
+  border-radius: 50%;
+  // Set a background colour in case the user doesn't provide an image.
+  background-color: $list-icon-color;
+  // Set a font size and color in case the user provides a Material Icon.
+  font-size: $list-avatar-size;
+  color: $list-avatar-color;
+}
+
+.mdl-list__item--two-line {
+  height: $list-two-line-height;
+
+  & .mdl-list__item-primary-content {
+    height: $list-two-line-height - $list-min-padding - $list-bottom-padding;
+    line-height: 20px;
+    display: block;
+
+    & .mdl-list__item-avatar{
+      float: left;
+    }
+
+    & .mdl-list__item-icon {
+      float: left;
+      // Icons are aligned to center of text in a two line list.
+      margin-top:
+        ($list-two-line-height - $list-min-padding - $list-bottom-padding -
+         $list-icon-size) / 2;
+    }
+
+    & .mdl-list__item-secondary-content {
+      height: $list-two-line-height - $list-min-padding - $list-bottom-padding;
+    }
+
+    & .mdl-list__item-sub-title {
+      @include typo-body-1();
+      line-height: 18px;
+      color: $list-supporting-text-text-color;
+      display: block;
+      padding: 0;
+    }
+  }
+}
+
+.mdl-list__item--three-line {
+  height: $list-three-line-height;
+
+  & .mdl-list__item-primary-content {
+    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;
+    line-height: 20px;
+    display: block;
+
+    & .mdl-list__item-avatar,
+    & .mdl-list__item-icon {
+      float: left;
+    }
+  }
+
+  & .mdl-list__item-secondary-content {
+    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;
+  }
+
+  & .mdl-list__item-text-body {
+    @include typo-body-1();
+    line-height: 18px;
+    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;
+    color: $list-supporting-text-text-color;
+    display: block;
+    padding: 0;
+  }
+}
diff --git a/node_modules/material-design-lite/src/list/snippets/action.html b/node_modules/material-design-lite/src/list/snippets/action.html
new file mode 100644
index 0000000..62447cb
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/action.html
@@ -0,0 +1,32 @@
+<!-- List items with avatar and action -->
+<style>
+.demo-list-action {
+  width: 300px;
+}
+</style>
+
+<div class="demo-list-action mdl-list">
+  <div class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Bryan Cranston</span>
+    </span>
+    <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+  </div>
+  <div class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Aaron Paul</span>
+    </span>
+    <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+  </div>
+  <div class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Bob Odenkirk</span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+  </span>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/list/snippets/icon.html b/node_modules/material-design-lite/src/list/snippets/icon.html
new file mode 100644
index 0000000..fca89ab
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/icon.html
@@ -0,0 +1,27 @@
+<!-- Icon List -->
+<style>
+.demo-list-icon {
+  width: 300px;
+}
+</style>
+
+<ul class="demo-list-icon mdl-list">
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+    <i class="material-icons mdl-list__item-icon">person</i>
+    Bryan Cranston
+</span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+    <i class="material-icons mdl-list__item-icon">person</i>
+    Aaron Paul
+  </span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+    <i class="material-icons mdl-list__item-icon">person</i>
+    Bob Odenkirk
+  </span>
+  </li>
+</ul>
diff --git a/node_modules/material-design-lite/src/list/snippets/list-control.html b/node_modules/material-design-lite/src/list/snippets/list-control.html
new file mode 100644
index 0000000..dbbf312
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/list-control.html
@@ -0,0 +1,46 @@
+<!-- List with avatar and controls -->
+<style>
+.demo-list-control {
+  width: 300px;
+}
+
+.demo-list-radio {
+  display: inline;
+}
+</style>
+
+<ul class="demo-list-control mdl-list">
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons  mdl-list__item-avatar">person</i>
+      Bryan Cranston
+    </span>
+    <span class="mdl-list__item-secondary-action">
+      <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="list-checkbox-1">
+        <input type="checkbox" id="list-checkbox-1" class="mdl-checkbox__input" checked />
+      </label>
+    </span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons  mdl-list__item-avatar">person</i>
+      Aaron Paul
+    </span>
+    <span class="mdl-list__item-secondary-action">
+      <label class="demo-list-radio mdl-radio mdl-js-radio mdl-js-ripple-effect" for="list-option-1">
+        <input type="radio" id="list-option-1" class="mdl-radio__button" name="options" value="1" checked />
+      </label>
+    </span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons  mdl-list__item-avatar">person</i>
+      Bob Odenkirk
+    </span>
+    <span class="mdl-list__item-secondary-action">
+      <label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="list-switch-1">
+        <input type="checkbox" id="list-switch-1" class="mdl-switch__input" checked />
+      </label>
+    </span>
+  </li>
+</ul>
diff --git a/node_modules/material-design-lite/src/list/snippets/list-item.html b/node_modules/material-design-lite/src/list/snippets/list-item.html
new file mode 100644
index 0000000..635e41a
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/list-item.html
@@ -0,0 +1,24 @@
+<!-- Simple list -->
+<style>
+.demo-list-item {
+  width: 300px;
+}
+</style>
+
+<ul class="demo-list-item mdl-list">
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      Bryan Cranston
+    </span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      Aaron Paul
+    </span>
+  </li>
+  <li class="mdl-list__item">
+    <span class="mdl-list__item-primary-content">
+      Bob Odenkirk
+    </span>
+  </li>
+</ul>
diff --git a/node_modules/material-design-lite/src/list/snippets/three-line.html b/node_modules/material-design-lite/src/list/snippets/three-line.html
new file mode 100644
index 0000000..2a33d38
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/three-line.html
@@ -0,0 +1,48 @@
+<!-- Three Line List with secondary info and action -->
+<style>
+.demo-list-three {
+  width: 650px;
+}
+</style>
+
+<ul class="demo-list-three mdl-list">
+  <li class="mdl-list__item mdl-list__item--three-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Bryan Cranston</span>
+      <span class="mdl-list__item-text-body">
+        Bryan Cranston played the role of Walter in Breaking Bad. He is also known
+        for playing Hal in Malcom in the Middle.
+      </span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+  <li class="mdl-list__item mdl-list__item--three-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons  mdl-list__item-avatar">person</i>
+      <span>Aaron Paul</span>
+      <span class="mdl-list__item-text-body">
+        Aaron Paul played the role of Jesse in Breaking Bad. He also featured in
+        the "Need For Speed" Movie.
+      </span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+  <li class="mdl-list__item mdl-list__item--three-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons  mdl-list__item-avatar">person</i>
+      <span>Bob Odenkirk</span>
+      <span class="mdl-list__item-text-body">
+        Bob Odinkrik played the role of Saul in Breaking Bad. Due to public fondness for the
+        character, Bob stars in his own show now, called "Better Call Saul".
+      </span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+</ul>
diff --git a/node_modules/material-design-lite/src/list/snippets/two-line.html b/node_modules/material-design-lite/src/list/snippets/two-line.html
new file mode 100644
index 0000000..b130aba
--- /dev/null
+++ b/node_modules/material-design-lite/src/list/snippets/two-line.html
@@ -0,0 +1,40 @@
+<!-- Two Line List with secondary info and action -->
+<style>
+.demo-list-two {
+  width: 300px;
+}
+</style>
+
+<ul class="demo-list-two mdl-list">
+  <li class="mdl-list__item mdl-list__item--two-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Bryan Cranston</span>
+      <span class="mdl-list__item-sub-title">62 Episodes</span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <span class="mdl-list__item-secondary-info">Actor</span>
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+  <li class="mdl-list__item mdl-list__item--two-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Aaron Paul</span>
+      <span class="mdl-list__item-sub-title">62 Episodes</span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+  <li class="mdl-list__item mdl-list__item--two-line">
+    <span class="mdl-list__item-primary-content">
+      <i class="material-icons mdl-list__item-avatar">person</i>
+      <span>Bob Odenkirk</span>
+      <span class="mdl-list__item-sub-title">62 Episodes</span>
+    </span>
+    <span class="mdl-list__item-secondary-content">
+      <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a>
+    </span>
+  </li>
+</ul>
diff --git a/node_modules/material-design-lite/src/material-design-lite-grid.scss b/node_modules/material-design-lite/src/material-design-lite-grid.scss
new file mode 100644
index 0000000..060dad2
--- /dev/null
+++ b/node_modules/material-design-lite/src/material-design-lite-grid.scss
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Material Design Lite Grid*/
+
+@import "variables";
+@import "mixins";
+@import "grid/grid";
\ No newline at end of file
diff --git a/node_modules/material-design-lite/src/material-design-lite.scss b/node_modules/material-design-lite/src/material-design-lite.scss
new file mode 100644
index 0000000..512360e
--- /dev/null
+++ b/node_modules/material-design-lite/src/material-design-lite.scss
@@ -0,0 +1,54 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Material Design Lite */
+
+// Variables and mixins
+@import "variables";
+@import "mixins";
+
+// Resets and dependencies
+@import "resets/resets";
+@import "typography/typography";
+
+// Components
+@import "palette/palette";
+@import "ripple/ripple";
+@import "animation/animation";
+@import "badge/badge";
+@import "button/button";
+@import "card/card";
+@import "checkbox/checkbox";
+@import "chip/chip";
+@import "data-table/data-table";
+@import "dialog/dialog";
+@import "footer/mega_footer";
+@import "footer/mini_footer";
+@import "icon-toggle/icon-toggle";
+@import "list/list";
+@import "menu/menu";
+@import "progress/progress";
+@import "layout/layout";
+@import "radio/radio";
+@import "slider/slider";
+@import "snackbar/snackbar";
+@import "spinner/spinner";
+@import "switch/switch";
+@import "tabs/tabs";
+@import "textfield/textfield";
+@import "tooltip/tooltip";
+@import "shadow/shadow";
+@import "grid/grid";
diff --git a/node_modules/material-design-lite/src/mdlComponentHandler.js b/node_modules/material-design-lite/src/mdlComponentHandler.js
new file mode 100644
index 0000000..f532a98
--- /dev/null
+++ b/node_modules/material-design-lite/src/mdlComponentHandler.js
@@ -0,0 +1,503 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A component handler interface using the revealing module design pattern.
+ * More details on this design pattern here:
+ * https://github.com/jasonmayes/mdl-component-design-pattern
+ *
+ * @author Jason Mayes.
+ */
+/* exported componentHandler */
+
+// Pre-defining the componentHandler interface, for closure documentation and
+// static verification.
+var componentHandler = {
+  /**
+   * Searches existing DOM for elements of our component type and upgrades them
+   * if they have not already been upgraded.
+   *
+   * @param {string=} optJsClass the programatic name of the element class we
+   * need to create a new instance of.
+   * @param {string=} optCssClass the name of the CSS class elements of this
+   * type will have.
+   */
+  upgradeDom: function(optJsClass, optCssClass) {},
+  /**
+   * Upgrades a specific element rather than all in the DOM.
+   *
+   * @param {!Element} element The element we wish to upgrade.
+   * @param {string=} optJsClass Optional name of the class we want to upgrade
+   * the element to.
+   */
+  upgradeElement: function(element, optJsClass) {},
+  /**
+   * Upgrades a specific list of elements rather than all in the DOM.
+   *
+   * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements
+   * The elements we wish to upgrade.
+   */
+  upgradeElements: function(elements) {},
+  /**
+   * Upgrades all registered components found in the current DOM. This is
+   * automatically called on window load.
+   */
+  upgradeAllRegistered: function() {},
+  /**
+   * Allows user to be alerted to any upgrades that are performed for a given
+   * component type
+   *
+   * @param {string} jsClass The class name of the MDL component we wish
+   * to hook into for any upgrades performed.
+   * @param {function(!HTMLElement)} callback The function to call upon an
+   * upgrade. This function should expect 1 parameter - the HTMLElement which
+   * got upgraded.
+   */
+  registerUpgradedCallback: function(jsClass, callback) {},
+  /**
+   * Registers a class for future use and attempts to upgrade existing DOM.
+   *
+   * @param {componentHandler.ComponentConfigPublic} config the registration configuration
+   */
+  register: function(config) {},
+  /**
+   * Downgrade either a given node, an array of nodes, or a NodeList.
+   *
+   * @param {!Node|!Array<!Node>|!NodeList} nodes
+   */
+  downgradeElements: function(nodes) {}
+};
+
+componentHandler = (function() {
+  'use strict';
+
+  /** @type {!Array<componentHandler.ComponentConfig>} */
+  var registeredComponents_ = [];
+
+  /** @type {!Array<componentHandler.Component>} */
+  var createdComponents_ = [];
+
+  var componentConfigProperty_ = 'mdlComponentConfigInternal_';
+
+  /**
+   * Searches registered components for a class we are interested in using.
+   * Optionally replaces a match with passed object if specified.
+   *
+   * @param {string} name The name of a class we want to use.
+   * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.
+   * @return {!Object|boolean}
+   * @private
+   */
+  function findRegisteredClass_(name, optReplace) {
+    for (var i = 0; i < registeredComponents_.length; i++) {
+      if (registeredComponents_[i].className === name) {
+        if (typeof optReplace !== 'undefined') {
+          registeredComponents_[i] = optReplace;
+        }
+        return registeredComponents_[i];
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Returns an array of the classNames of the upgraded classes on the element.
+   *
+   * @param {!Element} element The element to fetch data from.
+   * @return {!Array<string>}
+   * @private
+   */
+  function getUpgradedListOfElement_(element) {
+    var dataUpgraded = element.getAttribute('data-upgraded');
+    // Use `['']` as default value to conform the `,name,name...` style.
+    return dataUpgraded === null ? [''] : dataUpgraded.split(',');
+  }
+
+  /**
+   * Returns true if the given element has already been upgraded for the given
+   * class.
+   *
+   * @param {!Element} element The element we want to check.
+   * @param {string} jsClass The class to check for.
+   * @returns {boolean}
+   * @private
+   */
+  function isElementUpgraded_(element, jsClass) {
+    var upgradedList = getUpgradedListOfElement_(element);
+    return upgradedList.indexOf(jsClass) !== -1;
+  }
+
+  /**
+   * Create an event object.
+   *
+   * @param {string} eventType The type name of the event.
+   * @param {boolean} bubbles Whether the event should bubble up the DOM.
+   * @param {boolean} cancelable Whether the event can be canceled.
+   * @returns {!Event}
+   */
+  function createEvent_(eventType, bubbles, cancelable) {
+    if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
+      return new CustomEvent(eventType, {
+        bubbles: bubbles,
+        cancelable: cancelable
+      });
+    } else {
+      var ev = document.createEvent('Events');
+      ev.initEvent(eventType, bubbles, cancelable);
+      return ev;
+    }
+  }
+
+  /**
+   * Searches existing DOM for elements of our component type and upgrades them
+   * if they have not already been upgraded.
+   *
+   * @param {string=} optJsClass the programatic name of the element class we
+   * need to create a new instance of.
+   * @param {string=} optCssClass the name of the CSS class elements of this
+   * type will have.
+   */
+  function upgradeDomInternal(optJsClass, optCssClass) {
+    if (typeof optJsClass === 'undefined' &&
+        typeof optCssClass === 'undefined') {
+      for (var i = 0; i < registeredComponents_.length; i++) {
+        upgradeDomInternal(registeredComponents_[i].className,
+            registeredComponents_[i].cssClass);
+      }
+    } else {
+      var jsClass = /** @type {string} */ (optJsClass);
+      if (typeof optCssClass === 'undefined') {
+        var registeredClass = findRegisteredClass_(jsClass);
+        if (registeredClass) {
+          optCssClass = registeredClass.cssClass;
+        }
+      }
+
+      var elements = document.querySelectorAll('.' + optCssClass);
+      for (var n = 0; n < elements.length; n++) {
+        upgradeElementInternal(elements[n], jsClass);
+      }
+    }
+  }
+
+  /**
+   * Upgrades a specific element rather than all in the DOM.
+   *
+   * @param {!Element} element The element we wish to upgrade.
+   * @param {string=} optJsClass Optional name of the class we want to upgrade
+   * the element to.
+   */
+  function upgradeElementInternal(element, optJsClass) {
+    // Verify argument type.
+    if (!(typeof element === 'object' && element instanceof Element)) {
+      throw new Error('Invalid argument provided to upgrade MDL element.');
+    }
+    // Allow upgrade to be canceled by canceling emitted event.
+    var upgradingEv = createEvent_('mdl-componentupgrading', true, true);
+    element.dispatchEvent(upgradingEv);
+    if (upgradingEv.defaultPrevented) {
+      return;
+    }
+
+    var upgradedList = getUpgradedListOfElement_(element);
+    var classesToUpgrade = [];
+    // If jsClass is not provided scan the registered components to find the
+    // ones matching the element's CSS classList.
+    if (!optJsClass) {
+      var classList = element.classList;
+      registeredComponents_.forEach(function(component) {
+        // Match CSS & Not to be upgraded & Not upgraded.
+        if (classList.contains(component.cssClass) &&
+            classesToUpgrade.indexOf(component) === -1 &&
+            !isElementUpgraded_(element, component.className)) {
+          classesToUpgrade.push(component);
+        }
+      });
+    } else if (!isElementUpgraded_(element, optJsClass)) {
+      classesToUpgrade.push(findRegisteredClass_(optJsClass));
+    }
+
+    // Upgrade the element for each classes.
+    for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {
+      registeredClass = classesToUpgrade[i];
+      if (registeredClass) {
+        // Mark element as upgraded.
+        upgradedList.push(registeredClass.className);
+        element.setAttribute('data-upgraded', upgradedList.join(','));
+        var instance = new registeredClass.classConstructor(element);
+        instance[componentConfigProperty_] = registeredClass;
+        createdComponents_.push(instance);
+        // Call any callbacks the user has registered with this component type.
+        for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {
+          registeredClass.callbacks[j](element);
+        }
+
+        if (registeredClass.widget) {
+          // Assign per element instance for control over API
+          element[registeredClass.className] = instance;
+        }
+      } else {
+        throw new Error(
+          'Unable to find a registered component for the given class.');
+      }
+
+      var upgradedEv = createEvent_('mdl-componentupgraded', true, false);
+      element.dispatchEvent(upgradedEv);
+    }
+  }
+
+  /**
+   * Upgrades a specific list of elements rather than all in the DOM.
+   *
+   * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements
+   * The elements we wish to upgrade.
+   */
+  function upgradeElementsInternal(elements) {
+    if (!Array.isArray(elements)) {
+      if (elements instanceof Element) {
+        elements = [elements];
+      } else {
+        elements = Array.prototype.slice.call(elements);
+      }
+    }
+    for (var i = 0, n = elements.length, element; i < n; i++) {
+      element = elements[i];
+      if (element instanceof HTMLElement) {
+        upgradeElementInternal(element);
+        if (element.children.length > 0) {
+          upgradeElementsInternal(element.children);
+        }
+      }
+    }
+  }
+
+  /**
+   * Registers a class for future use and attempts to upgrade existing DOM.
+   *
+   * @param {componentHandler.ComponentConfigPublic} config
+   */
+  function registerInternal(config) {
+    // In order to support both Closure-compiled and uncompiled code accessing
+    // this method, we need to allow for both the dot and array syntax for
+    // property access. You'll therefore see the `foo.bar || foo['bar']`
+    // pattern repeated across this method.
+    var widgetMissing = (typeof config.widget === 'undefined' &&
+        typeof config['widget'] === 'undefined');
+    var widget = true;
+
+    if (!widgetMissing) {
+      widget = config.widget || config['widget'];
+    }
+
+    var newConfig = /** @type {componentHandler.ComponentConfig} */ ({
+      classConstructor: config.constructor || config['constructor'],
+      className: config.classAsString || config['classAsString'],
+      cssClass: config.cssClass || config['cssClass'],
+      widget: widget,
+      callbacks: []
+    });
+
+    registeredComponents_.forEach(function(item) {
+      if (item.cssClass === newConfig.cssClass) {
+        throw new Error('The provided cssClass has already been registered: ' + item.cssClass);
+      }
+      if (item.className === newConfig.className) {
+        throw new Error('The provided className has already been registered');
+      }
+    });
+
+    if (config.constructor.prototype
+        .hasOwnProperty(componentConfigProperty_)) {
+      throw new Error(
+          'MDL component classes must not have ' + componentConfigProperty_ +
+          ' defined as a property.');
+    }
+
+    var found = findRegisteredClass_(config.classAsString, newConfig);
+
+    if (!found) {
+      registeredComponents_.push(newConfig);
+    }
+  }
+
+  /**
+   * Allows user to be alerted to any upgrades that are performed for a given
+   * component type
+   *
+   * @param {string} jsClass The class name of the MDL component we wish
+   * to hook into for any upgrades performed.
+   * @param {function(!HTMLElement)} callback The function to call upon an
+   * upgrade. This function should expect 1 parameter - the HTMLElement which
+   * got upgraded.
+   */
+  function registerUpgradedCallbackInternal(jsClass, callback) {
+    var regClass = findRegisteredClass_(jsClass);
+    if (regClass) {
+      regClass.callbacks.push(callback);
+    }
+  }
+
+  /**
+   * Upgrades all registered components found in the current DOM. This is
+   * automatically called on window load.
+   */
+  function upgradeAllRegisteredInternal() {
+    for (var n = 0; n < registeredComponents_.length; n++) {
+      upgradeDomInternal(registeredComponents_[n].className);
+    }
+  }
+
+  /**
+   * Check the component for the downgrade method.
+   * Execute if found.
+   * Remove component from createdComponents list.
+   *
+   * @param {?componentHandler.Component} component
+   */
+  function deconstructComponentInternal(component) {
+    if (component) {
+      var componentIndex = createdComponents_.indexOf(component);
+      createdComponents_.splice(componentIndex, 1);
+
+      var upgrades = component.element_.getAttribute('data-upgraded').split(',');
+      var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);
+      upgrades.splice(componentPlace, 1);
+      component.element_.setAttribute('data-upgraded', upgrades.join(','));
+
+      var ev = createEvent_('mdl-componentdowngraded', true, false);
+      component.element_.dispatchEvent(ev);
+    }
+  }
+
+  /**
+   * Downgrade either a given node, an array of nodes, or a NodeList.
+   *
+   * @param {!Node|!Array<!Node>|!NodeList} nodes
+   */
+  function downgradeNodesInternal(nodes) {
+    /**
+     * Auxiliary function to downgrade a single node.
+     * @param  {!Node} node the node to be downgraded
+     */
+    var downgradeNode = function(node) {
+      createdComponents_.filter(function(item) {
+        return item.element_ === node;
+      }).forEach(deconstructComponentInternal);
+    };
+    if (nodes instanceof Array || nodes instanceof NodeList) {
+      for (var n = 0; n < nodes.length; n++) {
+        downgradeNode(nodes[n]);
+      }
+    } else if (nodes instanceof Node) {
+      downgradeNode(nodes);
+    } else {
+      throw new Error('Invalid argument provided to downgrade MDL nodes.');
+    }
+  }
+
+  // Now return the functions that should be made public with their publicly
+  // facing names...
+  return {
+    upgradeDom: upgradeDomInternal,
+    upgradeElement: upgradeElementInternal,
+    upgradeElements: upgradeElementsInternal,
+    upgradeAllRegistered: upgradeAllRegisteredInternal,
+    registerUpgradedCallback: registerUpgradedCallbackInternal,
+    register: registerInternal,
+    downgradeElements: downgradeNodesInternal
+  };
+})();
+
+/**
+ * Describes the type of a registered component type managed by
+ * componentHandler. Provided for benefit of the Closure compiler.
+ *
+ * @typedef {{
+ *   constructor: Function,
+ *   classAsString: string,
+ *   cssClass: string,
+ *   widget: (string|boolean|undefined)
+ * }}
+ */
+componentHandler.ComponentConfigPublic;  // jshint ignore:line
+
+/**
+ * Describes the type of a registered component type managed by
+ * componentHandler. Provided for benefit of the Closure compiler.
+ *
+ * @typedef {{
+ *   constructor: !Function,
+ *   className: string,
+ *   cssClass: string,
+ *   widget: (string|boolean),
+ *   callbacks: !Array<function(!HTMLElement)>
+ * }}
+ */
+componentHandler.ComponentConfig;  // jshint ignore:line
+
+/**
+ * Created component (i.e., upgraded element) type as managed by
+ * componentHandler. Provided for benefit of the Closure compiler.
+ *
+ * @typedef {{
+ *   element_: !HTMLElement,
+ *   className: string,
+ *   classAsString: string,
+ *   cssClass: string,
+ *   widget: string
+ * }}
+ */
+componentHandler.Component;  // jshint ignore:line
+
+// Export all symbols, for the benefit of Closure compiler.
+// No effect on uncompiled code.
+componentHandler['upgradeDom'] = componentHandler.upgradeDom;
+componentHandler['upgradeElement'] = componentHandler.upgradeElement;
+componentHandler['upgradeElements'] = componentHandler.upgradeElements;
+componentHandler['upgradeAllRegistered'] =
+    componentHandler.upgradeAllRegistered;
+componentHandler['registerUpgradedCallback'] =
+    componentHandler.registerUpgradedCallback;
+componentHandler['register'] = componentHandler.register;
+componentHandler['downgradeElements'] = componentHandler.downgradeElements;
+window.componentHandler = componentHandler;
+window['componentHandler'] = componentHandler;
+
+window.addEventListener('load', function() {
+  'use strict';
+
+  /**
+   * Performs a "Cutting the mustard" test. If the browser supports the features
+   * tested, adds a mdl-js class to the <html> element. It then upgrades all MDL
+   * components requiring JavaScript.
+   */
+  if ('classList' in document.createElement('div') &&
+      'querySelector' in document &&
+      'addEventListener' in window && Array.prototype.forEach) {
+    document.documentElement.classList.add('mdl-js');
+    componentHandler.upgradeAllRegistered();
+  } else {
+    /**
+     * Dummy function to avoid JS errors.
+     */
+    componentHandler.upgradeElement = function() {};
+    /**
+     * Dummy function to avoid JS errors.
+     */
+    componentHandler.register = function() {};
+  }
+});
diff --git a/node_modules/material-design-lite/src/menu/README.md b/node_modules/material-design-lite/src/menu/README.md
new file mode 100755
index 0000000..42b07c6
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/README.md
@@ -0,0 +1,108 @@
+## Introduction
+
+The Material Design Lite (MDL) **menu** component is a user interface element that allows users to select one of a number of options. The selection typically results in an action initiation, a setting change, or other observable effect. Menu options are always presented in sets of two or more, and options may be programmatically enabled or disabled as required. The menu appears when the user is asked to choose among a series of options, and is usually dismissed after the choice is made.
+
+Menus are an established but non-standardized feature in user interfaces, and allow users to make choices that direct the activity, progress, or characteristics of software. Their design and use is an important factor in the overall user experience. See the menu component's [Material Design specifications page](http://www.google.com/design/spec/components/menus.html) for details.
+
+### To include an MDL **menu** component:
+
+> **Note:** The menu requires a non-static positioned parent element. Positioning options may not work properly if the menu is inside of a statically positioned node.
+
+&nbsp;1. Code a `<button>` element; this is the clickable toggle that will show and hide the menu options. Include an `id` attribute whose value will match the `for` (or `data-mdl-for`) attribute of the unordered list coded in the next step. Inside the button, code a `<i>` or `<span>` element to contain an icon of your choice.
+```html
+<button id="menu1">
+  <i></i>
+</button>
+```
+&nbsp;2. Code a `<ul>` unordered list element; this is the container that holds the options. Include a `for` attribute whose value matches the `id` attribute of the button element.
+```html
+<ul for="menu1">
+</ul>
+```
+&nbsp;3. Inside the unordered list, code one `<li>` element for each option. Include any desired attributes and values, such as an id or event handler, and add a text caption as appropriate.
+```html
+<ul for="menu1">
+  <li>Continue</li>
+  <li>Stop</li>
+  <li>Pause</li>
+</ul>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the button and span elements using the `class` attribute.
+```html
+<button id="menu1" class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+```
+&nbsp;5. Add one or more MDL classes, separated by spaces, to the unordered list and the list items using the `class` attribute.
+```html
+<ul class="mdl-menu mdl-js-menu" for="menu1">
+  <li class="mdl-menu__item">Continue</li>
+  <li class="mdl-menu__item">Stop</li>
+  <li class="mdl-menu__item">Pause</li>
+</ul>
+```
+
+The menu component is ready for use.
+
+#### Examples
+
+A menu with three options.
+```html
+<button id="menu-speed" class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<ul class="mdl-menu mdl-js-menu" for="menu-speed">
+  <li class="mdl-menu__item">Fast</li>
+  <li class="mdl-menu__item">Medium</li>
+  <li class="mdl-menu__item">Slow</li>
+</ul>
+```
+A menu with three options, with ripple effect on button and option links.
+```html
+<button id="menu-speed" class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<ul class="mdl-menu mdl-js-menu mdl-js-ripple-effect" for="menu-speed">
+  <li class="mdl-menu__item">Fast</li>
+  <li class="mdl-menu__item">Medium</li>
+  <li class="mdl-menu__item">Slow</li>
+</ul>
+```
+A menu with three options, the second of which is disabled by default.
+```html
+<button id="menu-speed" class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<ul class="mdl-menu mdl-js-menu" for="menu-speed">
+  <li class="mdl-menu__item">Fast</li>
+  <li class="mdl-menu__item" disabled>Medium</li>
+  <li class="mdl-menu__item">Slow</li>
+</ul>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the menu. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-button` | Defines button as an MDL component | Required on button element |
+| `mdl-js-button` | Assigns basic MDL behavior to button | Required on button element |
+| `mdl-button--icon` | Applies *icon* (small plain circular) display effect to button | Required on button element |
+| `material-icons` | Defines span as a material icon | Required on an inline element |
+| `mdl-menu` | Defines an unordered list container as an MDL component | Required on ul element |
+| `mdl-js-menu` | Assigns basic MDL behavior to menu | Required on ul element |
+| `mdl-menu__item` | Defines buttons as MDL menu options and assigns basic MDL behavior | Required on list item elements |
+| `mdl-menu__item--full-bleed-divider` | Modifies an item to have a full bleed divider between it and the next list item. | Optional on list item elements |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect to option links | Optional; goes on unordered list element |
+| `mdl-menu--top-left` | Positions menu above button, aligns left edge of menu with button  | Optional; goes on unordered list element |
+| (none) | Positions menu below button, aligns left edge of menu with button | Default |
+| `mdl-menu--top-right` | Positions menu above button, aligns right edge of menu with button | Optional; goes on unordered list element |
+| `mdl-menu--bottom-right` | Positions menu below button, aligns right edge of menu with button | Optional; goes on unordered list element |
+
+(1) The "more-vert" icon class is used here as an example. Other icons can be used by modifying the class name. For a list of available icons, see [this page](http://google.github.io/web-starter-kit/latest/styleguide/icons/demo.html); hover over an icon to see its class name.
+
+(2) The `i` or `span` element in "button"" element can be used interchangeably.
+
+>**Note:** Disabled versions of the menu options are provided, and are invoked with the standard HTML boolean attribute `disabled` or `data-mdl-disabled`. `<li class="mdl-menu__item" disabled>Medium</li>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/menu/_menu.scss b/node_modules/material-design-lite/src/menu/_menu.scss
new file mode 100644
index 0000000..bb56414
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/_menu.scss
@@ -0,0 +1,200 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-menu__container {
+  display: block;
+  margin: 0;
+  padding: 0;
+  border: none;
+  position: absolute;
+  overflow: visible;
+  height: 0;
+  width: 0;
+  visibility: hidden;
+  z-index: -1;
+
+  &.is-visible,
+  &.is-animating {
+    z-index: 999;
+    visibility: visible;
+  }
+}
+
+.mdl-menu__outline {
+  display: block;
+  background: $default-dropdown-bg-color;
+  margin: 0;
+  padding: 0;
+  border: none;
+  border-radius: 2px;
+  position: absolute;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  opacity: 0;
+  transform: scale(0);
+  transform-origin: 0 0;
+  @include shadow-2dp();
+  will-change: transform;
+  transition: transform $menu-expand-duration $animation-curve-default,
+      opacity $menu-fade-duration $animation-curve-default;
+  z-index: -1;
+
+  .mdl-menu__container.is-visible & {
+    opacity: 1;
+    transform: scale(1);
+    z-index: 999;
+  }
+
+  &.mdl-menu--bottom-right {
+    transform-origin: 100% 0;
+  }
+
+  &.mdl-menu--top-left {
+    transform-origin: 0 100%;
+  }
+
+  &.mdl-menu--top-right {
+    transform-origin: 100% 100%;
+  }
+}
+
+.mdl-menu {
+  position: absolute;
+  list-style: none;
+  top: 0;
+  left: 0;
+  height: auto;
+  width: auto;
+  min-width: 124px;
+  padding: 8px 0;
+  margin: 0;
+  opacity: 0;
+  clip: rect(0 0 0 0);
+  z-index: -1;
+
+  .mdl-menu__container.is-visible & {
+    opacity: 1;
+    z-index: 999;
+  }
+
+  &.is-animating {
+    transition: opacity $menu-fade-duration $animation-curve-default,
+        clip $menu-expand-duration $animation-curve-default;
+  }
+
+  &.mdl-menu--bottom-right {
+    left: auto;
+    right: 0;
+  }
+
+  &.mdl-menu--top-left {
+    top: auto;
+    bottom: 0;
+  }
+
+  &.mdl-menu--top-right {
+    top: auto;
+    left: auto;
+    bottom: 0;
+    right: 0;
+  }
+
+  &.mdl-menu--unaligned {
+    top: auto;
+    left: auto;
+  }
+}
+
+.mdl-menu__item {
+  display: block;
+  border: none;
+  color: $default-item-text-color;
+  background-color: transparent;
+  text-align: left;
+  margin: 0;
+  padding: 0 16px;
+  outline-color: $default-item-outline-color;
+  position: relative;
+  overflow: hidden;
+  @include typo-body-1();
+  text-decoration: none;
+  cursor: pointer;
+  height: 48px;
+  line-height: 48px;
+  white-space: nowrap;
+  opacity: 0;
+  transition: opacity $menu-fade-duration $animation-curve-default;
+  user-select: none;
+
+  .mdl-menu__container.is-visible & {
+    opacity: 1;
+  }
+
+  &::-moz-focus-inner {
+    border: 0;
+  }
+
+  &--full-bleed-divider {
+    border-bottom: 1px solid $default-item-divider-color;
+  }
+
+  &[disabled], &[data-mdl-disabled] {
+    color: $disabled-item-text-color;
+    background-color: transparent;
+    cursor: auto;
+
+    &:hover {
+      background-color: transparent;
+    }
+
+    &:focus {
+      background-color: transparent;
+    }
+
+    & .mdl-ripple {
+      background: transparent;
+    }
+  }
+
+  &:hover {
+    background-color: $default-item-hover-bg-color;
+  }
+
+  &:focus {
+    outline: none;
+    background-color: $default-item-focus-bg-color;
+  }
+
+  &:active {
+    background-color: $default-item-active-bg-color;
+  }
+}
+
+
+.mdl-menu__item--ripple-container {
+  display: block;
+  height: 100%;
+  left: 0px;
+  position: absolute;
+  top: 0px;
+  width: 100%;
+  z-index: 0;
+  overflow: hidden;
+}
diff --git a/node_modules/material-design-lite/src/menu/menu.js b/node_modules/material-design-lite/src/menu/menu.js
new file mode 100644
index 0000000..de5b3b9
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/menu.js
@@ -0,0 +1,482 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for dropdown MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialMenu = function MaterialMenu(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialMenu'] = MaterialMenu;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialMenu.prototype.Constant_ = {
+    // Total duration of the menu animation.
+    TRANSITION_DURATION_SECONDS: 0.3,
+    // The fraction of the total duration we want to use for menu item animations.
+    TRANSITION_DURATION_FRACTION: 0.8,
+    // How long the menu stays open after choosing an option (so the user can see
+    // the ripple).
+    CLOSE_TIMEOUT: 150
+  };
+
+  /**
+   * Keycodes, for code readability.
+   *
+   * @enum {number}
+   * @private
+   */
+  MaterialMenu.prototype.Keycodes_ = {
+    ENTER: 13,
+    ESCAPE: 27,
+    SPACE: 32,
+    UP_ARROW: 38,
+    DOWN_ARROW: 40
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialMenu.prototype.CssClasses_ = {
+    CONTAINER: 'mdl-menu__container',
+    OUTLINE: 'mdl-menu__outline',
+    ITEM: 'mdl-menu__item',
+    ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',
+    RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE: 'mdl-ripple',
+    // Statuses
+    IS_UPGRADED: 'is-upgraded',
+    IS_VISIBLE: 'is-visible',
+    IS_ANIMATING: 'is-animating',
+    // Alignment options
+    BOTTOM_LEFT: 'mdl-menu--bottom-left',  // This is the default.
+    BOTTOM_RIGHT: 'mdl-menu--bottom-right',
+    TOP_LEFT: 'mdl-menu--top-left',
+    TOP_RIGHT: 'mdl-menu--top-right',
+    UNALIGNED: 'mdl-menu--unaligned'
+  };
+
+  /**
+   * Initialize element.
+   */
+  MaterialMenu.prototype.init = function() {
+    if (this.element_) {
+      // Create container for the menu.
+      var container = document.createElement('div');
+      container.classList.add(this.CssClasses_.CONTAINER);
+      this.element_.parentElement.insertBefore(container, this.element_);
+      this.element_.parentElement.removeChild(this.element_);
+      container.appendChild(this.element_);
+      this.container_ = container;
+
+      // Create outline for the menu (shadow and background).
+      var outline = document.createElement('div');
+      outline.classList.add(this.CssClasses_.OUTLINE);
+      this.outline_ = outline;
+      container.insertBefore(outline, this.element_);
+
+      // Find the "for" element and bind events to it.
+      var forElId = this.element_.getAttribute('for') ||
+                      this.element_.getAttribute('data-mdl-for');
+      var forEl = null;
+      if (forElId) {
+        forEl = document.getElementById(forElId);
+        if (forEl) {
+          this.forElement_ = forEl;
+          forEl.addEventListener('click', this.handleForClick_.bind(this));
+          forEl.addEventListener('keydown',
+              this.handleForKeyboardEvent_.bind(this));
+        }
+      }
+
+      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);
+      this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);
+      this.boundItemClick_ = this.handleItemClick_.bind(this);
+      for (var i = 0; i < items.length; i++) {
+        // Add a listener to each menu item.
+        items[i].addEventListener('click', this.boundItemClick_);
+        // Add a tab index to each menu item.
+        items[i].tabIndex = '-1';
+        // Add a keyboard listener to each menu item.
+        items[i].addEventListener('keydown', this.boundItemKeydown_);
+      }
+
+      // Add ripple classes to each item, if the user has enabled ripples.
+      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {
+        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+
+        for (i = 0; i < items.length; i++) {
+          var item = items[i];
+
+          var rippleContainer = document.createElement('span');
+          rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);
+
+          var ripple = document.createElement('span');
+          ripple.classList.add(this.CssClasses_.RIPPLE);
+          rippleContainer.appendChild(ripple);
+
+          item.appendChild(rippleContainer);
+          item.classList.add(this.CssClasses_.RIPPLE_EFFECT);
+        }
+      }
+
+      // Copy alignment classes to the container, so the outline can use them.
+      if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {
+        this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);
+      }
+      if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {
+        this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);
+      }
+      if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {
+        this.outline_.classList.add(this.CssClasses_.TOP_LEFT);
+      }
+      if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {
+        this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);
+      }
+      if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {
+        this.outline_.classList.add(this.CssClasses_.UNALIGNED);
+      }
+
+      container.classList.add(this.CssClasses_.IS_UPGRADED);
+    }
+  };
+
+  /**
+   * Handles a click on the "for" element, by positioning the menu and then
+   * toggling it.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialMenu.prototype.handleForClick_ = function(evt) {
+    if (this.element_ && this.forElement_) {
+      var rect = this.forElement_.getBoundingClientRect();
+      var forRect = this.forElement_.parentElement.getBoundingClientRect();
+
+      if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {
+        // Do not position the menu automatically. Requires the developer to
+        // manually specify position.
+      } else if (this.element_.classList.contains(
+          this.CssClasses_.BOTTOM_RIGHT)) {
+        // Position below the "for" element, aligned to its right.
+        this.container_.style.right = (forRect.right - rect.right) + 'px';
+        this.container_.style.top =
+            this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';
+      } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {
+        // Position above the "for" element, aligned to its left.
+        this.container_.style.left = this.forElement_.offsetLeft + 'px';
+        this.container_.style.bottom = (forRect.bottom - rect.top) + 'px';
+      } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {
+        // Position above the "for" element, aligned to its right.
+        this.container_.style.right = (forRect.right - rect.right) + 'px';
+        this.container_.style.bottom = (forRect.bottom - rect.top) + 'px';
+      } else {
+        // Default: position below the "for" element, aligned to its left.
+        this.container_.style.left = this.forElement_.offsetLeft + 'px';
+        this.container_.style.top =
+            this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';
+      }
+    }
+
+    this.toggle(evt);
+  };
+
+  /**
+   * Handles a keyboard event on the "for" element.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialMenu.prototype.handleForKeyboardEvent_ = function(evt) {
+    if (this.element_ && this.container_ && this.forElement_) {
+      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM +
+        ':not([disabled])');
+
+      if (items && items.length > 0 &&
+          this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {
+        if (evt.keyCode === this.Keycodes_.UP_ARROW) {
+          evt.preventDefault();
+          items[items.length - 1].focus();
+        } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {
+          evt.preventDefault();
+          items[0].focus();
+        }
+      }
+    }
+  };
+
+  /**
+   * Handles a keyboard event on an item.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialMenu.prototype.handleItemKeyboardEvent_ = function(evt) {
+    if (this.element_ && this.container_) {
+      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM +
+        ':not([disabled])');
+
+      if (items && items.length > 0 &&
+          this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {
+        var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);
+
+        if (evt.keyCode === this.Keycodes_.UP_ARROW) {
+          evt.preventDefault();
+          if (currentIndex > 0) {
+            items[currentIndex - 1].focus();
+          } else {
+            items[items.length - 1].focus();
+          }
+        } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {
+          evt.preventDefault();
+          if (items.length > currentIndex + 1) {
+            items[currentIndex + 1].focus();
+          } else {
+            items[0].focus();
+          }
+        } else if (evt.keyCode === this.Keycodes_.SPACE ||
+              evt.keyCode === this.Keycodes_.ENTER) {
+          evt.preventDefault();
+          // Send mousedown and mouseup to trigger ripple.
+          var e = new MouseEvent('mousedown');
+          evt.target.dispatchEvent(e);
+          e = new MouseEvent('mouseup');
+          evt.target.dispatchEvent(e);
+          // Send click.
+          evt.target.click();
+        } else if (evt.keyCode === this.Keycodes_.ESCAPE) {
+          evt.preventDefault();
+          this.hide();
+        }
+      }
+    }
+  };
+
+  /**
+   * Handles a click event on an item.
+   *
+   * @param {Event} evt The event that fired.
+   * @private
+   */
+  MaterialMenu.prototype.handleItemClick_ = function(evt) {
+    if (evt.target.hasAttribute('disabled')) {
+      evt.stopPropagation();
+    } else {
+      // Wait some time before closing menu, so the user can see the ripple.
+      this.closing_ = true;
+      window.setTimeout(function(evt) {
+        this.hide();
+        this.closing_ = false;
+      }.bind(this), /** @type {number} */ (this.Constant_.CLOSE_TIMEOUT));
+    }
+  };
+
+  /**
+   * Calculates the initial clip (for opening the menu) or final clip (for closing
+   * it), and applies it. This allows us to animate from or to the correct point,
+   * that is, the point it's aligned to in the "for" element.
+   *
+   * @param {number} height Height of the clip rectangle
+   * @param {number} width Width of the clip rectangle
+   * @private
+   */
+  MaterialMenu.prototype.applyClip_ = function(height, width) {
+    if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {
+      // Do not clip.
+      this.element_.style.clip = '';
+    } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {
+      // Clip to the top right corner of the menu.
+      this.element_.style.clip =
+          'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';
+    } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {
+      // Clip to the bottom left corner of the menu.
+      this.element_.style.clip =
+          'rect(' + height + 'px 0 ' + height + 'px 0)';
+    } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {
+      // Clip to the bottom right corner of the menu.
+      this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' +
+          height + 'px ' + width + 'px)';
+    } else {
+      // Default: do not clip (same as clipping to the top left corner).
+      this.element_.style.clip = '';
+    }
+  };
+
+  /**
+   * Cleanup function to remove animation listeners.
+   *
+   * @param {Event} evt
+   * @private
+   */
+
+  MaterialMenu.prototype.removeAnimationEndListener_ = function(evt) {
+    evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);
+  };
+
+  /**
+   * Adds an event listener to clean up after the animation ends.
+   *
+   * @private
+   */
+  MaterialMenu.prototype.addAnimationEndListener_ = function() {
+    this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);
+    this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);
+  };
+
+  /**
+   * Displays the menu.
+   *
+   * @public
+   */
+  MaterialMenu.prototype.show = function(evt) {
+    if (this.element_ && this.container_ && this.outline_) {
+      // Measure the inner element.
+      var height = this.element_.getBoundingClientRect().height;
+      var width = this.element_.getBoundingClientRect().width;
+
+      // Apply the inner element's size to the container and outline.
+      this.container_.style.width = width + 'px';
+      this.container_.style.height = height + 'px';
+      this.outline_.style.width = width + 'px';
+      this.outline_.style.height = height + 'px';
+
+      var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS *
+          this.Constant_.TRANSITION_DURATION_FRACTION;
+
+      // Calculate transition delays for individual menu items, so that they fade
+      // in one at a time.
+      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);
+      for (var i = 0; i < items.length; i++) {
+        var itemDelay = null;
+        if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ||
+            this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {
+          itemDelay = ((height - items[i].offsetTop - items[i].offsetHeight) /
+              height * transitionDuration) + 's';
+        } else {
+          itemDelay = (items[i].offsetTop / height * transitionDuration) + 's';
+        }
+        items[i].style.transitionDelay = itemDelay;
+      }
+
+      // Apply the initial clip to the text before we start animating.
+      this.applyClip_(height, width);
+
+      // Wait for the next frame, turn on animation, and apply the final clip.
+      // Also make it visible. This triggers the transitions.
+      window.requestAnimationFrame(function() {
+        this.element_.classList.add(this.CssClasses_.IS_ANIMATING);
+        this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';
+        this.container_.classList.add(this.CssClasses_.IS_VISIBLE);
+      }.bind(this));
+
+      // Clean up after the animation is complete.
+      this.addAnimationEndListener_();
+
+      // Add a click listener to the document, to close the menu.
+      var callback = function(e) {
+        // Check to see if the document is processing the same event that
+        // displayed the menu in the first place. If so, do nothing.
+        // Also check to see if the menu is in the process of closing itself, and
+        // do nothing in that case.
+        // Also check if the clicked element is a menu item
+        // if so, do nothing.
+        if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {
+          document.removeEventListener('click', callback);
+          this.hide();
+        }
+      }.bind(this);
+      document.addEventListener('click', callback);
+    }
+  };
+  MaterialMenu.prototype['show'] = MaterialMenu.prototype.show;
+
+  /**
+   * Hides the menu.
+   *
+   * @public
+   */
+  MaterialMenu.prototype.hide = function() {
+    if (this.element_ && this.container_ && this.outline_) {
+      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);
+
+      // Remove all transition delays; menu items fade out concurrently.
+      for (var i = 0; i < items.length; i++) {
+        items[i].style.removeProperty('transition-delay');
+      }
+
+      // Measure the inner element.
+      var rect = this.element_.getBoundingClientRect();
+      var height = rect.height;
+      var width = rect.width;
+
+      // Turn on animation, and apply the final clip. Also make invisible.
+      // This triggers the transitions.
+      this.element_.classList.add(this.CssClasses_.IS_ANIMATING);
+      this.applyClip_(height, width);
+      this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);
+
+      // Clean up after the animation is complete.
+      this.addAnimationEndListener_();
+    }
+  };
+  MaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;
+
+  /**
+   * Displays or hides the menu, depending on current state.
+   *
+   * @public
+   */
+  MaterialMenu.prototype.toggle = function(evt) {
+    if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {
+      this.hide();
+    } else {
+      this.show(evt);
+    }
+  };
+  MaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialMenu,
+    classAsString: 'MaterialMenu',
+    cssClass: 'mdl-js-menu',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/menu/snippets/codepen-lower-buttons.css b/node_modules/material-design-lite/src/menu/snippets/codepen-lower-buttons.css
new file mode 100644
index 0000000..ce22b7c
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/codepen-lower-buttons.css
@@ -0,0 +1,3 @@
+#demo-menu-lower-left {
+  margin-left: 40%;
+}
diff --git a/node_modules/material-design-lite/src/menu/snippets/codepen-top-buttons.css b/node_modules/material-design-lite/src/menu/snippets/codepen-top-buttons.css
new file mode 100644
index 0000000..9cd7e66
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/codepen-top-buttons.css
@@ -0,0 +1,8 @@
+#demo-menu-top-left {
+  margin-left: 40%;
+}
+
+#demo-menu-top-left,
+#demo-menu-top-right {
+  margin-top: 250px;
+}
diff --git a/node_modules/material-design-lite/src/menu/snippets/lower-left-demo.html b/node_modules/material-design-lite/src/menu/snippets/lower-left-demo.html
new file mode 100644
index 0000000..ee3b3fc
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/lower-left-demo.html
@@ -0,0 +1,25 @@
+<style>
+  .demo-menu.demo-menu__lower-left .container {
+    position: relative;
+    width: 200px;
+  }
+  .demo-menu.demo-menu__lower-left .background {
+    background: white;
+    height: 148px;
+    width: 100%;
+  }
+  .demo-menu.demo-menu__lower-left .bar {
+    box-sizing: border-box;
+    background: #3F51B5;
+    color: white;
+    width: 100%;
+    padding: 16px;
+  }
+</style>
+
+<div class="container mdl-shadow--2dp">
+  <div class="bar">
+    {% include "lower-left.html" %}
+  </div>
+  <div class="background"></div>
+</div>
diff --git a/node_modules/material-design-lite/src/menu/snippets/lower-left.html b/node_modules/material-design-lite/src/menu/snippets/lower-left.html
new file mode 100644
index 0000000..71bc922
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/lower-left.html
@@ -0,0 +1,13 @@
+<!-- Left aligned menu below button -->
+<button id="demo-menu-lower-left"
+        class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+
+<ul class="mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect"
+    for="demo-menu-lower-left">
+  <li class="mdl-menu__item">Some Action</li>
+  <li class="mdl-menu__item mdl-menu__item--full-bleed-divider">Another Action</li>
+  <li disabled class="mdl-menu__item">Disabled Action</li>
+  <li class="mdl-menu__item">Yet Another Action</li>
+</ul>
diff --git a/node_modules/material-design-lite/src/menu/snippets/lower-right-demo.html b/node_modules/material-design-lite/src/menu/snippets/lower-right-demo.html
new file mode 100644
index 0000000..d8ad651
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/lower-right-demo.html
@@ -0,0 +1,34 @@
+<style>
+  .demo-menu.demo-menu__lower-right .container {
+    position: relative;
+    width: 200px;
+  }
+  .demo-menu.demo-menu__lower-right .background {
+    background: white;
+    height: 148px;
+    width: 100%;
+  }
+  .demo-menu.demo-menu__lower-right .bar {
+    box-sizing: border-box;
+    position: relative;
+    background: #3F51B5;
+    color: white;
+    height: 64px;
+    width: 100%;
+    padding: 16px;
+  }
+  .demo-menu.demo-menu__lower-right .wrapper {
+    box-sizing: border-box;
+    position: absolute;
+    right: 16px;
+  }
+</style>
+
+<div class="container mdl-shadow--2dp">
+  <div class="bar">
+    <div class="wrapper">
+      {% include "lower-right.html" %}
+    </div>
+  </div>
+  <div class="background"></div>
+</div>
diff --git a/node_modules/material-design-lite/src/menu/snippets/lower-right.html b/node_modules/material-design-lite/src/menu/snippets/lower-right.html
new file mode 100644
index 0000000..1ce8f9c
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/lower-right.html
@@ -0,0 +1,13 @@
+<!-- Right aligned menu below button -->
+<button id="demo-menu-lower-right"
+        class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+
+<ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect"
+    for="demo-menu-lower-right">
+  <li class="mdl-menu__item">Some Action</li>
+  <li class="mdl-menu__item">Another Action</li>
+  <li disabled class="mdl-menu__item">Disabled Action</li>
+  <li class="mdl-menu__item">Yet Another Action</li>
+</ul>
diff --git a/node_modules/material-design-lite/src/menu/snippets/top-left-demo.html b/node_modules/material-design-lite/src/menu/snippets/top-left-demo.html
new file mode 100644
index 0000000..3ad0e33
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/top-left-demo.html
@@ -0,0 +1,25 @@
+<style>
+  .demo-menu.demo-menu__top-left .container {
+    position: relative;
+    width: 200px;
+  }
+  .demo-menu.demo-menu__top-left .background {
+    background: white;
+    height: 148px;
+    width: 100%;
+  }
+  .demo-menu.demo-menu__top-left .bar {
+    box-sizing: border-box;
+    background: #3F51B5;
+    color: white;
+    width: 100%;
+    padding: 16px;
+  }
+</style>
+
+<div class="container mdl-shadow--2dp">
+  <div class="background"></div>
+  <div class="bar">
+    {% include "top-left.html" %}
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/menu/snippets/top-left.html b/node_modules/material-design-lite/src/menu/snippets/top-left.html
new file mode 100644
index 0000000..19a38aa
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/top-left.html
@@ -0,0 +1,13 @@
+<!-- Left aligned menu on top of button  -->
+<button id="demo-menu-top-left"
+        class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+
+<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect"
+    data-mdl-for="demo-menu-top-left">
+  <li class="mdl-menu__item">Some Action</li>
+  <li class="mdl-menu__item">Another Action</li>
+  <li disabled class="mdl-menu__item">Disabled Action</li>
+  <li class="mdl-menu__item">Yet Another Action</li>
+</ul>
diff --git a/node_modules/material-design-lite/src/menu/snippets/top-right-demo.html b/node_modules/material-design-lite/src/menu/snippets/top-right-demo.html
new file mode 100644
index 0000000..6087bff
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/top-right-demo.html
@@ -0,0 +1,34 @@
+<style>
+  .demo-menu.demo-menu__top-right .container {
+    position: relative;
+    width: 200px;
+  }
+  .demo-menu.demo-menu__top-right .background {
+    background: white;
+    height: 148px;
+    width: 100%;
+  }
+  .demo-menu.demo-menu__top-right .bar {
+    box-sizing: border-box;
+    position: relative;
+    background: #3F51B5;
+    color: white;
+    height: 64px;
+    width: 100%;
+    padding: 16px;
+  }
+  .demo-menu.demo-menu__top-right .wrapper {
+    box-sizing: border-box;
+    position: absolute;
+    right: 16px;
+  }
+</style>
+
+<div class="container mdl-shadow--2dp">
+  <div class="background"></div>
+  <div class="bar">
+    <div class="wrapper">
+      {% include "top-right.html" %}
+    </div>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/menu/snippets/top-right.html b/node_modules/material-design-lite/src/menu/snippets/top-right.html
new file mode 100644
index 0000000..803668e
--- /dev/null
+++ b/node_modules/material-design-lite/src/menu/snippets/top-right.html
@@ -0,0 +1,13 @@
+<!-- Right aligned menu on top of button  -->
+<button id="demo-menu-top-right"
+        class="mdl-button mdl-js-button mdl-button--icon">
+  <i class="material-icons">more_vert</i>
+</button>
+
+<ul class="mdl-menu mdl-menu--top-right mdl-js-menu mdl-js-ripple-effect"
+    data-mdl-for="demo-menu-top-right">
+  <li class="mdl-menu__item">Some Action</li>
+  <li class="mdl-menu__item">Another Action</li>
+  <li disabled class="mdl-menu__item">Disabled Action</li>
+  <li class="mdl-menu__item">Yet Another Action</li>
+</ul>
diff --git a/node_modules/material-design-lite/src/palette/_palette.scss b/node_modules/material-design-lite/src/palette/_palette.scss
new file mode 100644
index 0000000..ffbcdf9
--- /dev/null
+++ b/node_modules/material-design-lite/src/palette/_palette.scss
@@ -0,0 +1,2303 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+@if $trim-color-classes == false {
+  // Red
+
+  .mdl-color-text--red {
+    color: unquote("rgb(#{$palette-red-500})") !important;
+  }
+
+  .mdl-color--red {
+    background-color: unquote("rgb(#{$palette-red-500})") !important;
+  }
+
+  .mdl-color-text--red-50 {
+    color: unquote("rgb(#{$palette-red-50})") !important;
+  }
+
+  .mdl-color--red-50 {
+    background-color: unquote("rgb(#{$palette-red-50})") !important;
+  }
+
+  .mdl-color-text--red-100 {
+    color: unquote("rgb(#{$palette-red-100})") !important;
+  }
+
+  .mdl-color--red-100 {
+    background-color: unquote("rgb(#{$palette-red-100})") !important;
+  }
+
+  .mdl-color-text--red-200 {
+    color: unquote("rgb(#{$palette-red-200})") !important;
+  }
+
+  .mdl-color--red-200 {
+    background-color: unquote("rgb(#{$palette-red-200})") !important;
+  }
+
+  .mdl-color-text--red-300 {
+    color: unquote("rgb(#{$palette-red-300})") !important;
+  }
+
+  .mdl-color--red-300 {
+    background-color: unquote("rgb(#{$palette-red-300})") !important;
+  }
+
+  .mdl-color-text--red-400 {
+    color: unquote("rgb(#{$palette-red-400})") !important;
+  }
+
+  .mdl-color--red-400 {
+    background-color: unquote("rgb(#{$palette-red-400})") !important;
+  }
+
+  .mdl-color-text--red-500 {
+    color: unquote("rgb(#{$palette-red-500})") !important;
+  }
+
+  .mdl-color--red-500 {
+    background-color: unquote("rgb(#{$palette-red-500})") !important;
+  }
+
+  .mdl-color-text--red-600 {
+    color: unquote("rgb(#{$palette-red-600})") !important;
+  }
+
+  .mdl-color--red-600 {
+    background-color: unquote("rgb(#{$palette-red-600})") !important;
+  }
+
+  .mdl-color-text--red-700 {
+    color: unquote("rgb(#{$palette-red-700})") !important;
+  }
+
+  .mdl-color--red-700 {
+    background-color: unquote("rgb(#{$palette-red-700})") !important;
+  }
+
+  .mdl-color-text--red-800 {
+    color: unquote("rgb(#{$palette-red-800})") !important;
+  }
+
+  .mdl-color--red-800 {
+    background-color: unquote("rgb(#{$palette-red-800})") !important;
+  }
+
+  .mdl-color-text--red-900 {
+    color: unquote("rgb(#{$palette-red-900})") !important;
+  }
+
+  .mdl-color--red-900 {
+    background-color: unquote("rgb(#{$palette-red-900})") !important;
+  }
+
+  .mdl-color-text--red-A100 {
+    color: unquote("rgb(#{$palette-red-A100})") !important;
+  }
+
+  .mdl-color--red-A100 {
+    background-color: unquote("rgb(#{$palette-red-A100})") !important;
+  }
+
+  .mdl-color-text--red-A200 {
+    color: unquote("rgb(#{$palette-red-A200})") !important;
+  }
+
+  .mdl-color--red-A200 {
+    background-color: unquote("rgb(#{$palette-red-A200})") !important;
+  }
+
+  .mdl-color-text--red-A400 {
+    color: unquote("rgb(#{$palette-red-A400})") !important;
+  }
+
+  .mdl-color--red-A400 {
+    background-color: unquote("rgb(#{$palette-red-A400})") !important;
+  }
+
+  .mdl-color-text--red-A700 {
+    color: unquote("rgb(#{$palette-red-A700})") !important;
+  }
+
+  .mdl-color--red-A700 {
+    background-color: unquote("rgb(#{$palette-red-A700})") !important;
+  }
+
+  // Pink
+
+  .mdl-color-text--pink {
+    color: unquote("rgb(#{$palette-pink-500})") !important;
+  }
+
+  .mdl-color--pink {
+    background-color: unquote("rgb(#{$palette-pink-500})") !important;
+  }
+
+  .mdl-color-text--pink-50 {
+    color: unquote("rgb(#{$palette-pink-50})") !important;
+  }
+
+  .mdl-color--pink-50 {
+    background-color: unquote("rgb(#{$palette-pink-50})") !important;
+  }
+
+  .mdl-color-text--pink-100 {
+    color: unquote("rgb(#{$palette-pink-100})") !important;
+  }
+
+  .mdl-color--pink-100 {
+    background-color: unquote("rgb(#{$palette-pink-100})") !important;
+  }
+
+  .mdl-color-text--pink-200 {
+    color: unquote("rgb(#{$palette-pink-200})") !important;
+  }
+
+  .mdl-color--pink-200 {
+    background-color: unquote("rgb(#{$palette-pink-200})") !important;
+  }
+
+  .mdl-color-text--pink-300 {
+    color: unquote("rgb(#{$palette-pink-300})") !important;
+  }
+
+  .mdl-color--pink-300 {
+    background-color: unquote("rgb(#{$palette-pink-300})") !important;
+  }
+
+  .mdl-color-text--pink-400 {
+    color: unquote("rgb(#{$palette-pink-400})") !important;
+  }
+
+  .mdl-color--pink-400 {
+    background-color: unquote("rgb(#{$palette-pink-400})") !important;
+  }
+
+  .mdl-color-text--pink-500 {
+    color: unquote("rgb(#{$palette-pink-500})") !important;
+  }
+
+  .mdl-color--pink-500 {
+    background-color: unquote("rgb(#{$palette-pink-500})") !important;
+  }
+
+  .mdl-color-text--pink-600 {
+    color: unquote("rgb(#{$palette-pink-600})") !important;
+  }
+
+  .mdl-color--pink-600 {
+    background-color: unquote("rgb(#{$palette-pink-600})") !important;
+  }
+
+  .mdl-color-text--pink-700 {
+    color: unquote("rgb(#{$palette-pink-700})") !important;
+  }
+
+  .mdl-color--pink-700 {
+    background-color: unquote("rgb(#{$palette-pink-700})") !important;
+  }
+
+  .mdl-color-text--pink-800 {
+    color: unquote("rgb(#{$palette-pink-800})") !important;
+  }
+
+  .mdl-color--pink-800 {
+    background-color: unquote("rgb(#{$palette-pink-800})") !important;
+  }
+
+  .mdl-color-text--pink-900 {
+    color: unquote("rgb(#{$palette-pink-900})") !important;
+  }
+
+  .mdl-color--pink-900 {
+    background-color: unquote("rgb(#{$palette-pink-900})") !important;
+  }
+
+  .mdl-color-text--pink-A100 {
+    color: unquote("rgb(#{$palette-pink-A100})") !important;
+  }
+
+  .mdl-color--pink-A100 {
+    background-color: unquote("rgb(#{$palette-pink-A100})") !important;
+  }
+
+  .mdl-color-text--pink-A200 {
+    color: unquote("rgb(#{$palette-pink-A200})") !important;
+  }
+
+  .mdl-color--pink-A200 {
+    background-color: unquote("rgb(#{$palette-pink-A200})") !important;
+  }
+
+  .mdl-color-text--pink-A400 {
+    color: unquote("rgb(#{$palette-pink-A400})") !important;
+  }
+
+  .mdl-color--pink-A400 {
+    background-color: unquote("rgb(#{$palette-pink-A400})") !important;
+  }
+
+  .mdl-color-text--pink-A700 {
+    color: unquote("rgb(#{$palette-pink-A700})") !important;
+  }
+
+  .mdl-color--pink-A700 {
+    background-color: unquote("rgb(#{$palette-pink-A700})") !important;
+  }
+
+  // Purple
+
+  .mdl-color-text--purple {
+    color: unquote("rgb(#{$palette-purple-500})") !important;
+  }
+
+  .mdl-color--purple {
+    background-color: unquote("rgb(#{$palette-purple-500})") !important;
+  }
+
+  .mdl-color-text--purple-50 {
+    color: unquote("rgb(#{$palette-purple-50})") !important;
+  }
+
+  .mdl-color--purple-50 {
+    background-color: unquote("rgb(#{$palette-purple-50})") !important;
+  }
+
+  .mdl-color-text--purple-100 {
+    color: unquote("rgb(#{$palette-purple-100})") !important;
+  }
+
+  .mdl-color--purple-100 {
+    background-color: unquote("rgb(#{$palette-purple-100})") !important;
+  }
+
+  .mdl-color-text--purple-200 {
+    color: unquote("rgb(#{$palette-purple-200})") !important;
+  }
+
+  .mdl-color--purple-200 {
+    background-color: unquote("rgb(#{$palette-purple-200})") !important;
+  }
+
+  .mdl-color-text--purple-300 {
+    color: unquote("rgb(#{$palette-purple-300})") !important;
+  }
+
+  .mdl-color--purple-300 {
+    background-color: unquote("rgb(#{$palette-purple-300})") !important;
+  }
+
+  .mdl-color-text--purple-400 {
+    color: unquote("rgb(#{$palette-purple-400})") !important;
+  }
+
+  .mdl-color--purple-400 {
+    background-color: unquote("rgb(#{$palette-purple-400})") !important;
+  }
+
+  .mdl-color-text--purple-500 {
+    color: unquote("rgb(#{$palette-purple-500})") !important;
+  }
+
+  .mdl-color--purple-500 {
+    background-color: unquote("rgb(#{$palette-purple-500})") !important;
+  }
+
+  .mdl-color-text--purple-600 {
+    color: unquote("rgb(#{$palette-purple-600})") !important;
+  }
+
+  .mdl-color--purple-600 {
+    background-color: unquote("rgb(#{$palette-purple-600})") !important;
+  }
+
+  .mdl-color-text--purple-700 {
+    color: unquote("rgb(#{$palette-purple-700})") !important;
+  }
+
+  .mdl-color--purple-700 {
+    background-color: unquote("rgb(#{$palette-purple-700})") !important;
+  }
+
+  .mdl-color-text--purple-800 {
+    color: unquote("rgb(#{$palette-purple-800})") !important;
+  }
+
+  .mdl-color--purple-800 {
+    background-color: unquote("rgb(#{$palette-purple-800})") !important;
+  }
+
+  .mdl-color-text--purple-900 {
+    color: unquote("rgb(#{$palette-purple-900})") !important;
+  }
+
+  .mdl-color--purple-900 {
+    background-color: unquote("rgb(#{$palette-purple-900})") !important;
+  }
+
+  .mdl-color-text--purple-A100 {
+    color: unquote("rgb(#{$palette-purple-A100})") !important;
+  }
+
+  .mdl-color--purple-A100 {
+    background-color: unquote("rgb(#{$palette-purple-A100})") !important;
+  }
+
+  .mdl-color-text--purple-A200 {
+    color: unquote("rgb(#{$palette-purple-A200})") !important;
+  }
+
+  .mdl-color--purple-A200 {
+    background-color: unquote("rgb(#{$palette-purple-A200})") !important;
+  }
+
+  .mdl-color-text--purple-A400 {
+    color: unquote("rgb(#{$palette-purple-A400})") !important;
+  }
+
+  .mdl-color--purple-A400 {
+    background-color: unquote("rgb(#{$palette-purple-A400})") !important;
+  }
+
+  .mdl-color-text--purple-A700 {
+    color: unquote("rgb(#{$palette-purple-A700})") !important;
+  }
+
+  .mdl-color--purple-A700 {
+    background-color: unquote("rgb(#{$palette-purple-A700})") !important;
+  }
+
+  // Deep Purple.
+
+  .mdl-color-text--deep-purple {
+    color: unquote("rgb(#{$palette-deep-purple-500})") !important;
+  }
+
+  .mdl-color--deep-purple {
+    background-color: unquote("rgb(#{$palette-deep-purple-500})") !important;
+  }
+
+  .mdl-color-text--deep-purple-50 {
+    color: unquote("rgb(#{$palette-deep-purple-50})") !important;
+  }
+
+  .mdl-color--deep-purple-50 {
+    background-color: unquote("rgb(#{$palette-deep-purple-50})") !important;
+  }
+
+  .mdl-color-text--deep-purple-100 {
+    color: unquote("rgb(#{$palette-deep-purple-100})") !important;
+  }
+
+  .mdl-color--deep-purple-100 {
+    background-color: unquote("rgb(#{$palette-deep-purple-100})") !important;
+  }
+
+  .mdl-color-text--deep-purple-200 {
+    color: unquote("rgb(#{$palette-deep-purple-200})") !important;
+  }
+
+  .mdl-color--deep-purple-200 {
+    background-color: unquote("rgb(#{$palette-deep-purple-200})") !important;
+  }
+
+  .mdl-color-text--deep-purple-300 {
+    color: unquote("rgb(#{$palette-deep-purple-300})") !important;
+  }
+
+  .mdl-color--deep-purple-300 {
+    background-color: unquote("rgb(#{$palette-deep-purple-300})") !important;
+  }
+
+  .mdl-color-text--deep-purple-400 {
+    color: unquote("rgb(#{$palette-deep-purple-400})") !important;
+  }
+
+  .mdl-color--deep-purple-400 {
+    background-color: unquote("rgb(#{$palette-deep-purple-400})") !important;
+  }
+
+  .mdl-color-text--deep-purple-500 {
+    color: unquote("rgb(#{$palette-deep-purple-500})") !important;
+  }
+
+  .mdl-color--deep-purple-500 {
+    background-color: unquote("rgb(#{$palette-deep-purple-500})") !important;
+  }
+
+  .mdl-color-text--deep-purple-600 {
+    color: unquote("rgb(#{$palette-deep-purple-600})") !important;
+  }
+
+  .mdl-color--deep-purple-600 {
+    background-color: unquote("rgb(#{$palette-deep-purple-600})") !important;
+  }
+
+  .mdl-color-text--deep-purple-700 {
+    color: unquote("rgb(#{$palette-deep-purple-700})") !important;
+  }
+
+  .mdl-color--deep-purple-700 {
+    background-color: unquote("rgb(#{$palette-deep-purple-700})") !important;
+  }
+
+  .mdl-color-text--deep-purple-800 {
+    color: unquote("rgb(#{$palette-deep-purple-800})") !important;
+  }
+
+  .mdl-color--deep-purple-800 {
+    background-color: unquote("rgb(#{$palette-deep-purple-800})") !important;
+  }
+
+  .mdl-color-text--deep-purple-900 {
+    color: unquote("rgb(#{$palette-deep-purple-900})") !important;
+  }
+
+  .mdl-color--deep-purple-900 {
+    background-color: unquote("rgb(#{$palette-deep-purple-900})") !important;
+  }
+
+  .mdl-color-text--deep-purple-A100 {
+    color: unquote("rgb(#{$palette-deep-purple-A100})") !important;
+  }
+
+  .mdl-color--deep-purple-A100 {
+    background-color: unquote("rgb(#{$palette-deep-purple-A100})") !important;
+  }
+
+  .mdl-color-text--deep-purple-A200 {
+    color: unquote("rgb(#{$palette-deep-purple-A200})") !important;
+  }
+
+  .mdl-color--deep-purple-A200 {
+    background-color: unquote("rgb(#{$palette-deep-purple-A200})") !important;
+  }
+
+  .mdl-color-text--deep-purple-A400 {
+    color: unquote("rgb(#{$palette-deep-purple-A400})") !important;
+  }
+
+  .mdl-color--deep-purple-A400 {
+    background-color: unquote("rgb(#{$palette-deep-purple-A400})") !important;
+  }
+
+  .mdl-color-text--deep-purple-A700 {
+    color: unquote("rgb(#{$palette-deep-purple-A700})") !important;
+  }
+
+  .mdl-color--deep-purple-A700 {
+    background-color: unquote("rgb(#{$palette-deep-purple-A700})") !important;
+  }
+
+  // Indigo
+
+  .mdl-color-text--indigo {
+    color: unquote("rgb(#{$palette-indigo-500})") !important;
+  }
+
+  .mdl-color--indigo {
+    background-color: unquote("rgb(#{$palette-indigo-500})") !important;
+  }
+
+  .mdl-color-text--indigo-50 {
+    color: unquote("rgb(#{$palette-indigo-50})") !important;
+  }
+
+  .mdl-color--indigo-50 {
+    background-color: unquote("rgb(#{$palette-indigo-50})") !important;
+  }
+
+  .mdl-color-text--indigo-100 {
+    color: unquote("rgb(#{$palette-indigo-100})") !important;
+  }
+
+  .mdl-color--indigo-100 {
+    background-color: unquote("rgb(#{$palette-indigo-100})") !important;
+  }
+
+  .mdl-color-text--indigo-200 {
+    color: unquote("rgb(#{$palette-indigo-200})") !important;
+  }
+
+  .mdl-color--indigo-200 {
+    background-color: unquote("rgb(#{$palette-indigo-200})") !important;
+  }
+
+  .mdl-color-text--indigo-300 {
+    color: unquote("rgb(#{$palette-indigo-300})") !important;
+  }
+
+  .mdl-color--indigo-300 {
+    background-color: unquote("rgb(#{$palette-indigo-300})") !important;
+  }
+
+  .mdl-color-text--indigo-400 {
+    color: unquote("rgb(#{$palette-indigo-400})") !important;
+  }
+
+  .mdl-color--indigo-400 {
+    background-color: unquote("rgb(#{$palette-indigo-400})") !important;
+  }
+
+  .mdl-color-text--indigo-500 {
+    color: unquote("rgb(#{$palette-indigo-500})") !important;
+  }
+
+  .mdl-color--indigo-500 {
+    background-color: unquote("rgb(#{$palette-indigo-500})") !important;
+  }
+
+  .mdl-color-text--indigo-600 {
+    color: unquote("rgb(#{$palette-indigo-600})") !important;
+  }
+
+  .mdl-color--indigo-600 {
+    background-color: unquote("rgb(#{$palette-indigo-600})") !important;
+  }
+
+  .mdl-color-text--indigo-700 {
+    color: unquote("rgb(#{$palette-indigo-700})") !important;
+  }
+
+  .mdl-color--indigo-700 {
+    background-color: unquote("rgb(#{$palette-indigo-700})") !important;
+  }
+
+  .mdl-color-text--indigo-800 {
+    color: unquote("rgb(#{$palette-indigo-800})") !important;
+  }
+
+  .mdl-color--indigo-800 {
+    background-color: unquote("rgb(#{$palette-indigo-800})") !important;
+  }
+
+  .mdl-color-text--indigo-900 {
+    color: unquote("rgb(#{$palette-indigo-900})") !important;
+  }
+
+  .mdl-color--indigo-900 {
+    background-color: unquote("rgb(#{$palette-indigo-900})") !important;
+  }
+
+  .mdl-color-text--indigo-A100 {
+    color: unquote("rgb(#{$palette-indigo-A100})") !important;
+  }
+
+  .mdl-color--indigo-A100 {
+    background-color: unquote("rgb(#{$palette-indigo-A100})") !important;
+  }
+
+  .mdl-color-text--indigo-A200 {
+    color: unquote("rgb(#{$palette-indigo-A200})") !important;
+  }
+
+  .mdl-color--indigo-A200 {
+    background-color: unquote("rgb(#{$palette-indigo-A200})") !important;
+  }
+
+  .mdl-color-text--indigo-A400 {
+    color: unquote("rgb(#{$palette-indigo-A400})") !important;
+  }
+
+  .mdl-color--indigo-A400 {
+    background-color: unquote("rgb(#{$palette-indigo-A400})") !important;
+  }
+
+  .mdl-color-text--indigo-A700 {
+    color: unquote("rgb(#{$palette-indigo-A700})") !important;
+  }
+
+  .mdl-color--indigo-A700 {
+    background-color: unquote("rgb(#{$palette-indigo-A700})") !important;
+  }
+
+  // Blue
+
+  .mdl-color-text--blue {
+    color: unquote("rgb(#{$palette-blue-500})") !important;
+  }
+
+  .mdl-color--blue {
+    background-color: unquote("rgb(#{$palette-blue-500})") !important;
+  }
+
+  .mdl-color-text--blue-50 {
+    color: unquote("rgb(#{$palette-blue-50})") !important;
+  }
+
+  .mdl-color--blue-50 {
+    background-color: unquote("rgb(#{$palette-blue-50})") !important;
+  }
+
+  .mdl-color-text--blue-100 {
+    color: unquote("rgb(#{$palette-blue-100})") !important;
+  }
+
+  .mdl-color--blue-100 {
+    background-color: unquote("rgb(#{$palette-blue-100})") !important;
+  }
+
+  .mdl-color-text--blue-200 {
+    color: unquote("rgb(#{$palette-blue-200})") !important;
+  }
+
+  .mdl-color--blue-200 {
+    background-color: unquote("rgb(#{$palette-blue-200})") !important;
+  }
+
+  .mdl-color-text--blue-300 {
+    color: unquote("rgb(#{$palette-blue-300})") !important;
+  }
+
+  .mdl-color--blue-300 {
+    background-color: unquote("rgb(#{$palette-blue-300})") !important;
+  }
+
+  .mdl-color-text--blue-400 {
+    color: unquote("rgb(#{$palette-blue-400})") !important;
+  }
+
+  .mdl-color--blue-400 {
+    background-color: unquote("rgb(#{$palette-blue-400})") !important;
+  }
+
+  .mdl-color-text--blue-500 {
+    color: unquote("rgb(#{$palette-blue-500})") !important;
+  }
+
+  .mdl-color--blue-500 {
+    background-color: unquote("rgb(#{$palette-blue-500})") !important;
+  }
+
+  .mdl-color-text--blue-600 {
+    color: unquote("rgb(#{$palette-blue-600})") !important;
+  }
+
+  .mdl-color--blue-600 {
+    background-color: unquote("rgb(#{$palette-blue-600})") !important;
+  }
+
+  .mdl-color-text--blue-700 {
+    color: unquote("rgb(#{$palette-blue-700})") !important;
+  }
+
+  .mdl-color--blue-700 {
+    background-color: unquote("rgb(#{$palette-blue-700})") !important;
+  }
+
+  .mdl-color-text--blue-800 {
+    color: unquote("rgb(#{$palette-blue-800})") !important;
+  }
+
+  .mdl-color--blue-800 {
+    background-color: unquote("rgb(#{$palette-blue-800})") !important;
+  }
+
+  .mdl-color-text--blue-900 {
+    color: unquote("rgb(#{$palette-blue-900})") !important;
+  }
+
+  .mdl-color--blue-900 {
+    background-color: unquote("rgb(#{$palette-blue-900})") !important;
+  }
+
+  .mdl-color-text--blue-A100 {
+    color: unquote("rgb(#{$palette-blue-A100})") !important;
+  }
+
+  .mdl-color--blue-A100 {
+    background-color: unquote("rgb(#{$palette-blue-A100})") !important;
+  }
+
+  .mdl-color-text--blue-A200 {
+    color: unquote("rgb(#{$palette-blue-A200})") !important;
+  }
+
+  .mdl-color--blue-A200 {
+    background-color: unquote("rgb(#{$palette-blue-A200})") !important;
+  }
+
+  .mdl-color-text--blue-A400 {
+    color: unquote("rgb(#{$palette-blue-A400})") !important;
+  }
+
+  .mdl-color--blue-A400 {
+    background-color: unquote("rgb(#{$palette-blue-A400})") !important;
+  }
+
+  .mdl-color-text--blue-A700 {
+    color: unquote("rgb(#{$palette-blue-A700})") !important;
+  }
+
+  .mdl-color--blue-A700 {
+    background-color: unquote("rgb(#{$palette-blue-A700})") !important;
+  }
+
+  // Light Blue
+
+  .mdl-color-text--light-blue {
+    color: unquote("rgb(#{$palette-light-blue-500})") !important;
+  }
+
+  .mdl-color--light-blue {
+    background-color: unquote("rgb(#{$palette-light-blue-500})") !important;
+  }
+
+  .mdl-color-text--light-blue-50 {
+    color: unquote("rgb(#{$palette-light-blue-50})") !important;
+  }
+
+  .mdl-color--light-blue-50 {
+    background-color: unquote("rgb(#{$palette-light-blue-50})") !important;
+  }
+
+  .mdl-color-text--light-blue-100 {
+    color: unquote("rgb(#{$palette-light-blue-100})") !important;
+  }
+
+  .mdl-color--light-blue-100 {
+    background-color: unquote("rgb(#{$palette-light-blue-100})") !important;
+  }
+
+  .mdl-color-text--light-blue-200 {
+    color: unquote("rgb(#{$palette-light-blue-200})") !important;
+  }
+
+  .mdl-color--light-blue-200 {
+    background-color: unquote("rgb(#{$palette-light-blue-200})") !important;
+  }
+
+  .mdl-color-text--light-blue-300 {
+    color: unquote("rgb(#{$palette-light-blue-300})") !important;
+  }
+
+  .mdl-color--light-blue-300 {
+    background-color: unquote("rgb(#{$palette-light-blue-300})") !important;
+  }
+
+  .mdl-color-text--light-blue-400 {
+    color: unquote("rgb(#{$palette-light-blue-400})") !important;
+  }
+
+  .mdl-color--light-blue-400 {
+    background-color: unquote("rgb(#{$palette-light-blue-400})") !important;
+  }
+
+  .mdl-color-text--light-blue-500 {
+    color: unquote("rgb(#{$palette-light-blue-500})") !important;
+  }
+
+  .mdl-color--light-blue-500 {
+    background-color: unquote("rgb(#{$palette-light-blue-500})") !important;
+  }
+
+  .mdl-color-text--light-blue-600 {
+    color: unquote("rgb(#{$palette-light-blue-600})") !important;
+  }
+
+  .mdl-color--light-blue-600 {
+    background-color: unquote("rgb(#{$palette-light-blue-600})") !important;
+  }
+
+  .mdl-color-text--light-blue-700 {
+    color: unquote("rgb(#{$palette-light-blue-700})") !important;
+  }
+
+  .mdl-color--light-blue-700 {
+    background-color: unquote("rgb(#{$palette-light-blue-700})") !important;
+  }
+
+  .mdl-color-text--light-blue-800 {
+    color: unquote("rgb(#{$palette-light-blue-800})") !important;
+  }
+
+  .mdl-color--light-blue-800 {
+    background-color: unquote("rgb(#{$palette-light-blue-800})") !important;
+  }
+
+  .mdl-color-text--light-blue-900 {
+    color: unquote("rgb(#{$palette-light-blue-900})") !important;
+  }
+
+  .mdl-color--light-blue-900 {
+    background-color: unquote("rgb(#{$palette-light-blue-900})") !important;
+  }
+
+  .mdl-color-text--light-blue-A100 {
+    color: unquote("rgb(#{$palette-light-blue-A100})") !important;
+  }
+
+  .mdl-color--light-blue-A100 {
+    background-color: unquote("rgb(#{$palette-light-blue-A100})") !important;
+  }
+
+  .mdl-color-text--light-blue-A200 {
+    color: unquote("rgb(#{$palette-light-blue-A200})") !important;
+  }
+
+  .mdl-color--light-blue-A200 {
+    background-color: unquote("rgb(#{$palette-light-blue-A200})") !important;
+  }
+
+  .mdl-color-text--light-blue-A400 {
+    color: unquote("rgb(#{$palette-light-blue-A400})") !important;
+  }
+
+  .mdl-color--light-blue-A400 {
+    background-color: unquote("rgb(#{$palette-light-blue-A400})") !important;
+  }
+
+  .mdl-color-text--light-blue-A700 {
+    color: unquote("rgb(#{$palette-light-blue-A700})") !important;
+  }
+
+  .mdl-color--light-blue-A700 {
+    background-color: unquote("rgb(#{$palette-light-blue-A700})") !important;
+  }
+
+  // Cyan
+
+  .mdl-color-text--cyan {
+    color: unquote("rgb(#{$palette-cyan-500})") !important;
+  }
+
+  .mdl-color--cyan {
+    background-color: unquote("rgb(#{$palette-cyan-500})") !important;
+  }
+
+  .mdl-color-text--cyan-50 {
+    color: unquote("rgb(#{$palette-cyan-50})") !important;
+  }
+
+  .mdl-color--cyan-50 {
+    background-color: unquote("rgb(#{$palette-cyan-50})") !important;
+  }
+
+  .mdl-color-text--cyan-100 {
+    color: unquote("rgb(#{$palette-cyan-100})") !important;
+  }
+
+  .mdl-color--cyan-100 {
+    background-color: unquote("rgb(#{$palette-cyan-100})") !important;
+  }
+
+  .mdl-color-text--cyan-200 {
+    color: unquote("rgb(#{$palette-cyan-200})") !important;
+  }
+
+  .mdl-color--cyan-200 {
+    background-color: unquote("rgb(#{$palette-cyan-200})") !important;
+  }
+
+  .mdl-color-text--cyan-300 {
+    color: unquote("rgb(#{$palette-cyan-300})") !important;
+  }
+
+  .mdl-color--cyan-300 {
+    background-color: unquote("rgb(#{$palette-cyan-300})") !important;
+  }
+
+  .mdl-color-text--cyan-400 {
+    color: unquote("rgb(#{$palette-cyan-400})") !important;
+  }
+
+  .mdl-color--cyan-400 {
+    background-color: unquote("rgb(#{$palette-cyan-400})") !important;
+  }
+
+  .mdl-color-text--cyan-500 {
+    color: unquote("rgb(#{$palette-cyan-500})") !important;
+  }
+
+  .mdl-color--cyan-500 {
+    background-color: unquote("rgb(#{$palette-cyan-500})") !important;
+  }
+
+  .mdl-color-text--cyan-600 {
+    color: unquote("rgb(#{$palette-cyan-600})") !important;
+  }
+
+  .mdl-color--cyan-600 {
+    background-color: unquote("rgb(#{$palette-cyan-600})") !important;
+  }
+
+  .mdl-color-text--cyan-700 {
+    color: unquote("rgb(#{$palette-cyan-700})") !important;
+  }
+
+  .mdl-color--cyan-700 {
+    background-color: unquote("rgb(#{$palette-cyan-700})") !important;
+  }
+
+  .mdl-color-text--cyan-800 {
+    color: unquote("rgb(#{$palette-cyan-800})") !important;
+  }
+
+  .mdl-color--cyan-800 {
+    background-color: unquote("rgb(#{$palette-cyan-800})") !important;
+  }
+
+  .mdl-color-text--cyan-900 {
+    color: unquote("rgb(#{$palette-cyan-900})") !important;
+  }
+
+  .mdl-color--cyan-900 {
+    background-color: unquote("rgb(#{$palette-cyan-900})") !important;
+  }
+
+  .mdl-color-text--cyan-A100 {
+    color: unquote("rgb(#{$palette-cyan-A100})") !important;
+  }
+
+  .mdl-color--cyan-A100 {
+    background-color: unquote("rgb(#{$palette-cyan-A100})") !important;
+  }
+
+  .mdl-color-text--cyan-A200 {
+    color: unquote("rgb(#{$palette-cyan-A200})") !important;
+  }
+
+  .mdl-color--cyan-A200 {
+    background-color: unquote("rgb(#{$palette-cyan-A200})") !important;
+  }
+
+  .mdl-color-text--cyan-A400 {
+    color: unquote("rgb(#{$palette-cyan-A400})") !important;
+  }
+
+  .mdl-color--cyan-A400 {
+    background-color: unquote("rgb(#{$palette-cyan-A400})") !important;
+  }
+
+  .mdl-color-text--cyan-A700 {
+    color: unquote("rgb(#{$palette-cyan-A700})") !important;
+  }
+
+  .mdl-color--cyan-A700 {
+    background-color: unquote("rgb(#{$palette-cyan-A700})") !important;
+  }
+
+  // Teal
+
+  .mdl-color-text--teal {
+    color: unquote("rgb(#{$palette-teal-500})") !important;
+  }
+
+  .mdl-color--teal {
+    background-color: unquote("rgb(#{$palette-teal-500})") !important;
+  }
+
+  .mdl-color-text--teal-50 {
+    color: unquote("rgb(#{$palette-teal-50})") !important;
+  }
+
+  .mdl-color--teal-50 {
+    background-color: unquote("rgb(#{$palette-teal-50})") !important;
+  }
+
+  .mdl-color-text--teal-100 {
+    color: unquote("rgb(#{$palette-teal-100})") !important;
+  }
+
+  .mdl-color--teal-100 {
+    background-color: unquote("rgb(#{$palette-teal-100})") !important;
+  }
+
+  .mdl-color-text--teal-200 {
+    color: unquote("rgb(#{$palette-teal-200})") !important;
+  }
+
+  .mdl-color--teal-200 {
+    background-color: unquote("rgb(#{$palette-teal-200})") !important;
+  }
+
+  .mdl-color-text--teal-300 {
+    color: unquote("rgb(#{$palette-teal-300})") !important;
+  }
+
+  .mdl-color--teal-300 {
+    background-color: unquote("rgb(#{$palette-teal-300})") !important;
+  }
+
+  .mdl-color-text--teal-400 {
+    color: unquote("rgb(#{$palette-teal-400})") !important;
+  }
+
+  .mdl-color--teal-400 {
+    background-color: unquote("rgb(#{$palette-teal-400})") !important;
+  }
+
+  .mdl-color-text--teal-500 {
+    color: unquote("rgb(#{$palette-teal-500})") !important;
+  }
+
+  .mdl-color--teal-500 {
+    background-color: unquote("rgb(#{$palette-teal-500})") !important;
+  }
+
+  .mdl-color-text--teal-600 {
+    color: unquote("rgb(#{$palette-teal-600})") !important;
+  }
+
+  .mdl-color--teal-600 {
+    background-color: unquote("rgb(#{$palette-teal-600})") !important;
+  }
+
+  .mdl-color-text--teal-700 {
+    color: unquote("rgb(#{$palette-teal-700})") !important;
+  }
+
+  .mdl-color--teal-700 {
+    background-color: unquote("rgb(#{$palette-teal-700})") !important;
+  }
+
+  .mdl-color-text--teal-800 {
+    color: unquote("rgb(#{$palette-teal-800})") !important;
+  }
+
+  .mdl-color--teal-800 {
+    background-color: unquote("rgb(#{$palette-teal-800})") !important;
+  }
+
+  .mdl-color-text--teal-900 {
+    color: unquote("rgb(#{$palette-teal-900})") !important;
+  }
+
+  .mdl-color--teal-900 {
+    background-color: unquote("rgb(#{$palette-teal-900})") !important;
+  }
+
+  .mdl-color-text--teal-A100 {
+    color: unquote("rgb(#{$palette-teal-A100})") !important;
+  }
+
+  .mdl-color--teal-A100 {
+    background-color: unquote("rgb(#{$palette-teal-A100})") !important;
+  }
+
+  .mdl-color-text--teal-A200 {
+    color: unquote("rgb(#{$palette-teal-A200})") !important;
+  }
+
+  .mdl-color--teal-A200 {
+    background-color: unquote("rgb(#{$palette-teal-A200})") !important;
+  }
+
+  .mdl-color-text--teal-A400 {
+    color: unquote("rgb(#{$palette-teal-A400})") !important;
+  }
+
+  .mdl-color--teal-A400 {
+    background-color: unquote("rgb(#{$palette-teal-A400})") !important;
+  }
+
+  .mdl-color-text--teal-A700 {
+    color: unquote("rgb(#{$palette-teal-A700})") !important;
+  }
+
+  .mdl-color--teal-A700 {
+    background-color: unquote("rgb(#{$palette-teal-A700})") !important;
+  }
+
+  // Green
+
+  .mdl-color-text--green {
+    color: unquote("rgb(#{$palette-green-500})") !important;
+  }
+
+  .mdl-color--green {
+    background-color: unquote("rgb(#{$palette-green-500})") !important;
+  }
+
+  .mdl-color-text--green-50 {
+    color: unquote("rgb(#{$palette-green-50})") !important;
+  }
+
+  .mdl-color--green-50 {
+    background-color: unquote("rgb(#{$palette-green-50})") !important;
+  }
+
+  .mdl-color-text--green-100 {
+    color: unquote("rgb(#{$palette-green-100})") !important;
+  }
+
+  .mdl-color--green-100 {
+    background-color: unquote("rgb(#{$palette-green-100})") !important;
+  }
+
+  .mdl-color-text--green-200 {
+    color: unquote("rgb(#{$palette-green-200})") !important;
+  }
+
+  .mdl-color--green-200 {
+    background-color: unquote("rgb(#{$palette-green-200})") !important;
+  }
+
+  .mdl-color-text--green-300 {
+    color: unquote("rgb(#{$palette-green-300})") !important;
+  }
+
+  .mdl-color--green-300 {
+    background-color: unquote("rgb(#{$palette-green-300})") !important;
+  }
+
+  .mdl-color-text--green-400 {
+    color: unquote("rgb(#{$palette-green-400})") !important;
+  }
+
+  .mdl-color--green-400 {
+    background-color: unquote("rgb(#{$palette-green-400})") !important;
+  }
+
+  .mdl-color-text--green-500 {
+    color: unquote("rgb(#{$palette-green-500})") !important;
+  }
+
+  .mdl-color--green-500 {
+    background-color: unquote("rgb(#{$palette-green-500})") !important;
+  }
+
+  .mdl-color-text--green-600 {
+    color: unquote("rgb(#{$palette-green-600})") !important;
+  }
+
+  .mdl-color--green-600 {
+    background-color: unquote("rgb(#{$palette-green-600})") !important;
+  }
+
+  .mdl-color-text--green-700 {
+    color: unquote("rgb(#{$palette-green-700})") !important;
+  }
+
+  .mdl-color--green-700 {
+    background-color: unquote("rgb(#{$palette-green-700})") !important;
+  }
+
+  .mdl-color-text--green-800 {
+    color: unquote("rgb(#{$palette-green-800})") !important;
+  }
+
+  .mdl-color--green-800 {
+    background-color: unquote("rgb(#{$palette-green-800})") !important;
+  }
+
+  .mdl-color-text--green-900 {
+    color: unquote("rgb(#{$palette-green-900})") !important;
+  }
+
+  .mdl-color--green-900 {
+    background-color: unquote("rgb(#{$palette-green-900})") !important;
+  }
+
+  .mdl-color-text--green-A100 {
+    color: unquote("rgb(#{$palette-green-A100})") !important;
+  }
+
+  .mdl-color--green-A100 {
+    background-color: unquote("rgb(#{$palette-green-A100})") !important;
+  }
+
+  .mdl-color-text--green-A200 {
+    color: unquote("rgb(#{$palette-green-A200})") !important;
+  }
+
+  .mdl-color--green-A200 {
+    background-color: unquote("rgb(#{$palette-green-A200})") !important;
+  }
+
+  .mdl-color-text--green-A400 {
+    color: unquote("rgb(#{$palette-green-A400})") !important;
+  }
+
+  .mdl-color--green-A400 {
+    background-color: unquote("rgb(#{$palette-green-A400})") !important;
+  }
+
+  .mdl-color-text--green-A700 {
+    color: unquote("rgb(#{$palette-green-A700})") !important;
+  }
+
+  .mdl-color--green-A700 {
+    background-color: unquote("rgb(#{$palette-green-A700})") !important;
+  }
+
+  // Light Green
+
+  .mdl-color-text--light-green {
+    color: unquote("rgb(#{$palette-light-green-500})") !important;
+  }
+
+  .mdl-color--light-green {
+    background-color: unquote("rgb(#{$palette-light-green-500})") !important;
+  }
+
+  .mdl-color-text--light-green-50 {
+    color: unquote("rgb(#{$palette-light-green-50})") !important;
+  }
+
+  .mdl-color--light-green-50 {
+    background-color: unquote("rgb(#{$palette-light-green-50})") !important;
+  }
+
+  .mdl-color-text--light-green-100 {
+    color: unquote("rgb(#{$palette-light-green-100})") !important;
+  }
+
+  .mdl-color--light-green-100 {
+    background-color: unquote("rgb(#{$palette-light-green-100})") !important;
+  }
+
+  .mdl-color-text--light-green-200 {
+    color: unquote("rgb(#{$palette-light-green-200})") !important;
+  }
+
+  .mdl-color--light-green-200 {
+    background-color: unquote("rgb(#{$palette-light-green-200})") !important;
+  }
+
+  .mdl-color-text--light-green-300 {
+    color: unquote("rgb(#{$palette-light-green-300})") !important;
+  }
+
+  .mdl-color--light-green-300 {
+    background-color: unquote("rgb(#{$palette-light-green-300})") !important;
+  }
+
+  .mdl-color-text--light-green-400 {
+    color: unquote("rgb(#{$palette-light-green-400})") !important;
+  }
+
+  .mdl-color--light-green-400 {
+    background-color: unquote("rgb(#{$palette-light-green-400})") !important;
+  }
+
+  .mdl-color-text--light-green-500 {
+    color: unquote("rgb(#{$palette-light-green-500})") !important;
+  }
+
+  .mdl-color--light-green-500 {
+    background-color: unquote("rgb(#{$palette-light-green-500})") !important;
+  }
+
+  .mdl-color-text--light-green-600 {
+    color: unquote("rgb(#{$palette-light-green-600})") !important;
+  }
+
+  .mdl-color--light-green-600 {
+    background-color: unquote("rgb(#{$palette-light-green-600})") !important;
+  }
+
+  .mdl-color-text--light-green-700 {
+    color: unquote("rgb(#{$palette-light-green-700})") !important;
+  }
+
+  .mdl-color--light-green-700 {
+    background-color: unquote("rgb(#{$palette-light-green-700})") !important;
+  }
+
+  .mdl-color-text--light-green-800 {
+    color: unquote("rgb(#{$palette-light-green-800})") !important;
+  }
+
+  .mdl-color--light-green-800 {
+    background-color: unquote("rgb(#{$palette-light-green-800})") !important;
+  }
+
+  .mdl-color-text--light-green-900 {
+    color: unquote("rgb(#{$palette-light-green-900})") !important;
+  }
+
+  .mdl-color--light-green-900 {
+    background-color: unquote("rgb(#{$palette-light-green-900})") !important;
+  }
+
+  .mdl-color-text--light-green-A100 {
+    color: unquote("rgb(#{$palette-light-green-A100})") !important;
+  }
+
+  .mdl-color--light-green-A100 {
+    background-color: unquote("rgb(#{$palette-light-green-A100})") !important;
+  }
+
+  .mdl-color-text--light-green-A200 {
+    color: unquote("rgb(#{$palette-light-green-A200})") !important;
+  }
+
+  .mdl-color--light-green-A200 {
+    background-color: unquote("rgb(#{$palette-light-green-A200})") !important;
+  }
+
+  .mdl-color-text--light-green-A400 {
+    color: unquote("rgb(#{$palette-light-green-A400})") !important;
+  }
+
+  .mdl-color--light-green-A400 {
+    background-color: unquote("rgb(#{$palette-light-green-A400})") !important;
+  }
+
+  .mdl-color-text--light-green-A700 {
+    color: unquote("rgb(#{$palette-light-green-A700})") !important;
+  }
+
+  .mdl-color--light-green-A700 {
+    background-color: unquote("rgb(#{$palette-light-green-A700})") !important;
+  }
+
+  // Lime
+
+  .mdl-color-text--lime {
+    color: unquote("rgb(#{$palette-lime-500})") !important;
+  }
+
+  .mdl-color--lime {
+    background-color: unquote("rgb(#{$palette-lime-500})") !important;
+  }
+
+  .mdl-color-text--lime-50 {
+    color: unquote("rgb(#{$palette-lime-50})") !important;
+  }
+
+  .mdl-color--lime-50 {
+    background-color: unquote("rgb(#{$palette-lime-50})") !important;
+  }
+
+  .mdl-color-text--lime-100 {
+    color: unquote("rgb(#{$palette-lime-100})") !important;
+  }
+
+  .mdl-color--lime-100 {
+    background-color: unquote("rgb(#{$palette-lime-100})") !important;
+  }
+
+  .mdl-color-text--lime-200 {
+    color: unquote("rgb(#{$palette-lime-200})") !important;
+  }
+
+  .mdl-color--lime-200 {
+    background-color: unquote("rgb(#{$palette-lime-200})") !important;
+  }
+
+  .mdl-color-text--lime-300 {
+    color: unquote("rgb(#{$palette-lime-300})") !important;
+  }
+
+  .mdl-color--lime-300 {
+    background-color: unquote("rgb(#{$palette-lime-300})") !important;
+  }
+
+  .mdl-color-text--lime-400 {
+    color: unquote("rgb(#{$palette-lime-400})") !important;
+  }
+
+  .mdl-color--lime-400 {
+    background-color: unquote("rgb(#{$palette-lime-400})") !important;
+  }
+
+  .mdl-color-text--lime-500 {
+    color: unquote("rgb(#{$palette-lime-500})") !important;
+  }
+
+  .mdl-color--lime-500 {
+    background-color: unquote("rgb(#{$palette-lime-500})") !important;
+  }
+
+  .mdl-color-text--lime-600 {
+    color: unquote("rgb(#{$palette-lime-600})") !important;
+  }
+
+  .mdl-color--lime-600 {
+    background-color: unquote("rgb(#{$palette-lime-600})") !important;
+  }
+
+  .mdl-color-text--lime-700 {
+    color: unquote("rgb(#{$palette-lime-700})") !important;
+  }
+
+  .mdl-color--lime-700 {
+    background-color: unquote("rgb(#{$palette-lime-700})") !important;
+  }
+
+  .mdl-color-text--lime-800 {
+    color: unquote("rgb(#{$palette-lime-800})") !important;
+  }
+
+  .mdl-color--lime-800 {
+    background-color: unquote("rgb(#{$palette-lime-800})") !important;
+  }
+
+  .mdl-color-text--lime-900 {
+    color: unquote("rgb(#{$palette-lime-900})") !important;
+  }
+
+  .mdl-color--lime-900 {
+    background-color: unquote("rgb(#{$palette-lime-900})") !important;
+  }
+
+  .mdl-color-text--lime-A100 {
+    color: unquote("rgb(#{$palette-lime-A100})") !important;
+  }
+
+  .mdl-color--lime-A100 {
+    background-color: unquote("rgb(#{$palette-lime-A100})") !important;
+  }
+
+  .mdl-color-text--lime-A200 {
+    color: unquote("rgb(#{$palette-lime-A200})") !important;
+  }
+
+  .mdl-color--lime-A200 {
+    background-color: unquote("rgb(#{$palette-lime-A200})") !important;
+  }
+
+  .mdl-color-text--lime-A400 {
+    color: unquote("rgb(#{$palette-lime-A400})") !important;
+  }
+
+  .mdl-color--lime-A400 {
+    background-color: unquote("rgb(#{$palette-lime-A400})") !important;
+  }
+
+  .mdl-color-text--lime-A700 {
+    color: unquote("rgb(#{$palette-lime-A700})") !important;
+  }
+
+  .mdl-color--lime-A700 {
+    background-color: unquote("rgb(#{$palette-lime-A700})") !important;
+  }
+
+  // Yellow
+
+  .mdl-color-text--yellow {
+    color: unquote("rgb(#{$palette-yellow-500})") !important;
+  }
+
+  .mdl-color--yellow {
+    background-color: unquote("rgb(#{$palette-yellow-500})") !important;
+  }
+
+  .mdl-color-text--yellow-50 {
+    color: unquote("rgb(#{$palette-yellow-50})") !important;
+  }
+
+  .mdl-color--yellow-50 {
+    background-color: unquote("rgb(#{$palette-yellow-50})") !important;
+  }
+
+  .mdl-color-text--yellow-100 {
+    color: unquote("rgb(#{$palette-yellow-100})") !important;
+  }
+
+  .mdl-color--yellow-100 {
+    background-color: unquote("rgb(#{$palette-yellow-100})") !important;
+  }
+
+  .mdl-color-text--yellow-200 {
+    color: unquote("rgb(#{$palette-yellow-200})") !important;
+  }
+
+  .mdl-color--yellow-200 {
+    background-color: unquote("rgb(#{$palette-yellow-200})") !important;
+  }
+
+  .mdl-color-text--yellow-300 {
+    color: unquote("rgb(#{$palette-yellow-300})") !important;
+  }
+
+  .mdl-color--yellow-300 {
+    background-color: unquote("rgb(#{$palette-yellow-300})") !important;
+  }
+
+  .mdl-color-text--yellow-400 {
+    color: unquote("rgb(#{$palette-yellow-400})") !important;
+  }
+
+  .mdl-color--yellow-400 {
+    background-color: unquote("rgb(#{$palette-yellow-400})") !important;
+  }
+
+  .mdl-color-text--yellow-500 {
+    color: unquote("rgb(#{$palette-yellow-500})") !important;
+  }
+
+  .mdl-color--yellow-500 {
+    background-color: unquote("rgb(#{$palette-yellow-500})") !important;
+  }
+
+  .mdl-color-text--yellow-600 {
+    color: unquote("rgb(#{$palette-yellow-600})") !important;
+  }
+
+  .mdl-color--yellow-600 {
+    background-color: unquote("rgb(#{$palette-yellow-600})") !important;
+  }
+
+  .mdl-color-text--yellow-700 {
+    color: unquote("rgb(#{$palette-yellow-700})") !important;
+  }
+
+  .mdl-color--yellow-700 {
+    background-color: unquote("rgb(#{$palette-yellow-700})") !important;
+  }
+
+  .mdl-color-text--yellow-800 {
+    color: unquote("rgb(#{$palette-yellow-800})") !important;
+  }
+
+  .mdl-color--yellow-800 {
+    background-color: unquote("rgb(#{$palette-yellow-800})") !important;
+  }
+
+  .mdl-color-text--yellow-900 {
+    color: unquote("rgb(#{$palette-yellow-900})") !important;
+  }
+
+  .mdl-color--yellow-900 {
+    background-color: unquote("rgb(#{$palette-yellow-900})") !important;
+  }
+
+  .mdl-color-text--yellow-A100 {
+    color: unquote("rgb(#{$palette-yellow-A100})") !important;
+  }
+
+  .mdl-color--yellow-A100 {
+    background-color: unquote("rgb(#{$palette-yellow-A100})") !important;
+  }
+
+  .mdl-color-text--yellow-A200 {
+    color: unquote("rgb(#{$palette-yellow-A200})") !important;
+  }
+
+  .mdl-color--yellow-A200 {
+    background-color: unquote("rgb(#{$palette-yellow-A200})") !important;
+  }
+
+  .mdl-color-text--yellow-A400 {
+    color: unquote("rgb(#{$palette-yellow-A400})") !important;
+  }
+
+  .mdl-color--yellow-A400 {
+    background-color: unquote("rgb(#{$palette-yellow-A400})") !important;
+  }
+
+  .mdl-color-text--yellow-A700 {
+    color: unquote("rgb(#{$palette-yellow-A700})") !important;
+  }
+
+  .mdl-color--yellow-A700 {
+    background-color: unquote("rgb(#{$palette-yellow-A700})") !important;
+  }
+
+  // Amber
+
+  .mdl-color-text--amber {
+    color: unquote("rgb(#{$palette-amber-500})") !important;
+  }
+
+  .mdl-color--amber {
+    background-color: unquote("rgb(#{$palette-amber-500})") !important;
+  }
+
+  .mdl-color-text--amber-50 {
+    color: unquote("rgb(#{$palette-amber-50})") !important;
+  }
+
+  .mdl-color--amber-50 {
+    background-color: unquote("rgb(#{$palette-amber-50})") !important;
+  }
+
+  .mdl-color-text--amber-100 {
+    color: unquote("rgb(#{$palette-amber-100})") !important;
+  }
+
+  .mdl-color--amber-100 {
+    background-color: unquote("rgb(#{$palette-amber-100})") !important;
+  }
+
+  .mdl-color-text--amber-200 {
+    color: unquote("rgb(#{$palette-amber-200})") !important;
+  }
+
+  .mdl-color--amber-200 {
+    background-color: unquote("rgb(#{$palette-amber-200})") !important;
+  }
+
+  .mdl-color-text--amber-300 {
+    color: unquote("rgb(#{$palette-amber-300})") !important;
+  }
+
+  .mdl-color--amber-300 {
+    background-color: unquote("rgb(#{$palette-amber-300})") !important;
+  }
+
+  .mdl-color-text--amber-400 {
+    color: unquote("rgb(#{$palette-amber-400})") !important;
+  }
+
+  .mdl-color--amber-400 {
+    background-color: unquote("rgb(#{$palette-amber-400})") !important;
+  }
+
+  .mdl-color-text--amber-500 {
+    color: unquote("rgb(#{$palette-amber-500})") !important;
+  }
+
+  .mdl-color--amber-500 {
+    background-color: unquote("rgb(#{$palette-amber-500})") !important;
+  }
+
+  .mdl-color-text--amber-600 {
+    color: unquote("rgb(#{$palette-amber-600})") !important;
+  }
+
+  .mdl-color--amber-600 {
+    background-color: unquote("rgb(#{$palette-amber-600})") !important;
+  }
+
+  .mdl-color-text--amber-700 {
+    color: unquote("rgb(#{$palette-amber-700})") !important;
+  }
+
+  .mdl-color--amber-700 {
+    background-color: unquote("rgb(#{$palette-amber-700})") !important;
+  }
+
+  .mdl-color-text--amber-800 {
+    color: unquote("rgb(#{$palette-amber-800})") !important;
+  }
+
+  .mdl-color--amber-800 {
+    background-color: unquote("rgb(#{$palette-amber-800})") !important;
+  }
+
+  .mdl-color-text--amber-900 {
+    color: unquote("rgb(#{$palette-amber-900})") !important;
+  }
+
+  .mdl-color--amber-900 {
+    background-color: unquote("rgb(#{$palette-amber-900})") !important;
+  }
+
+  .mdl-color-text--amber-A100 {
+    color: unquote("rgb(#{$palette-amber-A100})") !important;
+  }
+
+  .mdl-color--amber-A100 {
+    background-color: unquote("rgb(#{$palette-amber-A100})") !important;
+  }
+
+  .mdl-color-text--amber-A200 {
+    color: unquote("rgb(#{$palette-amber-A200})") !important;
+  }
+
+  .mdl-color--amber-A200 {
+    background-color: unquote("rgb(#{$palette-amber-A200})") !important;
+  }
+
+  .mdl-color-text--amber-A400 {
+    color: unquote("rgb(#{$palette-amber-A400})") !important;
+  }
+
+  .mdl-color--amber-A400 {
+    background-color: unquote("rgb(#{$palette-amber-A400})") !important;
+  }
+
+  .mdl-color-text--amber-A700 {
+    color: unquote("rgb(#{$palette-amber-A700})") !important;
+  }
+
+  .mdl-color--amber-A700 {
+    background-color: unquote("rgb(#{$palette-amber-A700})") !important;
+  }
+
+  // Orange
+
+  .mdl-color-text--orange {
+    color: unquote("rgb(#{$palette-orange-500})") !important;
+  }
+
+  .mdl-color--orange {
+    background-color: unquote("rgb(#{$palette-orange-500})") !important;
+  }
+
+  .mdl-color-text--orange-50 {
+    color: unquote("rgb(#{$palette-orange-50})") !important;
+  }
+
+  .mdl-color--orange-50 {
+    background-color: unquote("rgb(#{$palette-orange-50})") !important;
+  }
+
+  .mdl-color-text--orange-100 {
+    color: unquote("rgb(#{$palette-orange-100})") !important;
+  }
+
+  .mdl-color--orange-100 {
+    background-color: unquote("rgb(#{$palette-orange-100})") !important;
+  }
+
+  .mdl-color-text--orange-200 {
+    color: unquote("rgb(#{$palette-orange-200})") !important;
+  }
+
+  .mdl-color--orange-200 {
+    background-color: unquote("rgb(#{$palette-orange-200})") !important;
+  }
+
+  .mdl-color-text--orange-300 {
+    color: unquote("rgb(#{$palette-orange-300})") !important;
+  }
+
+  .mdl-color--orange-300 {
+    background-color: unquote("rgb(#{$palette-orange-300})") !important;
+  }
+
+  .mdl-color-text--orange-400 {
+    color: unquote("rgb(#{$palette-orange-400})") !important;
+  }
+
+  .mdl-color--orange-400 {
+    background-color: unquote("rgb(#{$palette-orange-400})") !important;
+  }
+
+  .mdl-color-text--orange-500 {
+    color: unquote("rgb(#{$palette-orange-500})") !important;
+  }
+
+  .mdl-color--orange-500 {
+    background-color: unquote("rgb(#{$palette-orange-500})") !important;
+  }
+
+  .mdl-color-text--orange-600 {
+    color: unquote("rgb(#{$palette-orange-600})") !important;
+  }
+
+  .mdl-color--orange-600 {
+    background-color: unquote("rgb(#{$palette-orange-600})") !important;
+  }
+
+  .mdl-color-text--orange-700 {
+    color: unquote("rgb(#{$palette-orange-700})") !important;
+  }
+
+  .mdl-color--orange-700 {
+    background-color: unquote("rgb(#{$palette-orange-700})") !important;
+  }
+
+  .mdl-color-text--orange-800 {
+    color: unquote("rgb(#{$palette-orange-800})") !important;
+  }
+
+  .mdl-color--orange-800 {
+    background-color: unquote("rgb(#{$palette-orange-800})") !important;
+  }
+
+  .mdl-color-text--orange-900 {
+    color: unquote("rgb(#{$palette-orange-900})") !important;
+  }
+
+  .mdl-color--orange-900 {
+    background-color: unquote("rgb(#{$palette-orange-900})") !important;
+  }
+
+  .mdl-color-text--orange-A100 {
+    color: unquote("rgb(#{$palette-orange-A100})") !important;
+  }
+
+  .mdl-color--orange-A100 {
+    background-color: unquote("rgb(#{$palette-orange-A100})") !important;
+  }
+
+  .mdl-color-text--orange-A200 {
+    color: unquote("rgb(#{$palette-orange-A200})") !important;
+  }
+
+  .mdl-color--orange-A200 {
+    background-color: unquote("rgb(#{$palette-orange-A200})") !important;
+  }
+
+  .mdl-color-text--orange-A400 {
+    color: unquote("rgb(#{$palette-orange-A400})") !important;
+  }
+
+  .mdl-color--orange-A400 {
+    background-color: unquote("rgb(#{$palette-orange-A400})") !important;
+  }
+
+  .mdl-color-text--orange-A700 {
+    color: unquote("rgb(#{$palette-orange-A700})") !important;
+  }
+
+  .mdl-color--orange-A700 {
+    background-color: unquote("rgb(#{$palette-orange-A700})") !important;
+  }
+
+  // Deep Orange
+
+  .mdl-color-text--deep-orange {
+    color: unquote("rgb(#{$palette-deep-orange-500})") !important;
+  }
+
+  .mdl-color--deep-orange {
+    background-color: unquote("rgb(#{$palette-deep-orange-500})") !important;
+  }
+
+  .mdl-color-text--deep-orange-50 {
+    color: unquote("rgb(#{$palette-deep-orange-50})") !important;
+  }
+
+  .mdl-color--deep-orange-50 {
+    background-color: unquote("rgb(#{$palette-deep-orange-50})") !important;
+  }
+
+  .mdl-color-text--deep-orange-100 {
+    color: unquote("rgb(#{$palette-deep-orange-100})") !important;
+  }
+
+  .mdl-color--deep-orange-100 {
+    background-color: unquote("rgb(#{$palette-deep-orange-100})") !important;
+  }
+
+  .mdl-color-text--deep-orange-200 {
+    color: unquote("rgb(#{$palette-deep-orange-200})") !important;
+  }
+
+  .mdl-color--deep-orange-200 {
+    background-color: unquote("rgb(#{$palette-deep-orange-200})") !important;
+  }
+
+  .mdl-color-text--deep-orange-300 {
+    color: unquote("rgb(#{$palette-deep-orange-300})") !important;
+  }
+
+  .mdl-color--deep-orange-300 {
+    background-color: unquote("rgb(#{$palette-deep-orange-300})") !important;
+  }
+
+  .mdl-color-text--deep-orange-400 {
+    color: unquote("rgb(#{$palette-deep-orange-400})") !important;
+  }
+
+  .mdl-color--deep-orange-400 {
+    background-color: unquote("rgb(#{$palette-deep-orange-400})") !important;
+  }
+
+  .mdl-color-text--deep-orange-500 {
+    color: unquote("rgb(#{$palette-deep-orange-500})") !important;
+  }
+
+  .mdl-color--deep-orange-500 {
+    background-color: unquote("rgb(#{$palette-deep-orange-500})") !important;
+  }
+
+  .mdl-color-text--deep-orange-600 {
+    color: unquote("rgb(#{$palette-deep-orange-600})") !important;
+  }
+
+  .mdl-color--deep-orange-600 {
+    background-color: unquote("rgb(#{$palette-deep-orange-600})") !important;
+  }
+
+  .mdl-color-text--deep-orange-700 {
+    color: unquote("rgb(#{$palette-deep-orange-700})") !important;
+  }
+
+  .mdl-color--deep-orange-700 {
+    background-color: unquote("rgb(#{$palette-deep-orange-700})") !important;
+  }
+
+  .mdl-color-text--deep-orange-800 {
+    color: unquote("rgb(#{$palette-deep-orange-800})") !important;
+  }
+
+  .mdl-color--deep-orange-800 {
+    background-color: unquote("rgb(#{$palette-deep-orange-800})") !important;
+  }
+
+  .mdl-color-text--deep-orange-900 {
+    color: unquote("rgb(#{$palette-deep-orange-900})") !important;
+  }
+
+  .mdl-color--deep-orange-900 {
+    background-color: unquote("rgb(#{$palette-deep-orange-900})") !important;
+  }
+
+  .mdl-color-text--deep-orange-A100 {
+    color: unquote("rgb(#{$palette-deep-orange-A100})") !important;
+  }
+
+  .mdl-color--deep-orange-A100 {
+    background-color: unquote("rgb(#{$palette-deep-orange-A100})") !important;
+  }
+
+  .mdl-color-text--deep-orange-A200 {
+    color: unquote("rgb(#{$palette-deep-orange-A200})") !important;
+  }
+
+  .mdl-color--deep-orange-A200 {
+    background-color: unquote("rgb(#{$palette-deep-orange-A200})") !important;
+  }
+
+  .mdl-color-text--deep-orange-A400 {
+    color: unquote("rgb(#{$palette-deep-orange-A400})") !important;
+  }
+
+  .mdl-color--deep-orange-A400 {
+    background-color: unquote("rgb(#{$palette-deep-orange-A400})") !important;
+  }
+
+  .mdl-color-text--deep-orange-A700 {
+    color: unquote("rgb(#{$palette-deep-orange-A700})") !important;
+  }
+
+  .mdl-color--deep-orange-A700 {
+    background-color: unquote("rgb(#{$palette-deep-orange-A700})") !important;
+  }
+
+  // Brown
+
+  .mdl-color-text--brown {
+    color: unquote("rgb(#{$palette-brown-500})") !important;
+  }
+
+  .mdl-color--brown {
+    background-color: unquote("rgb(#{$palette-brown-500})") !important;
+  }
+
+  .mdl-color-text--brown-50 {
+    color: unquote("rgb(#{$palette-brown-50})") !important;
+  }
+
+  .mdl-color--brown-50 {
+    background-color: unquote("rgb(#{$palette-brown-50})") !important;
+  }
+
+  .mdl-color-text--brown-100 {
+    color: unquote("rgb(#{$palette-brown-100})") !important;
+  }
+
+  .mdl-color--brown-100 {
+    background-color: unquote("rgb(#{$palette-brown-100})") !important;
+  }
+
+  .mdl-color-text--brown-200 {
+    color: unquote("rgb(#{$palette-brown-200})") !important;
+  }
+
+  .mdl-color--brown-200 {
+    background-color: unquote("rgb(#{$palette-brown-200})") !important;
+  }
+
+  .mdl-color-text--brown-300 {
+    color: unquote("rgb(#{$palette-brown-300})") !important;
+  }
+
+  .mdl-color--brown-300 {
+    background-color: unquote("rgb(#{$palette-brown-300})") !important;
+  }
+
+  .mdl-color-text--brown-400 {
+    color: unquote("rgb(#{$palette-brown-400})") !important;
+  }
+
+  .mdl-color--brown-400 {
+    background-color: unquote("rgb(#{$palette-brown-400})") !important;
+  }
+
+  .mdl-color-text--brown-500 {
+    color: unquote("rgb(#{$palette-brown-500})") !important;
+  }
+
+  .mdl-color--brown-500 {
+    background-color: unquote("rgb(#{$palette-brown-500})") !important;
+  }
+
+  .mdl-color-text--brown-600 {
+    color: unquote("rgb(#{$palette-brown-600})") !important;
+  }
+
+  .mdl-color--brown-600 {
+    background-color: unquote("rgb(#{$palette-brown-600})") !important;
+  }
+
+  .mdl-color-text--brown-700 {
+    color: unquote("rgb(#{$palette-brown-700})") !important;
+  }
+
+  .mdl-color--brown-700 {
+    background-color: unquote("rgb(#{$palette-brown-700})") !important;
+  }
+
+  .mdl-color-text--brown-800 {
+    color: unquote("rgb(#{$palette-brown-800})") !important;
+  }
+
+  .mdl-color--brown-800 {
+    background-color: unquote("rgb(#{$palette-brown-800})") !important;
+  }
+
+  .mdl-color-text--brown-900 {
+    color: unquote("rgb(#{$palette-brown-900})") !important;
+  }
+
+  .mdl-color--brown-900 {
+    background-color: unquote("rgb(#{$palette-brown-900})") !important;
+  }
+
+  // Grey
+
+  .mdl-color-text--grey {
+    color: unquote("rgb(#{$palette-grey-500})") !important;
+  }
+
+  .mdl-color--grey {
+    background-color: unquote("rgb(#{$palette-grey-500})") !important;
+  }
+
+  .mdl-color-text--grey-50 {
+    color: unquote("rgb(#{$palette-grey-50})") !important;
+  }
+
+  .mdl-color--grey-50 {
+    background-color: unquote("rgb(#{$palette-grey-50})") !important;
+  }
+
+  .mdl-color-text--grey-100 {
+    color: unquote("rgb(#{$palette-grey-100})") !important;
+  }
+
+  .mdl-color--grey-100 {
+    background-color: unquote("rgb(#{$palette-grey-100})") !important;
+  }
+
+  .mdl-color-text--grey-200 {
+    color: unquote("rgb(#{$palette-grey-200})") !important;
+  }
+
+  .mdl-color--grey-200 {
+    background-color: unquote("rgb(#{$palette-grey-200})") !important;
+  }
+
+  .mdl-color-text--grey-300 {
+    color: unquote("rgb(#{$palette-grey-300})") !important;
+  }
+
+  .mdl-color--grey-300 {
+    background-color: unquote("rgb(#{$palette-grey-300})") !important;
+  }
+
+  .mdl-color-text--grey-400 {
+    color: unquote("rgb(#{$palette-grey-400})") !important;
+  }
+
+  .mdl-color--grey-400 {
+    background-color: unquote("rgb(#{$palette-grey-400})") !important;
+  }
+
+  .mdl-color-text--grey-500 {
+    color: unquote("rgb(#{$palette-grey-500})") !important;
+  }
+
+  .mdl-color--grey-500 {
+    background-color: unquote("rgb(#{$palette-grey-500})") !important;
+  }
+
+  .mdl-color-text--grey-600 {
+    color: unquote("rgb(#{$palette-grey-600})") !important;
+  }
+
+  .mdl-color--grey-600 {
+    background-color: unquote("rgb(#{$palette-grey-600})") !important;
+  }
+
+  .mdl-color-text--grey-700 {
+    color: unquote("rgb(#{$palette-grey-700})") !important;
+  }
+
+  .mdl-color--grey-700 {
+    background-color: unquote("rgb(#{$palette-grey-700})") !important;
+  }
+
+  .mdl-color-text--grey-800 {
+    color: unquote("rgb(#{$palette-grey-800})") !important;
+  }
+
+  .mdl-color--grey-800 {
+    background-color: unquote("rgb(#{$palette-grey-800})") !important;
+  }
+
+  .mdl-color-text--grey-900 {
+    color: unquote("rgb(#{$palette-grey-900})") !important;
+  }
+
+  .mdl-color--grey-900 {
+    background-color: unquote("rgb(#{$palette-grey-900})") !important;
+  }
+
+  // Blue Grey
+
+  .mdl-color-text--blue-grey {
+    color: unquote("rgb(#{$palette-blue-grey-500})") !important;
+  }
+
+  .mdl-color--blue-grey {
+    background-color: unquote("rgb(#{$palette-blue-grey-500})") !important;
+  }
+
+  .mdl-color-text--blue-grey-50 {
+    color: unquote("rgb(#{$palette-blue-grey-50})") !important;
+  }
+
+  .mdl-color--blue-grey-50 {
+    background-color: unquote("rgb(#{$palette-blue-grey-50})") !important;
+  }
+
+  .mdl-color-text--blue-grey-100 {
+    color: unquote("rgb(#{$palette-blue-grey-100})") !important;
+  }
+
+  .mdl-color--blue-grey-100 {
+    background-color: unquote("rgb(#{$palette-blue-grey-100})") !important;
+  }
+
+  .mdl-color-text--blue-grey-200 {
+    color: unquote("rgb(#{$palette-blue-grey-200})") !important;
+  }
+
+  .mdl-color--blue-grey-200 {
+    background-color: unquote("rgb(#{$palette-blue-grey-200})") !important;
+  }
+
+  .mdl-color-text--blue-grey-300 {
+    color: unquote("rgb(#{$palette-blue-grey-300})") !important;
+  }
+
+  .mdl-color--blue-grey-300 {
+    background-color: unquote("rgb(#{$palette-blue-grey-300})") !important;
+  }
+
+  .mdl-color-text--blue-grey-400 {
+    color: unquote("rgb(#{$palette-blue-grey-400})") !important;
+  }
+
+  .mdl-color--blue-grey-400 {
+    background-color: unquote("rgb(#{$palette-blue-grey-400})") !important;
+  }
+
+  .mdl-color-text--blue-grey-500 {
+    color: unquote("rgb(#{$palette-blue-grey-500})") !important;
+  }
+
+  .mdl-color--blue-grey-500 {
+    background-color: unquote("rgb(#{$palette-blue-grey-500})") !important;
+  }
+
+  .mdl-color-text--blue-grey-600 {
+    color: unquote("rgb(#{$palette-blue-grey-600})") !important;
+  }
+
+  .mdl-color--blue-grey-600 {
+    background-color: unquote("rgb(#{$palette-blue-grey-600})") !important;
+  }
+
+  .mdl-color-text--blue-grey-700 {
+    color: unquote("rgb(#{$palette-blue-grey-700})") !important;
+  }
+
+  .mdl-color--blue-grey-700 {
+    background-color: unquote("rgb(#{$palette-blue-grey-700})") !important;
+  }
+
+  .mdl-color-text--blue-grey-800 {
+    color: unquote("rgb(#{$palette-blue-grey-800})") !important;
+  }
+
+  .mdl-color--blue-grey-800 {
+    background-color: unquote("rgb(#{$palette-blue-grey-800})") !important;
+  }
+
+  .mdl-color-text--blue-grey-900 {
+    color: unquote("rgb(#{$palette-blue-grey-900})") !important;
+  }
+
+  .mdl-color--blue-grey-900 {
+    background-color: unquote("rgb(#{$palette-blue-grey-900})") !important;
+  }
+
+  // Black
+
+  .mdl-color--black {
+    background-color: unquote("rgb(#{$color-black})") !important;
+  }
+
+  .mdl-color-text--black {
+    color: unquote("rgb(#{$color-black})") !important;
+  }
+
+  // White
+
+  .mdl-color--white {
+    background-color: unquote("rgb(#{$color-white})") !important;
+  }
+
+  .mdl-color-text--white {
+    color: unquote("rgb(#{$color-white})") !important;
+  }
+}
+
+// Primary and accent
+
+.mdl-color--primary {
+  background-color: unquote("rgb(#{$color-primary})") !important;
+}
+
+.mdl-color--primary-contrast {
+  background-color: unquote("rgb(#{$color-primary-contrast})") !important;
+}
+
+.mdl-color--primary-dark {
+  background-color: unquote("rgb(#{$color-primary-dark})") !important;
+}
+
+.mdl-color--accent {
+  background-color: unquote("rgb(#{$color-accent})") !important;
+}
+
+.mdl-color--accent-contrast {
+  background-color: unquote("rgb(#{$color-accent-contrast})") !important;
+}
+
+.mdl-color-text--primary {
+  color: unquote("rgb(#{$color-primary})") !important;
+}
+
+.mdl-color-text--primary-contrast {
+  color: unquote("rgb(#{$color-primary-contrast})") !important;
+}
+
+.mdl-color-text--primary-dark {
+  color: unquote("rgb(#{$color-primary-dark})") !important;
+}
+
+.mdl-color-text--accent {
+  color: unquote("rgb(#{$color-accent})") !important;
+}
+
+.mdl-color-text--accent-contrast {
+  color: unquote("rgb(#{$color-accent-contrast})") !important;
+}
diff --git a/node_modules/material-design-lite/src/palette/demo.css b/node_modules/material-design-lite/src/palette/demo.css
new file mode 100644
index 0000000..8370558
--- /dev/null
+++ b/node_modules/material-design-lite/src/palette/demo.css
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.demo-page--palette.demo-preview-block {
+  display: inline-block;
+}
+
+.demo-palette {
+  margin-top: 15px;
+  width: 360px;
+  float: left;
+}
+
+@media screen and (max-width: 360px ) {
+  .demo-palette {
+    width: 272px;
+  }
+}
+
+.demo-palette-color, .demo-palette-heading {
+  max-width: 300px;
+  padding: 15px;
+  color: white;
+}
+
+.demo-palette .demo-palette--dark-text,
+.demo-palette-heading.demo-palette--dark-text .demo-palette-name {
+  color: #000;
+}
+
+.demo-palette-name {
+  padding: 0 0 60px 0;
+}
+
+.demo-palette-single {
+  padding: 15px 15px 25px;
+}
+
+.demo-palette-single .demo-palette-name {
+  padding: 0;
+  float: left;
+}
diff --git a/node_modules/material-design-lite/src/palette/demo.html b/node_modules/material-design-lite/src/palette/demo.html
new file mode 100644
index 0000000..9cf40c5
--- /dev/null
+++ b/node_modules/material-design-lite/src/palette/demo.html
@@ -0,0 +1,417 @@
+    <div class="demo-preview-block demo-page--palette">
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--red-500">
+          <div class="demo-palette-name">Red</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--red-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--red-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--red-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--red-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--red-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--red-500">500</div>
+        <div class="demo-palette-color mdl-color--red-600">600</div>
+        <div class="demo-palette-color mdl-color--red-700">700</div>
+        <div class="demo-palette-color mdl-color--red-800">800</div>
+        <div class="demo-palette-color mdl-color--red-900">900</div>
+        <div class="demo-palette-color mdl-color--red-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--red-A200">A200</div>
+        <div class="demo-palette-color mdl-color--red-A400">A400</div>
+        <div class="demo-palette-color mdl-color--red-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--pink-500">
+          <div class="demo-palette-name">Pink</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--pink-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--pink-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--pink-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--pink-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--pink-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--pink-500">500</div>
+        <div class="demo-palette-color mdl-color--pink-600">600</div>
+        <div class="demo-palette-color mdl-color--pink-700">700</div>
+        <div class="demo-palette-color mdl-color--pink-800">800</div>
+        <div class="demo-palette-color mdl-color--pink-900">900</div>
+        <div class="demo-palette-color mdl-color--pink-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--pink-A200">A200</div>
+        <div class="demo-palette-color mdl-color--pink-A400">A400</div>
+        <div class="demo-palette-color mdl-color--pink-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--purple-500">
+          <div class="demo-palette-name">Purple</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--purple-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--purple-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--purple-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--purple-300">300</div>
+        <div class="demo-palette-color mdl-color--purple-400">400</div>
+        <div class="demo-palette-color mdl-color--purple-500">500</div>
+        <div class="demo-palette-color mdl-color--purple-600">600</div>
+        <div class="demo-palette-color mdl-color--purple-700">700</div>
+        <div class="demo-palette-color mdl-color--purple-800">800</div>
+        <div class="demo-palette-color mdl-color--purple-900">900</div>
+        <div class="demo-palette-color mdl-color--purple-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--purple-A200">A200</div>
+        <div class="demo-palette-color mdl-color--purple-A400">A400</div>
+        <div class="demo-palette-color mdl-color--purple-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--deep-purple-500">
+          <div class="demo-palette-name">Deep Purple</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--deep-purple-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--deep-purple-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--deep-purple-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--deep-purple-300">300</div>
+        <div class="demo-palette-color mdl-color--deep-purple-400">400</div>
+        <div class="demo-palette-color mdl-color--deep-purple-500">500</div>
+        <div class="demo-palette-color mdl-color--deep-purple-600">600</div>
+        <div class="demo-palette-color mdl-color--deep-purple-700">700</div>
+        <div class="demo-palette-color mdl-color--deep-purple-800">800</div>
+        <div class="demo-palette-color mdl-color--deep-purple-900">900</div>
+        <div class="demo-palette-color mdl-color--deep-purple-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--deep-purple-A200">A200</div>
+        <div class="demo-palette-color mdl-color--deep-purple-A400">A400</div>
+        <div class="demo-palette-color mdl-color--deep-purple-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--indigo-500">
+          <div class="demo-palette-name">Indigo</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--indigo-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--indigo-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--indigo-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--indigo-300">300</div>
+        <div class="demo-palette-color mdl-color--indigo-400">400</div>
+        <div class="demo-palette-color mdl-color--indigo-500">500</div>
+        <div class="demo-palette-color mdl-color--indigo-600">600</div>
+        <div class="demo-palette-color mdl-color--indigo-700">700</div>
+        <div class="demo-palette-color mdl-color--indigo-800">800</div>
+        <div class="demo-palette-color mdl-color--indigo-900">900</div>
+        <div class="demo-palette-color mdl-color--indigo-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--indigo-A200">A200</div>
+        <div class="demo-palette-color mdl-color--indigo-A400">A400</div>
+        <div class="demo-palette-color mdl-color--indigo-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--blue-500">
+          <div class="demo-palette-name">Blue</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--blue-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--blue-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--blue-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--blue-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--blue-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--blue-500">500</div>
+        <div class="demo-palette-color mdl-color--blue-600">600</div>
+        <div class="demo-palette-color mdl-color--blue-700">700</div>
+        <div class="demo-palette-color mdl-color--blue-800">800</div>
+        <div class="demo-palette-color mdl-color--blue-900">900</div>
+        <div class="demo-palette-color mdl-color--blue-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--blue-A200">A200</div>
+        <div class="demo-palette-color mdl-color--blue-A400">A400</div>
+        <div class="demo-palette-color mdl-color--blue-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--light-blue-500">
+          <div class="demo-palette-name">Light Blue</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--light-blue-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--light-blue-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--light-blue-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--light-blue-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--light-blue-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--light-blue-500">500</div>
+        <div class="demo-palette-color mdl-color--light-blue-600">600</div>
+        <div class="demo-palette-color mdl-color--light-blue-700">700</div>
+        <div class="demo-palette-color mdl-color--light-blue-800">800</div>
+        <div class="demo-palette-color mdl-color--light-blue-900">900</div>
+        <div class="demo-palette-color mdl-color--light-blue-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--light-blue-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--light-blue-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--light-blue-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--cyan-500">
+          <div class="demo-palette-name">Cyan</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--cyan-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--cyan-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--cyan-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--cyan-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--cyan-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--cyan-500">500</div>
+        <div class="demo-palette-color mdl-color--cyan-600">600</div>
+        <div class="demo-palette-color mdl-color--cyan-700">700</div>
+        <div class="demo-palette-color mdl-color--cyan-800">800</div>
+        <div class="demo-palette-color mdl-color--cyan-900">900</div>
+        <div class="demo-palette-color mdl-color--cyan-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--cyan-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--cyan-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--cyan-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--teal-500">
+          <div class="demo-palette-name">Teal</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--teal-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--teal-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--teal-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--teal-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--teal-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--teal-500">500</div>
+        <div class="demo-palette-color mdl-color--teal-600">600</div>
+        <div class="demo-palette-color mdl-color--teal-700">700</div>
+        <div class="demo-palette-color mdl-color--teal-800">800</div>
+        <div class="demo-palette-color mdl-color--teal-900">900</div>
+        <div class="demo-palette-color mdl-color--teal-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--teal-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--teal-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--teal-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--green-500">
+          <div class="demo-palette-name">Green</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--green-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--green-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--green-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--green-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--green-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--green-500">500</div>
+        <div class="demo-palette-color mdl-color--green-600">600</div>
+        <div class="demo-palette-color mdl-color--green-700">700</div>
+        <div class="demo-palette-color mdl-color--green-800">800</div>
+        <div class="demo-palette-color mdl-color--green-900">900</div>
+        <div class="demo-palette-color mdl-color--green-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--green-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--green-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--green-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--light-green-500">
+          <div class="demo-palette-name">Light Green</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--light-green-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--light-green-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--light-green-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--light-green-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--light-green-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--light-green-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--light-green-600 demo-palette--dark-text">600</div>
+        <div class="demo-palette-color mdl-color--light-green-700 demo-palette--dark-text">700</div>
+        <div class="demo-palette-color mdl-color--light-green-800">800</div>
+        <div class="demo-palette-color mdl-color--light-green-900">900</div>
+        <div class="demo-palette-color mdl-color--light-green-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--light-green-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--light-green-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--light-green-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--lime-500 demo-palette--dark-text">
+          <div class="demo-palette-name">Lime</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--lime-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--lime-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--lime-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--lime-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--lime-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--lime-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--lime-600 demo-palette--dark-text">600</div>
+        <div class="demo-palette-color mdl-color--lime-700 demo-palette--dark-text">700</div>
+        <div class="demo-palette-color mdl-color--lime-800 demo-palette--dark-text">800</div>
+        <div class="demo-palette-color mdl-color--lime-900">900</div>
+        <div class="demo-palette-color mdl-color--lime-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--lime-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--lime-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--lime-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--yellow-500 demo-palette--dark-text">
+          <div class="demo-palette-name">Yellow</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--yellow-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--yellow-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--yellow-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--yellow-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--yellow-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--yellow-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--yellow-600 demo-palette--dark-text">600</div>
+        <div class="demo-palette-color mdl-color--yellow-700 demo-palette--dark-text">700</div>
+        <div class="demo-palette-color mdl-color--yellow-800 demo-palette--dark-text">800</div>
+        <div class="demo-palette-color mdl-color--yellow-900 demo-palette--dark-text">900</div>
+        <div class="demo-palette-color mdl-color--yellow-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--yellow-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--yellow-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--yellow-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--amber-500 demo-palette--dark-text">
+          <div class="demo-palette-name">Amber</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--amber-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--amber-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--amber-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--amber-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--amber-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--amber-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--amber-600 demo-palette--dark-text">600</div>
+        <div class="demo-palette-color mdl-color--amber-700 demo-palette--dark-text">700</div>
+        <div class="demo-palette-color mdl-color--amber-800 demo-palette--dark-text">800</div>
+        <div class="demo-palette-color mdl-color--amber-900 demo-palette--dark-text">900</div>
+        <div class="demo-palette-color mdl-color--amber-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--amber-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--amber-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--amber-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--orange-500 demo-palette--dark-text">
+          <div class="demo-palette-name">Orange</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--orange-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--orange-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--orange-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--orange-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--orange-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--orange-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--orange-600 demo-palette--dark-text">600</div>
+        <div class="demo-palette-color mdl-color--orange-700 demo-palette--dark-text">700</div>
+        <div class="demo-palette-color mdl-color--orange-800">800</div>
+        <div class="demo-palette-color mdl-color--orange-900">900</div>
+        <div class="demo-palette-color mdl-color--orange-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--orange-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--orange-A400 demo-palette--dark-text">A400</div>
+        <div class="demo-palette-color mdl-color--orange-A700 demo-palette--dark-text">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--deep-orange-500">
+          <div class="demo-palette-name">Deep Orange</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--deep-orange-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--deep-orange-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--deep-orange-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--deep-orange-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--deep-orange-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--deep-orange-500">500</div>
+        <div class="demo-palette-color mdl-color--deep-orange-600">600</div>
+        <div class="demo-palette-color mdl-color--deep-orange-700">700</div>
+        <div class="demo-palette-color mdl-color--deep-orange-800">800</div>
+        <div class="demo-palette-color mdl-color--deep-orange-900">900</div>
+        <div class="demo-palette-color mdl-color--deep-orange-A100 demo-palette--dark-text">A100</div>
+        <div class="demo-palette-color mdl-color--deep-orange-A200 demo-palette--dark-text">A200</div>
+        <div class="demo-palette-color mdl-color--deep-orange-A400">A400</div>
+        <div class="demo-palette-color mdl-color--deep-orange-A700">A700</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--brown-500">
+          <div class="demo-palette-name">Brown</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--brown-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--brown-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--brown-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--brown-300">300</div>
+        <div class="demo-palette-color mdl-color--brown-400">400</div>
+        <div class="demo-palette-color mdl-color--brown-500">500</div>
+        <div class="demo-palette-color mdl-color--brown-600">600</div>
+        <div class="demo-palette-color mdl-color--brown-700">700</div>
+        <div class="demo-palette-color mdl-color--brown-800">800</div>
+        <div class="demo-palette-color mdl-color--brown-900">900</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--grey-500 demo-palette--dark-text">
+          <div class="demo-palette-name">Grey</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--grey-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--grey-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--grey-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--grey-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--grey-400 demo-palette--dark-text">400</div>
+        <div class="demo-palette-color mdl-color--grey-500 demo-palette--dark-text">500</div>
+        <div class="demo-palette-color mdl-color--grey-600">600</div>
+        <div class="demo-palette-color mdl-color--grey-700">700</div>
+        <div class="demo-palette-color mdl-color--grey-800">800</div>
+        <div class="demo-palette-color mdl-color--grey-900">900</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading mdl-color--blue-grey-500">
+          <div class="demo-palette-name">Blue Grey</div>
+
+          500
+        </div>
+        <div class="demo-palette-color mdl-color--blue-grey-50 demo-palette--dark-text">50</div>
+        <div class="demo-palette-color mdl-color--blue-grey-100 demo-palette--dark-text">100</div>
+        <div class="demo-palette-color mdl-color--blue-grey-200 demo-palette--dark-text">200</div>
+        <div class="demo-palette-color mdl-color--blue-grey-300 demo-palette--dark-text">300</div>
+        <div class="demo-palette-color mdl-color--blue-grey-400">400</div>
+        <div class="demo-palette-color mdl-color--blue-grey-500">500</div>
+        <div class="demo-palette-color mdl-color--blue-grey-600">600</div>
+        <div class="demo-palette-color mdl-color--blue-grey-700">700</div>
+        <div class="demo-palette-color mdl-color--blue-grey-800">800</div>
+        <div class="demo-palette-color mdl-color--blue-grey-900">900</div>
+      </div>
+
+      <div class="demo-palette">
+        <div class="demo-palette-heading demo-palette-single mdl-color--black">
+          <div class="demo-palette-name">Black</div>
+        </div>
+        <div class="demo-palette-heading demo-palette-single mdl-color--white demo-palette--dark-text">
+          <div class="demo-palette-name">White</div>
+        </div>
+      </div>
+
+    </div>
diff --git a/node_modules/material-design-lite/src/progress/README.md b/node_modules/material-design-lite/src/progress/README.md
new file mode 100755
index 0000000..0fe18f0
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/README.md
@@ -0,0 +1,42 @@
+## Introduction
+
+The Material Design Lite (MDL) **progress** component is a visual indicator of background activity in a web page or application. A progress indicator consists of a (typically) horizontal bar containing some animation that conveys a sense of motion. While some progress devices indicate an approximate or specific percentage of completion, the MDL progress component simply communicates the fact that an activity is ongoing and is not yet complete.
+
+Progress indicators are an established but non-standardized feature in user interfaces, and provide users with a visual clue to an application's status. Their design and use is therefore an important factor in the overall user experience. See the progress component's [Material Design specifications page](http://www.google.com/design/spec/components/progress-activity.html) for details.
+
+### To include an MDL **progress** component:
+
+&nbsp;1. Code a `<div>` element. Include any desired attributes and values, such as an id or width &mdash; typically done using external CSS rather than the inline `style` attribute as shown here.
+```html
+<div id="prog1" style="width:250px"></div>
+```
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the div using the `class` attribute.
+```html
+<div id="prog1" style="width:250px" class="mdl-js-progress"></div>
+```
+
+The progress component is ready for use.
+
+#### Examples
+
+A static (non-animated) progress indicator.
+```html
+<div id="progstatic" style="width:250px" class="mdl-js-progress"></div>
+```
+
+An active (animated) progress indicator.
+```html
+<div id="progactive" style="width:200px" class="mdl-js-progress
+ mdl-progress--indeterminate"></div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the progress indicator. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-js-progress` | Assigns basic MDL behavior to progress indicator | Required |
+| `mdl-progress--indeterminate` | Applies animation effect | Optional |
+
+> Note: `mdl-progress__intermediate` does exist within the codebase. It is deprecated since the name is not in BEM alignment. It will be removed in 2.0.
diff --git a/node_modules/material-design-lite/src/progress/_progress.scss b/node_modules/material-design-lite/src/progress/_progress.scss
new file mode 100644
index 0000000..3d384a8
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/_progress.scss
@@ -0,0 +1,120 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-progress {
+  display: block;
+  position: relative;
+  height: $bar-height;
+  width: 500px;
+  max-width: 100%;
+}
+
+.mdl-progress > .bar {
+  display: block;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  width: 0%;
+  transition: width 0.2s $animation-curve-default;
+}
+
+.mdl-progress > .progressbar {
+  background-color: $progress-main-color;
+  z-index: 1;
+  left: 0;
+}
+
+.mdl-progress > .bufferbar {
+  background-image: linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),
+    linear-gradient(to right, $progress-main-color, $progress-main-color);
+  z-index: 0;
+  left: 0;
+}
+
+.mdl-progress > .auxbar {
+  right: 0;
+}
+
+// Webkit only
+@supports (-webkit-appearance:none) {
+  .mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,
+  .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
+    background-image: linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),
+      linear-gradient(to right, $progress-main-color, $progress-main-color);
+    mask: url('#{$progress-image-path}/buffer.svg?embed');
+  }
+}
+
+.mdl-progress:not(.mdl-progress--indeterminate) > .auxbar,
+.mdl-progress:not(.mdl-progress__indeterminate) > .auxbar {
+  background-image: linear-gradient(to right, $progress-fallback-buffer-color, $progress-fallback-buffer-color),
+    linear-gradient(to right, $progress-main-color, $progress-main-color);
+}
+
+.mdl-progress.mdl-progress--indeterminate > .bar1,
+.mdl-progress.mdl-progress__indeterminate > .bar1 {
+  background-color: $progress-main-color;
+  animation-name: indeterminate1;
+  animation-duration: 2s;
+  animation-iteration-count: infinite;
+  animation-timing-function: linear;
+}
+
+.mdl-progress.mdl-progress--indeterminate > .bar3,
+.mdl-progress.mdl-progress__indeterminate > .bar3 {
+  background-image: none;
+  background-color: $progress-main-color;
+  animation-name: indeterminate2;
+  animation-duration: 2s;
+  animation-iteration-count: infinite;
+  animation-timing-function: linear;
+}
+
+@keyframes indeterminate1 {
+  0% {
+    left: 0%;
+    width: 0%;
+  }
+  50% {
+    left: 25%;
+    width: 75%;
+  }
+  75% {
+    left: 100%;
+    width: 0%;
+  }
+}
+
+@keyframes indeterminate2 {
+  0% {
+    left: 0%;
+    width: 0%;
+  }
+  50% {
+    left: 0%;
+    width: 0%;
+  }
+  75% {
+    left: 0%;
+    width: 25%;
+  }
+  100% {
+    left: 100%;
+    width: 0%;
+  }
+}
diff --git a/node_modules/material-design-lite/src/progress/progress.js b/node_modules/material-design-lite/src/progress/progress.js
new file mode 100644
index 0000000..442e2d6
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/progress.js
@@ -0,0 +1,123 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Progress MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialProgress = function MaterialProgress(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialProgress'] = MaterialProgress;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialProgress.prototype.Constant_ = {
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialProgress.prototype.CssClasses_ = {
+    INDETERMINATE_CLASS: 'mdl-progress__indeterminate'
+  };
+
+  /**
+   * Set the current progress of the progressbar.
+   *
+   * @param {number} p Percentage of the progress (0-100)
+   * @public
+   */
+  MaterialProgress.prototype.setProgress = function(p) {
+    if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {
+      return;
+    }
+
+    this.progressbar_.style.width = p + '%';
+  };
+  MaterialProgress.prototype['setProgress'] =
+      MaterialProgress.prototype.setProgress;
+
+  /**
+   * Set the current progress of the buffer.
+   *
+   * @param {number} p Percentage of the buffer (0-100)
+   * @public
+   */
+  MaterialProgress.prototype.setBuffer = function(p) {
+    this.bufferbar_.style.width = p + '%';
+    this.auxbar_.style.width = (100 - p) + '%';
+  };
+  MaterialProgress.prototype['setBuffer'] =
+      MaterialProgress.prototype.setBuffer;
+
+  /**
+   * Initialize element.
+   */
+  MaterialProgress.prototype.init = function() {
+    if (this.element_) {
+      var el = document.createElement('div');
+      el.className = 'progressbar bar bar1';
+      this.element_.appendChild(el);
+      this.progressbar_ = el;
+
+      el = document.createElement('div');
+      el.className = 'bufferbar bar bar2';
+      this.element_.appendChild(el);
+      this.bufferbar_ = el;
+
+      el = document.createElement('div');
+      el.className = 'auxbar bar bar3';
+      this.element_.appendChild(el);
+      this.auxbar_ = el;
+
+      this.progressbar_.style.width = '0%';
+      this.bufferbar_.style.width = '100%';
+      this.auxbar_.style.width = '0%';
+
+      this.element_.classList.add('is-upgraded');
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialProgress,
+    classAsString: 'MaterialProgress',
+    cssClass: 'mdl-js-progress',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-buffering-demo.html b/node_modules/material-design-lite/src/progress/snippets/progress-buffering-demo.html
new file mode 100644
index 0000000..1fa26ac
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-buffering-demo.html
@@ -0,0 +1,8 @@
+<style>
+  .demo-progress__progress-buffering .mdl-progress {
+    width: 50vw;
+    max-width: 260px;
+  }
+</style>
+
+{% include "progress-buffering.html" %}
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-buffering.html b/node_modules/material-design-lite/src/progress/snippets/progress-buffering.html
new file mode 100644
index 0000000..79d5166
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-buffering.html
@@ -0,0 +1,8 @@
+<!-- MDL Progress Bar with Buffering -->
+<div id="p3" class="mdl-progress mdl-js-progress"></div>
+<script>
+  document.querySelector('#p3').addEventListener('mdl-componentupgraded', function() {
+    this.MaterialProgress.setProgress(33);
+    this.MaterialProgress.setBuffer(87);
+  });
+</script>
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-default-demo.html b/node_modules/material-design-lite/src/progress/snippets/progress-default-demo.html
new file mode 100644
index 0000000..cd73609
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-default-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-progress__progress-default .mdl-progress {
+    width: 50vw;
+    max-width: 260px;
+  }
+</style>
+{% include "progress-default.html" %}
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-default.html b/node_modules/material-design-lite/src/progress/snippets/progress-default.html
new file mode 100644
index 0000000..79d5c38
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-default.html
@@ -0,0 +1,7 @@
+<!-- Simple MDL Progress Bar -->
+<div id="p1" class="mdl-progress mdl-js-progress"></div>
+<script>
+  document.querySelector('#p1').addEventListener('mdl-componentupgraded', function() {
+    this.MaterialProgress.setProgress(44);
+  });
+</script>
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate-demo.html b/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate-demo.html
new file mode 100644
index 0000000..8360d5b
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-progress__progress-indeterminate .mdl-progress {
+    width: 50vw;
+    max-width: 260px;
+  }
+</style>
+{% include "progress-indeterminate.html" %}
diff --git a/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate.html b/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate.html
new file mode 100644
index 0000000..e0e21c7
--- /dev/null
+++ b/node_modules/material-design-lite/src/progress/snippets/progress-indeterminate.html
@@ -0,0 +1,2 @@
+<!-- MDL Progress Bar with Indeterminate Progress -->
+<div id="p2" class="mdl-progress mdl-js-progress mdl-progress__indeterminate"></div>
diff --git a/node_modules/material-design-lite/src/radio/README.md b/node_modules/material-design-lite/src/radio/README.md
new file mode 100755
index 0000000..c7781bc
--- /dev/null
+++ b/node_modules/material-design-lite/src/radio/README.md
@@ -0,0 +1,76 @@
+## Introduction
+
+The Material Design Lite (MDL) **radio** component is an enhanced version of the standard HTML `<input type="radio">`, or "radio button" element. A radio button consists of a small circle and, typically, text that clearly communicates a condition that will be set when the user clicks or touches it. Radio buttons always appear in groups of two or more and, while they can be individually selected, can only be deselected by selecting a different radio button in the same group (which deselects all other radio buttons in the group). The MDL radio component allows you to add display and click effects.
+
+Radio buttons are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the radio component's [Material Design specifications page](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-radio-button) for details.
+
+The enhanced radio component has a more vivid visual look than a standard radio button, and may be initially or programmatically *disabled*.
+
+### To include an MDL **radio** component:
+
+&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the radio button it will contain. The `for` attribute is optional when the `<input>` element is contained inside the `<label>` element, but is recommended for clarity.
+```html
+<label for="radio1">
+...
+</label>
+```
+&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `"radio"`. Also give it an `id` attribute whose value matches the label's `for` attribute value, and a `name` attribute whose value identifies the radio button group. Optionally, give it a `value` attribute whose value provides some information about the radio button for scripting purposes.
+```html
+<label for="radio1">
+  <input type="radio" id="radio1" name="flash" value="on">
+</label>
+```
+&nbsp;3. Also inside the label, after the radio button, code a `<span>` element containing the radio button's text caption.
+```html
+<label for="radio1">
+  <input type="radio" id="radio1" name="flash" value="on">
+  <span>Always on</span>
+</label>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, checkbox, and caption using the `class` attribute.
+```html
+<label for="radio1" class="mdl-radio mdl-js-radio">
+  <input type="radio" id="radio1" name="flash" value="on" class="mdl-radio__button">
+  <span class="mdl-radio__label">Always on</span>
+</label>
+```
+&nbsp;5. Repeat steps 1 through 4 for the other radio components in the group. For each one:
+* on the `label` element, specify a unique `for` attribute value
+* on the `input` element, specify an `id` attribute value that matches its `label` element's `for` attribute value
+* on the `input` element, specify the same `name` attribute value for all radio components in the group
+* optionally, on the `input` element, specify a unique `value` attribute value
+
+The radio components are ready for use.
+
+#### Example
+
+A group of radio buttons to control a camera's flash setting.
+```html
+<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash1">
+  <input checked class="mdl-radio__button" id="flash1" name="flash" type="radio"
+   value="on">
+  <span class="mdl-radio__label">Always on</span>
+</label>
+<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash2">
+  <input class="mdl-radio__button" id="flash2" name="flash" type="radio" value="off">
+  <span class="mdl-radio__label">Always off</span>
+</label>
+<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash3">
+  <input class="mdl-radio__button" id="flash3" name="flash" type="radio" value="auto">
+  <span class="mdl-radio__label">Automatic</span>
+</label>
+```
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the radio button. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-radio` | Defines label as an MDL component | Required on label element|
+| `mdl-js-radio` | Assigns basic MDL behavior to label | Required on label element |
+| `mdl-radio__button` | Applies basic MDL behavior to radio | Required on input element (radio button) |
+| `mdl-radio__label` | Applies basic MDL behavior to caption | Required on span element (caption) |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (radio button) |
+
+>**Note:** Disabled versions of all the available radio button types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type="radio" id="radio5" name="flash" class="mdl-radio__button" disabled>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/radio/_radio.scss b/node_modules/material-design-lite/src/radio/_radio.scss
new file mode 100644
index 0000000..e226826
--- /dev/null
+++ b/node_modules/material-design-lite/src/radio/_radio.scss
@@ -0,0 +1,163 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-radio {
+  position: relative;
+
+  font-size: $radio-label-font-size;
+  line-height: $radio-label-height;
+
+  display: inline-block;
+
+  vertical-align: middle;
+
+  box-sizing: border-box;
+  height: $radio-label-height;
+  margin: 0;
+  padding-left: 0;
+
+  &.is-upgraded {
+    padding-left: $radio-button-size + $radio-padding;
+  }
+}
+
+.mdl-radio__button {
+  line-height: $radio-label-height;
+
+  .mdl-radio.is-upgraded & {
+    // Hide input element, while still making it respond to focus.
+    position: absolute;
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+    -ms-appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+    border: none;
+  }
+}
+
+.mdl-radio__outer-circle {
+  position: absolute;
+  top: $radio-top-offset;
+  left: 0;
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: $radio-button-size;
+  height: $radio-button-size;
+  margin: 0;
+
+  cursor: pointer;
+
+  border: 2px solid $radio-off-color;
+  border-radius: 50%;
+
+  z-index: 2;
+
+  .mdl-radio.is-checked & {
+    border: 2px solid $radio-color;
+  }
+
+  fieldset[disabled] .mdl-radio,
+  .mdl-radio.is-disabled & {
+    border: 2px solid $radio-disabled-color;
+    cursor: auto;
+  }
+}
+
+.mdl-radio__inner-circle {
+  position: absolute;
+  z-index: 1;
+  margin: 0;
+  top: $radio-top-offset + $radio-inner-margin;
+  left: $radio-inner-margin;
+
+  box-sizing: border-box;
+  width: $radio-button-size - ($radio-inner-margin * 2);
+  height: $radio-button-size - ($radio-inner-margin * 2);
+
+  cursor: pointer;
+
+  @include material-animation-default(0.28s);
+  transition-property: transform;
+  transform: scale(0, 0);
+
+  border-radius: 50%;
+  background: $radio-color;
+
+  .mdl-radio.is-checked & {
+    transform: scale(1, 1);
+  }
+
+  fieldset[disabled] .mdl-radio &,
+  .mdl-radio.is-disabled & {
+    background: $radio-disabled-color;
+    cursor: auto;
+  }
+
+  .mdl-radio.is-focused & {
+    box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1);
+  }
+}
+
+.mdl-radio__label {
+  cursor: pointer;
+
+  fieldset[disabled] .mdl-radio &,
+  .mdl-radio.is-disabled & {
+    color: $radio-disabled-color;
+    cursor: auto;
+  }
+}
+
+.mdl-radio__ripple-container {
+  position: absolute;
+  z-index: 2;
+  top: -(($radio-ripple-size - $radio-label-height) / 2);
+  left: -(($radio-ripple-size - $radio-button-size) / 2);
+
+  box-sizing: border-box;
+  width: $radio-ripple-size;
+  height: $radio-ripple-size;
+  border-radius: 50%;
+
+  cursor: pointer;
+
+  overflow: hidden;
+  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+
+  & .mdl-ripple {
+    background: $radio-color;
+  }
+
+  fieldset[disabled] .mdl-radio &,
+  .mdl-radio.is-disabled & {
+    cursor: auto;
+  }
+
+  fieldset[disabled] .mdl-radio & .mdl-ripple,
+  .mdl-radio.is-disabled & .mdl-ripple {
+    background: transparent;
+  }
+}
diff --git a/node_modules/material-design-lite/src/radio/radio.js b/node_modules/material-design-lite/src/radio/radio.js
new file mode 100644
index 0000000..63c1819
--- /dev/null
+++ b/node_modules/material-design-lite/src/radio/radio.js
@@ -0,0 +1,281 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Radio MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialRadio = function MaterialRadio(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialRadio'] = MaterialRadio;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialRadio.prototype.Constant_ = {
+    TINY_TIMEOUT: 0.001
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialRadio.prototype.CssClasses_ = {
+    IS_FOCUSED: 'is-focused',
+    IS_DISABLED: 'is-disabled',
+    IS_CHECKED: 'is-checked',
+    IS_UPGRADED: 'is-upgraded',
+    JS_RADIO: 'mdl-js-radio',
+    RADIO_BTN: 'mdl-radio__button',
+    RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',
+    RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',
+    RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE_CONTAINER: 'mdl-radio__ripple-container',
+    RIPPLE_CENTER: 'mdl-ripple--center',
+    RIPPLE: 'mdl-ripple'
+  };
+
+  /**
+   * Handle change of state.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRadio.prototype.onChange_ = function(event) {
+    // Since other radio buttons don't get change events, we need to look for
+    // them to update their classes.
+    var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);
+    for (var i = 0; i < radios.length; i++) {
+      var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);
+      // Different name == different group, so no point updating those.
+      if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {
+        if (typeof radios[i]['MaterialRadio'] !== 'undefined') {
+          radios[i]['MaterialRadio'].updateClasses_();
+        }
+      }
+    }
+  };
+
+  /**
+   * Handle focus.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRadio.prototype.onFocus_ = function(event) {
+    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle lost focus.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRadio.prototype.onBlur_ = function(event) {
+    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle mouseup.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRadio.prototype.onMouseup_ = function(event) {
+    this.blur_();
+  };
+
+  /**
+   * Update classes.
+   *
+   * @private
+   */
+  MaterialRadio.prototype.updateClasses_ = function() {
+    this.checkDisabled();
+    this.checkToggleState();
+  };
+
+  /**
+   * Add blur.
+   *
+   * @private
+   */
+  MaterialRadio.prototype.blur_ = function() {
+
+    // TODO: figure out why there's a focus event being fired after our blur,
+    // so that we can avoid this hack.
+    window.setTimeout(function() {
+      this.btnElement_.blur();
+    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));
+  };
+
+  // Public methods.
+
+  /**
+   * Check the components disabled state.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.checkDisabled = function() {
+    if (this.btnElement_.disabled) {
+      this.element_.classList.add(this.CssClasses_.IS_DISABLED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
+    }
+  };
+  MaterialRadio.prototype['checkDisabled'] =
+      MaterialRadio.prototype.checkDisabled;
+
+  /**
+   * Check the components toggled state.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.checkToggleState = function() {
+    if (this.btnElement_.checked) {
+      this.element_.classList.add(this.CssClasses_.IS_CHECKED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);
+    }
+  };
+  MaterialRadio.prototype['checkToggleState'] =
+      MaterialRadio.prototype.checkToggleState;
+
+  /**
+   * Disable radio.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.disable = function() {
+    this.btnElement_.disabled = true;
+    this.updateClasses_();
+  };
+  MaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;
+
+  /**
+   * Enable radio.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.enable = function() {
+    this.btnElement_.disabled = false;
+    this.updateClasses_();
+  };
+  MaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;
+
+  /**
+   * Check radio.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.check = function() {
+    this.btnElement_.checked = true;
+    this.onChange_(null);
+  };
+  MaterialRadio.prototype['check'] = MaterialRadio.prototype.check;
+
+  /**
+   * Uncheck radio.
+   *
+   * @public
+   */
+  MaterialRadio.prototype.uncheck = function() {
+    this.btnElement_.checked = false;
+    this.onChange_(null);
+  };
+  MaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;
+
+  /**
+   * Initialize element.
+   */
+  MaterialRadio.prototype.init = function() {
+    if (this.element_) {
+      this.btnElement_ = this.element_.querySelector('.' +
+          this.CssClasses_.RADIO_BTN);
+
+      this.boundChangeHandler_ = this.onChange_.bind(this);
+      this.boundFocusHandler_ = this.onChange_.bind(this);
+      this.boundBlurHandler_ = this.onBlur_.bind(this);
+      this.boundMouseUpHandler_ = this.onMouseup_.bind(this);
+
+      var outerCircle = document.createElement('span');
+      outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);
+
+      var innerCircle = document.createElement('span');
+      innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);
+
+      this.element_.appendChild(outerCircle);
+      this.element_.appendChild(innerCircle);
+
+      var rippleContainer;
+      if (this.element_.classList.contains(
+          this.CssClasses_.RIPPLE_EFFECT)) {
+        this.element_.classList.add(
+            this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+        rippleContainer = document.createElement('span');
+        rippleContainer.classList.add(
+            this.CssClasses_.RIPPLE_CONTAINER);
+        rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);
+        rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);
+        rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);
+
+        var ripple = document.createElement('span');
+        ripple.classList.add(this.CssClasses_.RIPPLE);
+
+        rippleContainer.appendChild(ripple);
+        this.element_.appendChild(rippleContainer);
+      }
+
+      this.btnElement_.addEventListener('change', this.boundChangeHandler_);
+      this.btnElement_.addEventListener('focus', this.boundFocusHandler_);
+      this.btnElement_.addEventListener('blur', this.boundBlurHandler_);
+      this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);
+
+      this.updateClasses_();
+      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialRadio,
+    classAsString: 'MaterialRadio',
+    cssClass: 'mdl-js-radio',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/radio/snippets/radio-off.html b/node_modules/material-design-lite/src/radio/snippets/radio-off.html
new file mode 100644
index 0000000..db347e6
--- /dev/null
+++ b/node_modules/material-design-lite/src/radio/snippets/radio-off.html
@@ -0,0 +1,4 @@
+<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="option-2">
+  <input type="radio" id="option-2" class="mdl-radio__button" name="options" value="2">
+  <span class="mdl-radio__label">Second</span>
+</label>
diff --git a/node_modules/material-design-lite/src/radio/snippets/radio-on.html b/node_modules/material-design-lite/src/radio/snippets/radio-on.html
new file mode 100644
index 0000000..223f2c6
--- /dev/null
+++ b/node_modules/material-design-lite/src/radio/snippets/radio-on.html
@@ -0,0 +1,4 @@
+<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="option-1">
+  <input type="radio" id="option-1" class="mdl-radio__button" name="options" value="1" checked>
+  <span class="mdl-radio__label">First</span>
+</label>
diff --git a/node_modules/material-design-lite/src/resets/_h5bp.scss b/node_modules/material-design-lite/src/resets/_h5bp.scss
new file mode 100644
index 0000000..e42fe3e
--- /dev/null
+++ b/node_modules/material-design-lite/src/resets/_h5bp.scss
@@ -0,0 +1,289 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+/*
+ * What follows is the result of much research on cross-browser styling.
+ * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
+ * Kroc Camen, and the H5BP dev community and team.
+ */
+
+/* ==========================================================================
+   Base styles: opinionated defaults
+   ========================================================================== */
+
+html {
+    color: $text-color-primary;
+    font-size: 1em;
+    line-height: 1.4;
+}
+
+/*
+ * Remove text-shadow in selection highlight:
+ * https://twitter.com/miketaylr/status/12228805301
+ *
+ * These selection rule sets have to be separate.
+ * Customize the background color to match your design.
+ */
+
+::selection {
+    background: #b3d4fc;
+    text-shadow: none;
+}
+
+/*
+ * A better looking default horizontal rule
+ */
+
+hr {
+    display: block;
+    height: 1px;
+    border: 0;
+    border-top: 1px solid #ccc;
+    margin: 1em 0;
+    padding: 0;
+}
+
+/*
+ * Remove the gap between audio, canvas, iframes,
+ * images, videos and the bottom of their containers:
+ * https://github.com/h5bp/html5-boilerplate/issues/440
+ */
+
+audio,
+canvas,
+iframe,
+img,
+svg,
+video {
+    vertical-align: middle;
+}
+
+/*
+ * Remove default fieldset styles.
+ */
+
+fieldset {
+    border: 0;
+    margin: 0;
+    padding: 0;
+}
+
+/*
+ * Allow only vertical resizing of textareas.
+ */
+
+textarea {
+    resize: vertical;
+}
+
+/* ==========================================================================
+   Browser Upgrade Prompt
+   ========================================================================== */
+
+.browserupgrade {
+    margin: 0.2em 0;
+    background: #ccc;
+    color: #000;
+    padding: 0.2em 0;
+}
+
+/* ==========================================================================
+   Author's custom styles
+   ========================================================================== */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* ==========================================================================
+   Helper classes
+   ========================================================================== */
+
+/*
+ * Hide visually and from screen readers:
+ */
+
+.hidden {
+    display: none !important;
+}
+
+/*
+ * Hide only visually, but have it available for screen readers:
+ * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
+ */
+
+.visuallyhidden {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+/*
+ * Extends the .visuallyhidden class to allow the element
+ * to be focusable when navigated to via the keyboard:
+ * https://www.drupal.org/node/897638
+ */
+
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus {
+    clip: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    position: static;
+    width: auto;
+}
+
+/*
+ * Hide visually and from screen readers, but maintain layout
+ */
+
+.invisible {
+    visibility: hidden;
+}
+
+/*
+ * Clearfix: contain floats
+ *
+ * For modern browsers
+ * 1. The space content is one way to avoid an Opera bug when the
+ *    `contenteditable` attribute is included anywhere else in the document.
+ *    Otherwise it causes space to appear at the top and bottom of elements
+ *    that receive the `clearfix` class.
+ * 2. The use of `table` rather than `block` is only necessary if using
+ *    `:before` to contain the top-margins of child elements.
+ */
+
+.clearfix:before,
+.clearfix:after {
+    content: " "; /* 1 */
+    display: table; /* 2 */
+}
+
+.clearfix:after {
+    clear: both;
+}
+
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (min-resolution: 1.25dppx),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid the additional HTTP request:
+   http://www.phpied.com/delay-loading-your-print-css/
+   ========================================================================== */
+
+@media print {
+    *,
+    *:before,
+    *:after,
+    *:first-letter {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: http://www.sanbeiji.com/archives/953 */
+        box-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links that are fragment identifiers,
+     * or use the `javascript:` pseudo protocol
+     */
+
+    a[href^="#"]:after,
+    a[href^="javascript:"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    /*
+     * Printing Tables:
+     * http://css-discuss.incutio.com/wiki/Printing_Tables
+     */
+
+    thead {
+        display: table-header-group;
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
diff --git a/node_modules/material-design-lite/src/resets/_mobile.scss b/node_modules/material-design-lite/src/resets/_mobile.scss
new file mode 100644
index 0000000..efa20dd
--- /dev/null
+++ b/node_modules/material-design-lite/src/resets/_mobile.scss
@@ -0,0 +1,25 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* Remove the unwanted box around FAB buttons */
+/* More info: http://goo.gl/IPwKi */
+a, .mdl-accordion, .mdl-button, .mdl-card, .mdl-checkbox, .mdl-dropdown-menu,
+.mdl-icon-toggle, .mdl-item, .mdl-radio, .mdl-slider, .mdl-switch, .mdl-tabs__tab {
+
+    -webkit-tap-highlight-color: transparent;
+    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+}
diff --git a/node_modules/material-design-lite/src/resets/_resets.scss b/node_modules/material-design-lite/src/resets/_resets.scss
new file mode 100644
index 0000000..dba3d0e
--- /dev/null
+++ b/node_modules/material-design-lite/src/resets/_resets.scss
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "h5bp";
+@import "mobile";
+
+/*
+ * Make html take up the entire screen
+ * Then set touch-action to avoid touch delay on mobile IE
+ */
+html {
+  width: 100%;
+  height: 100%;
+  -ms-touch-action: manipulation;
+  touch-action: manipulation;
+}
+
+/*
+* Make body take up the entire screen
+* Remove body margin so layout containers don't cause extra overflow.
+*/
+body {
+  width: 100%;
+  min-height: 100%;
+  margin: 0;
+}
+
+/*
+ * Main display reset for IE support.
+ * Source: http://weblog.west-wind.com/posts/2015/Jan/12/main-HTML5-Tag-not-working-in-Internet-Explorer-91011
+ */
+main {
+  display: block;
+}
+
+/*
+* Apply no display to elements with the hidden attribute.
+* IE 9 and 10 support.
+*/
+*[hidden] {
+  display: none !important;
+}
diff --git a/node_modules/material-design-lite/src/ripple/_ripple.scss b/node_modules/material-design-lite/src/ripple/_ripple.scss
new file mode 100644
index 0000000..cbf86eb
--- /dev/null
+++ b/node_modules/material-design-lite/src/ripple/_ripple.scss
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-ripple {
+  background       : $ripple-bg-color;
+  border-radius    : 50%;
+  height           : 50px;
+  left             : 0;
+  opacity          : 0;
+  pointer-events   : none;
+  position         : absolute;
+  top              : 0;
+  transform        : translate(-50%, -50%);
+  width            : 50px;
+  overflow         : hidden;
+
+  &.is-animating {
+    transition: transform 0.3s $animation-curve-linear-out-slow-in,
+    width 0.3s $animation-curve-linear-out-slow-in,
+    height 0.3s $animation-curve-linear-out-slow-in,
+    opacity 0.6s $animation-curve-linear-out-slow-in;
+  }
+
+  &.is-visible {
+    opacity: 0.3;
+  }
+}
diff --git a/node_modules/material-design-lite/src/ripple/ripple.js b/node_modules/material-design-lite/src/ripple/ripple.js
new file mode 100644
index 0000000..eaf30f4
--- /dev/null
+++ b/node_modules/material-design-lite/src/ripple/ripple.js
@@ -0,0 +1,260 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Ripple MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialRipple = function MaterialRipple(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialRipple'] = MaterialRipple;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialRipple.prototype.Constant_ = {
+    INITIAL_SCALE: 'scale(0.0001, 0.0001)',
+    INITIAL_SIZE: '1px',
+    INITIAL_OPACITY: '0.4',
+    FINAL_OPACITY: '0',
+    FINAL_SCALE: ''
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialRipple.prototype.CssClasses_ = {
+    RIPPLE_CENTER: 'mdl-ripple--center',
+    RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE: 'mdl-ripple',
+    IS_ANIMATING: 'is-animating',
+    IS_VISIBLE: 'is-visible'
+  };
+
+  /**
+   * Handle mouse / finger down on element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRipple.prototype.downHandler_ = function(event) {
+    if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {
+      var rect = this.element_.getBoundingClientRect();
+      this.boundHeight = rect.height;
+      this.boundWidth = rect.width;
+      this.rippleSize_ = Math.sqrt(rect.width * rect.width +
+          rect.height * rect.height) * 2 + 2;
+      this.rippleElement_.style.width = this.rippleSize_ + 'px';
+      this.rippleElement_.style.height = this.rippleSize_ + 'px';
+    }
+
+    this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);
+
+    if (event.type === 'mousedown' && this.ignoringMouseDown_) {
+      this.ignoringMouseDown_ = false;
+    } else {
+      if (event.type === 'touchstart') {
+        this.ignoringMouseDown_ = true;
+      }
+      var frameCount = this.getFrameCount();
+      if (frameCount > 0) {
+        return;
+      }
+      this.setFrameCount(1);
+      var bound = event.currentTarget.getBoundingClientRect();
+      var x;
+      var y;
+      // Check if we are handling a keyboard click.
+      if (event.clientX === 0 && event.clientY === 0) {
+        x = Math.round(bound.width / 2);
+        y = Math.round(bound.height / 2);
+      } else {
+        var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;
+        var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;
+        x = Math.round(clientX - bound.left);
+        y = Math.round(clientY - bound.top);
+      }
+      this.setRippleXY(x, y);
+      this.setRippleStyles(true);
+      window.requestAnimationFrame(this.animFrameHandler.bind(this));
+    }
+  };
+
+  /**
+   * Handle mouse / finger up on element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialRipple.prototype.upHandler_ = function(event) {
+    // Don't fire for the artificial "mouseup" generated by a double-click.
+    if (event && event.detail !== 2) {
+      // Allow a repaint to occur before removing this class, so the animation
+      // shows for tap events, which seem to trigger a mouseup too soon after
+      // mousedown.
+      window.setTimeout(function() {
+        this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);
+      }.bind(this), 0);
+    }
+  };
+
+  /**
+   * Initialize element.
+   */
+  MaterialRipple.prototype.init = function() {
+    if (this.element_) {
+      var recentering =
+          this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);
+      if (!this.element_.classList.contains(
+          this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {
+        this.rippleElement_ = this.element_.querySelector('.' +
+            this.CssClasses_.RIPPLE);
+        this.frameCount_ = 0;
+        this.rippleSize_ = 0;
+        this.x_ = 0;
+        this.y_ = 0;
+
+        // Touch start produces a compat mouse down event, which would cause a
+        // second ripples. To avoid that, we use this property to ignore the first
+        // mouse down after a touch start.
+        this.ignoringMouseDown_ = false;
+
+        this.boundDownHandler = this.downHandler_.bind(this);
+        this.element_.addEventListener('mousedown',
+          this.boundDownHandler);
+        this.element_.addEventListener('touchstart',
+            this.boundDownHandler);
+
+        this.boundUpHandler = this.upHandler_.bind(this);
+        this.element_.addEventListener('mouseup', this.boundUpHandler);
+        this.element_.addEventListener('mouseleave', this.boundUpHandler);
+        this.element_.addEventListener('touchend', this.boundUpHandler);
+        this.element_.addEventListener('blur', this.boundUpHandler);
+
+        /**
+         * Getter for frameCount_.
+         * @return {number} the frame count.
+         */
+        this.getFrameCount = function() {
+          return this.frameCount_;
+        };
+
+        /**
+         * Setter for frameCount_.
+         * @param {number} fC the frame count.
+         */
+        this.setFrameCount = function(fC) {
+          this.frameCount_ = fC;
+        };
+
+        /**
+         * Getter for rippleElement_.
+         * @return {Element} the ripple element.
+         */
+        this.getRippleElement = function() {
+          return this.rippleElement_;
+        };
+
+        /**
+         * Sets the ripple X and Y coordinates.
+         * @param  {number} newX the new X coordinate
+         * @param  {number} newY the new Y coordinate
+         */
+        this.setRippleXY = function(newX, newY) {
+          this.x_ = newX;
+          this.y_ = newY;
+        };
+
+        /**
+         * Sets the ripple styles.
+         * @param  {boolean} start whether or not this is the start frame.
+         */
+        this.setRippleStyles = function(start) {
+          if (this.rippleElement_ !== null) {
+            var transformString;
+            var scale;
+            var size;
+            var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';
+
+            if (start) {
+              scale = this.Constant_.INITIAL_SCALE;
+              size = this.Constant_.INITIAL_SIZE;
+            } else {
+              scale = this.Constant_.FINAL_SCALE;
+              size = this.rippleSize_ + 'px';
+              if (recentering) {
+                offset = 'translate(' + this.boundWidth / 2 + 'px, ' +
+                  this.boundHeight / 2 + 'px)';
+              }
+            }
+
+            transformString = 'translate(-50%, -50%) ' + offset + scale;
+
+            this.rippleElement_.style.webkitTransform = transformString;
+            this.rippleElement_.style.msTransform = transformString;
+            this.rippleElement_.style.transform = transformString;
+
+            if (start) {
+              this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);
+            } else {
+              this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);
+            }
+          }
+        };
+
+        /**
+         * Handles an animation frame.
+         */
+        this.animFrameHandler = function() {
+          if (this.frameCount_-- > 0) {
+            window.requestAnimationFrame(this.animFrameHandler.bind(this));
+          } else {
+            this.setRippleStyles(false);
+          }
+        };
+      }
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialRipple,
+    classAsString: 'MaterialRipple',
+    cssClass: 'mdl-js-ripple-effect',
+    widget: false
+  });
+})();
diff --git a/node_modules/material-design-lite/src/shadow/README.md b/node_modules/material-design-lite/src/shadow/README.md
new file mode 100644
index 0000000..58b558f
--- /dev/null
+++ b/node_modules/material-design-lite/src/shadow/README.md
@@ -0,0 +1,51 @@
+## Introduction
+
+The Material Design Lite (MDL) **shadow** is not a component in the same sense as an MDL card, menu, or textbox; it is a visual effect that can be assigned to a user interface element. The effect simulates a three-dimensional positioning of the element, as though it is slightly raised above the surface it rests upon &mdash; a positive *z-axis* value, in user interface terms. The shadow starts at the edges of the element and gradually fades outward, providing a realistic 3-D effect.
+
+Shadows are a convenient and intuitive means of distinguishing an element from its surroundings. A shadow can draw the user's eye to an object and emphasize the object's importance, uniqueness, or immediacy.
+
+Shadows are a well-established feature in user interfaces, and provide users with a visual clue to an object's intended use or value. Their design and use is an important factor in the overall user experience.
+
+### To include an MDL **shadow** effect:
+
+&nbsp;1. Code an element, such as a `<div>`, that is to receive the shadow effect; size and style it as desired, and add any required content.
+```html
+<div>
+Some content
+</div>
+```
+&nbsp;2. Add an MDL shadow class to the element using the `class` attribute.
+```html
+<div class="mdl-shadow--4dp">
+Some content
+</div>
+```
+
+The shadowed component is ready for use.
+
+#### Examples
+
+A div with a user-specified class and a small shadow.
+
+```html
+<div class="my-shadow-card mdl-shadow--2dp">Small shadow</div>
+```
+
+A div with a user-specified class and a medium-large shadow.
+
+```html
+<div class="my-shadow-card mdl-shadow--6dp">Medium-large shadow</div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual shadows to the element. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-shadow--2dp` | Assigns a small shadow to the object | Optional; if omitted, no shadow is present |
+| `mdl-shadow--3dp` | Assigns a medium-small shadow to the object | Optional; if omitted, no shadow is present |
+| `mdl-shadow--4dp` | Assigns a medium shadow to the object | Optional; if omitted, no shadow is present |
+| `mdl-shadow--6dp` | Assigns a medium-large shadow to the object | Optional; if omitted, no shadow is present |
+| `mdl-shadow--8dp` | Assigns a large shadow to the object | Optional; if omitted, no shadow is present |
+| `mdl-shadow--16dp` | Assigns an extra-large shadow to the object | Optional; if omitted, no shadow is present|
diff --git a/node_modules/material-design-lite/src/shadow/_shadow.scss b/node_modules/material-design-lite/src/shadow/_shadow.scss
new file mode 100644
index 0000000..708f921
--- /dev/null
+++ b/node_modules/material-design-lite/src/shadow/_shadow.scss
@@ -0,0 +1,46 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-shadow--2dp {
+  @include shadow-2dp();
+}
+
+.mdl-shadow--3dp {
+  @include shadow-3dp();
+}
+
+.mdl-shadow--4dp {
+  @include shadow-4dp();
+}
+
+.mdl-shadow--6dp {
+  @include shadow-6dp();
+}
+
+.mdl-shadow--8dp {
+  @include shadow-8dp();
+}
+
+.mdl-shadow--16dp {
+  @include shadow-16dp();
+}
+
+.mdl-shadow--24dp {
+  @include shadow-24dp();
+}
diff --git a/node_modules/material-design-lite/src/shadow/demo.css b/node_modules/material-design-lite/src/shadow/demo.css
new file mode 100644
index 0000000..6addeed
--- /dev/null
+++ b/node_modules/material-design-lite/src/shadow/demo.css
@@ -0,0 +1,43 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.demo-page--shadow .demo-preview-block {
+  height: 100px;
+}
+
+.demo-shadow-card {
+  background-color: #fff;
+  border-radius: 2px;
+  display: block;
+  height: 72px;
+  margin-bottom: 20px;
+  margin-right: 32px;
+  padding: 10px;
+  text-align: center;
+  float: left;
+  color: #9E9E9E;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  transition-property: opacity, transform;
+  width: 72px;
+}
+
+@media screen and (max-width: 360px ) {
+  .demo-shadow-card {
+    width: 27px;
+  }
+}
diff --git a/node_modules/material-design-lite/src/shadow/demo.html b/node_modules/material-design-lite/src/shadow/demo.html
new file mode 100644
index 0000000..2b09571
--- /dev/null
+++ b/node_modules/material-design-lite/src/shadow/demo.html
@@ -0,0 +1,8 @@
+  <div class="demo-preview-block demo-page--shadow">
+    <div class="demo-shadow-card mdl-shadow--2dp">2dp</div>
+    <div class="demo-shadow-card mdl-shadow--3dp">3dp</div>
+    <div class="demo-shadow-card mdl-shadow--4dp">4dp</div>
+    <div class="demo-shadow-card mdl-shadow--6dp">6dp</div>
+    <div class="demo-shadow-card mdl-shadow--8dp">8dp</div>
+    <div class="demo-shadow-card mdl-shadow--16dp">16dp</div>
+  </div>
diff --git a/node_modules/material-design-lite/src/slider/README.md b/node_modules/material-design-lite/src/slider/README.md
new file mode 100755
index 0000000..383c816
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/README.md
@@ -0,0 +1,60 @@
+## Introduction
+
+The Material Design Lite (MDL) **slider** component is an enhanced version of the new HTML5 `<input type="range">` element. A slider consists of a horizontal line upon which sits a small, movable disc (the *thumb*) and, typically, text that clearly communicates a value that will be set when the user moves it.
+
+Sliders are a fairly new feature in user interfaces, and allow users to choose a value from a predetermined range by moving the thumb through the range (lower values to the left, higher values to the right). Their design and use is an important factor in the overall user experience. See the slider component's [Material Design specifications page](http://www.google.com/design/spec/components/sliders.html) for details.
+
+The enhanced slider component may be initially or programmatically *disabled*.
+
+### To include an MDL **slider** component:
+
+&nbsp;1. Code a `<p>` paragraph element and style it as desired. Include a CSS `width` property (directly or via a CSS class), which determines the slider's size.
+```html
+<p style="width:300px">
+...
+</p>
+```
+&nbsp;2. Inside the paragraph container, code an `<input>` element and give it a `type` attribute whose value is `"range"`. Also give it an `id` attribute to make it available for scripting, and `min` and `max` attributes whose values specify the slider's range. Give it a `value` attribute whose value sets the initial thumb position (optional; if omitted, defaults to 50% of the maximum), and a `step` attribute whose value specifies the increment by which the thumb moves (also optional; if omitted, defaults to 1). Finally, give it an event handler to be executed when the user changes the slider's value.
+```html
+<p style="width:300px">
+  <input type="range" id="s1" min="0" max="10" value="4" step="2">
+</p>
+```
+&nbsp;3. Add one or more MDL classes, separated by spaces, to the slider using the `class` attribute.
+```html
+<p style="width:300px">
+  <input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2">
+</p>
+```
+
+The slider component is ready for use.
+
+#### Example
+
+A slider that controls volume.
+```html
+<p style="width:300px">
+<input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2">
+</p>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the slider. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-slider` | Defines input element as an MDL component | Required |
+| `mdl-js-slider` | Assigns basic MDL behavior to input element | Required |
+
+>**Note:** A disabled version of the slider is provided, and is invoked with the standard HTML boolean attribute `disabled`. `<input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2" disabled>`
+>This attribute may be added or removed programmatically via scripting.
+
+>**Note:** Although the *value* attribute is used to set a slider's initial value, it should not be used
+to modify the value programmatically; instead, use the MDL `change()` method. For example, assuming
+that *slider1* is a slider object and *newvalue* is a variable containing the desired value, do not
+use `slider1.value = newvalue`; instead, use `slider1.MaterialSlider.change(newvalue)`.
+
+## License
+
+Copyright Google, 2015. Licensed under an Apache-2 license.
diff --git a/node_modules/material-design-lite/src/slider/_slider.scss b/node_modules/material-design-lite/src/slider/_slider.scss
new file mode 100644
index 0000000..3255901
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/_slider.scss
@@ -0,0 +1,397 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+// Some CSS magic to target only IE.
+_:-ms-input-placeholder, :root .mdl-slider.mdl-slider.is-upgraded {
+  -ms-appearance: none;
+  // The thumb can't overflow the track or the rest of the control in IE, so we
+  // need to make it tall enough to contain the largest version of the thumb.
+  height: 32px;
+  margin: 0;
+}
+
+// Slider component (styled input[type=range]).
+.mdl-slider {
+  width: calc(100% - 40px);
+  margin: 0 20px;
+
+  &.is-upgraded {
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    appearance: none;
+    height: 2px;
+    background: transparent;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    user-select: none;
+    outline: 0;
+    padding: 0;
+    color: $range-color;
+    align-self: center;
+    z-index: 1;
+    cursor: pointer;
+
+
+    // Disable default focus on Firefox.
+    &::-moz-focus-outer {
+      border: 0;
+    }
+
+    // Disable tooltip on IE.
+    &::-ms-tooltip {
+      display: none;
+    }
+
+
+    /**************************** Tracks ****************************/
+    &::-webkit-slider-runnable-track {
+      background: transparent;
+    }
+
+    &::-moz-range-track {
+      background: transparent;
+      border: none;
+    }
+
+    &::-ms-track {
+      background: none;
+      color: transparent;
+      height: 2px;
+      width: 100%;
+      border: none;
+    }
+
+    &::-ms-fill-lower {
+      padding: 0;
+      // Margin on -ms-track doesn't work right, so we use gradients on the
+      // fills.
+      background: linear-gradient(to right,
+      transparent,
+      transparent 16px,
+      $range-color 16px,
+      $range-color 0);
+    }
+
+    &::-ms-fill-upper {
+      padding: 0;
+      // Margin on -ms-track doesn't work right, so we use gradients on the
+      // fills.
+      background: linear-gradient(to left,
+      transparent,
+      transparent 16px,
+      $range-bg-color 16px,
+      $range-bg-color 0);
+    }
+
+
+    /**************************** Thumbs ****************************/
+    &::-webkit-slider-thumb {
+      -webkit-appearance: none;
+      width: 12px;
+      height: 12px;
+      box-sizing: border-box;
+      border-radius: 50%;
+      background: $range-color;
+      border: none;
+      transition: transform 0.18s $animation-curve-default,
+      border 0.18s $animation-curve-default,
+      box-shadow 0.18s $animation-curve-default,
+      background 0.28s $animation-curve-default;
+    }
+
+    &::-moz-range-thumb {
+      -moz-appearance: none;
+      width: 12px;
+      height: 12px;
+      box-sizing: border-box;
+      border-radius: 50%;
+      background-image: none;
+      background: $range-color;
+      border: none;
+      // -moz-range-thumb doesn't currently support transitions.
+    }
+
+    &:focus:not(:active)::-webkit-slider-thumb {
+      box-shadow: 0 0 0 10px $range-faded-color;
+    }
+
+    &:focus:not(:active)::-moz-range-thumb {
+      box-shadow: 0 0 0 10px $range-faded-color;
+    }
+
+    &:active::-webkit-slider-thumb {
+      background-image: none;
+      background: $range-color;
+      transform: scale(1.5);
+    }
+
+    &:active::-moz-range-thumb {
+      background-image: none;
+      background: $range-color;
+      transform: scale(1.5);
+    }
+
+    &::-ms-thumb {
+      width: 32px;
+      height: 32px;
+      border: none;
+      border-radius: 50%;
+      background: $range-color;
+      transform: scale(0.375);
+      // -ms-thumb doesn't currently support transitions, but leaving this here
+      // in case support ever gets added.
+      transition: transform 0.18s $animation-curve-default,
+      background 0.28s $animation-curve-default;
+    }
+
+    &:focus:not(:active)::-ms-thumb {
+      background: radial-gradient(circle closest-side,
+      $range-color 0%,
+      $range-color 37.5%,
+      $range-faded-color 37.5%,
+      $range-faded-color 100%);
+      transform: scale(1);
+    }
+
+    &:active::-ms-thumb {
+      background: $range-color;
+      transform: scale(0.5625);
+    }
+
+
+    /**************************** 0-value ****************************/
+    &.is-lowest-value::-webkit-slider-thumb {
+      border: 2px solid $range-bg-color;
+      background: transparent;
+    }
+
+    &.is-lowest-value::-moz-range-thumb {
+      border: 2px solid $range-bg-color;
+      background: transparent;
+    }
+
+    &.is-lowest-value +
+        .mdl-slider__background-flex > .mdl-slider__background-upper {
+      left: 6px;
+    }
+
+    &.is-lowest-value:focus:not(:active)::-webkit-slider-thumb {
+      box-shadow: 0 0 0 10px $range-bg-focus-color;
+      background: $range-bg-focus-color;
+    }
+
+    &.is-lowest-value:focus:not(:active)::-moz-range-thumb {
+      box-shadow: 0 0 0 10px $range-bg-focus-color;
+      background: $range-bg-focus-color;
+    }
+
+    &.is-lowest-value:active::-webkit-slider-thumb {
+      border: 1.6px solid $range-bg-color;
+      transform: scale(1.5);
+    }
+
+    &.is-lowest-value:active +
+        .mdl-slider__background-flex > .mdl-slider__background-upper {
+      left: 9px;
+    }
+
+    &.is-lowest-value:active::-moz-range-thumb {
+      border: 1.5px solid $range-bg-color;
+      transform: scale(1.5);
+    }
+
+    &.is-lowest-value::-ms-thumb {
+      background: radial-gradient(circle closest-side,
+      transparent 0%,
+      transparent 66.67%,
+      $range-bg-color 66.67%,
+      $range-bg-color 100%);
+    }
+
+    &.is-lowest-value:focus:not(:active)::-ms-thumb {
+      background: radial-gradient(circle closest-side,
+      $range-bg-focus-color 0%,
+      $range-bg-focus-color 25%,
+      $range-bg-color 25%,
+      $range-bg-color 37.5%,
+      $range-bg-focus-color 37.5%,
+      $range-bg-focus-color 100%);
+      transform: scale(1);
+    }
+
+    &.is-lowest-value:active::-ms-thumb {
+      transform: scale(0.5625);
+      background: radial-gradient(circle closest-side,
+      transparent 0%,
+      transparent 77.78%,
+      $range-bg-color 77.78%,
+      $range-bg-color 100%);
+    }
+
+    &.is-lowest-value::-ms-fill-lower {
+      background: transparent;
+    }
+
+    &.is-lowest-value::-ms-fill-upper {
+      margin-left: 6px;
+    }
+
+    &.is-lowest-value:active::-ms-fill-upper {
+      margin-left: 9px;
+    }
+
+    /**************************** Disabled ****************************/
+
+    &:disabled:focus::-webkit-slider-thumb,
+    &:disabled:active::-webkit-slider-thumb,
+    &:disabled::-webkit-slider-thumb {
+      transform: scale(0.667);
+      background: $range-bg-color;
+    }
+
+    &:disabled:focus::-moz-range-thumb,
+    &:disabled:active::-moz-range-thumb,
+    &:disabled::-moz-range-thumb {
+      transform: scale(0.667);
+      background: $range-bg-color;
+    }
+
+    &:disabled +
+        .mdl-slider__background-flex > .mdl-slider__background-lower {
+      background-color: $range-bg-color;
+      left: -6px;
+    }
+
+    &:disabled +
+        .mdl-slider__background-flex > .mdl-slider__background-upper {
+      left: 6px;
+    }
+
+    &.is-lowest-value:disabled:focus::-webkit-slider-thumb,
+    &.is-lowest-value:disabled:active::-webkit-slider-thumb,
+    &.is-lowest-value:disabled::-webkit-slider-thumb {
+      border: 3px solid $range-bg-color;
+      background: transparent;
+      transform: scale(0.667);
+    }
+
+    &.is-lowest-value:disabled:focus::-moz-range-thumb,
+    &.is-lowest-value:disabled:active::-moz-range-thumb,
+    &.is-lowest-value:disabled::-moz-range-thumb {
+      border: 3px solid $range-bg-color;
+      background: transparent;
+      transform: scale(0.667);
+    }
+
+    &.is-lowest-value:disabled:active +
+        .mdl-slider__background-flex > .mdl-slider__background-upper {
+      left: 6px;
+    }
+
+    &:disabled:focus::-ms-thumb,
+    &:disabled:active::-ms-thumb,
+    &:disabled::-ms-thumb {
+      transform: scale(0.25);
+      background: $range-bg-color;
+    }
+
+    &.is-lowest-value:disabled:focus::-ms-thumb,
+    &.is-lowest-value:disabled:active::-ms-thumb,
+    &.is-lowest-value:disabled::-ms-thumb {
+      transform: scale(0.25);
+      background: radial-gradient(circle closest-side,
+      transparent 0%,
+      transparent 50%,
+      $range-bg-color 50%,
+      $range-bg-color 100%);
+    }
+
+    &:disabled::-ms-fill-lower {
+      margin-right: 6px;
+      background: linear-gradient(to right,
+      transparent,
+      transparent 25px,
+      $range-bg-color 25px,
+      $range-bg-color 0);
+    }
+
+    &:disabled::-ms-fill-upper {
+      margin-left: 6px;
+    }
+
+    &.is-lowest-value:disabled:active::-ms-fill-upper {
+      margin-left: 6px;
+    }
+  }
+}
+
+  // Since we need to specify a height of 32px in IE, we add a class here for a
+  // container that brings it back to a reasonable height.
+  .mdl-slider__ie-container {
+    height: 18px;
+    overflow: visible;
+    border: none;
+    margin: none;
+    padding: none;
+  }
+
+  // We use a set of divs behind the track to style it in all non-IE browsers.
+  // This one contains both the background and the slider.
+  .mdl-slider__container {
+    height: 18px;
+    position: relative;
+    background: none;
+    display: flex;
+    flex-direction: row;
+  }
+
+  // This one sets up a flex box for the styled upper and lower portions of the
+  // the slider track.
+  .mdl-slider__background-flex {
+    background: transparent;
+    position: absolute;
+    height: 2px;
+    width: calc(100% - 52px);
+    top: 50%;
+    left: 0;
+    margin: 0 26px;
+    display: flex;
+    overflow: hidden;
+    border: 0;
+    padding: 0;
+    transform: translate(0, -1px);
+  }
+
+  // This one styles the lower part of the slider track.
+  .mdl-slider__background-lower {
+    background: $range-color;
+    flex: 0;
+    position: relative;
+    border: 0;
+    padding: 0;
+  }
+
+  // This one styles the upper part of the slider track.
+  .mdl-slider__background-upper {
+    background: $range-bg-color;
+    flex: 0;
+    position: relative;
+    border: 0;
+    padding: 0;
+    transition: left 0.18s $animation-curve-default
+  }
diff --git a/node_modules/material-design-lite/src/slider/slider.js b/node_modules/material-design-lite/src/slider/slider.js
new file mode 100644
index 0000000..b34b8b6
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/slider.js
@@ -0,0 +1,244 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Slider MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialSlider = function MaterialSlider(element) {
+    this.element_ = element;
+    // Browser feature detection.
+    this.isIE_ = window.navigator.msPointerEnabled;
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialSlider'] = MaterialSlider;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialSlider.prototype.Constant_ = {
+    // None for now.
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialSlider.prototype.CssClasses_ = {
+    IE_CONTAINER: 'mdl-slider__ie-container',
+    SLIDER_CONTAINER: 'mdl-slider__container',
+    BACKGROUND_FLEX: 'mdl-slider__background-flex',
+    BACKGROUND_LOWER: 'mdl-slider__background-lower',
+    BACKGROUND_UPPER: 'mdl-slider__background-upper',
+    IS_LOWEST_VALUE: 'is-lowest-value',
+    IS_UPGRADED: 'is-upgraded'
+  };
+
+  /**
+   * Handle input on element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSlider.prototype.onInput_ = function(event) {
+    this.updateValueStyles_();
+  };
+
+  /**
+   * Handle change on element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSlider.prototype.onChange_ = function(event) {
+    this.updateValueStyles_();
+  };
+
+  /**
+   * Handle mouseup on element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSlider.prototype.onMouseUp_ = function(event) {
+    event.target.blur();
+  };
+
+  /**
+   * Handle mousedown on container element.
+   * This handler is purpose is to not require the use to click
+   * exactly on the 2px slider element, as FireFox seems to be very
+   * strict about this.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   * @suppress {missingProperties}
+   */
+  MaterialSlider.prototype.onContainerMouseDown_ = function(event) {
+    // If this click is not on the parent element (but rather some child)
+    // ignore. It may still bubble up.
+    if (event.target !== this.element_.parentElement) {
+      return;
+    }
+
+    // Discard the original event and create a new event that
+    // is on the slider element.
+    event.preventDefault();
+    var newEvent = new MouseEvent('mousedown', {
+      target: event.target,
+      buttons: event.buttons,
+      clientX: event.clientX,
+      clientY: this.element_.getBoundingClientRect().y
+    });
+    this.element_.dispatchEvent(newEvent);
+  };
+
+  /**
+   * Handle updating of values.
+   *
+   * @private
+   */
+  MaterialSlider.prototype.updateValueStyles_ = function() {
+    // Calculate and apply percentages to div structure behind slider.
+    var fraction = (this.element_.value - this.element_.min) /
+        (this.element_.max - this.element_.min);
+
+    if (fraction === 0) {
+      this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);
+    }
+
+    if (!this.isIE_) {
+      this.backgroundLower_.style.flex = fraction;
+      this.backgroundLower_.style.webkitFlex = fraction;
+      this.backgroundUpper_.style.flex = 1 - fraction;
+      this.backgroundUpper_.style.webkitFlex = 1 - fraction;
+    }
+  };
+
+  // Public methods.
+
+  /**
+   * Disable slider.
+   *
+   * @public
+   */
+  MaterialSlider.prototype.disable = function() {
+    this.element_.disabled = true;
+  };
+  MaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;
+
+  /**
+   * Enable slider.
+   *
+   * @public
+   */
+  MaterialSlider.prototype.enable = function() {
+
+    this.element_.disabled = false;
+  };
+  MaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;
+
+  /**
+   * Update slider value.
+   *
+   * @param {number} value The value to which to set the control (optional).
+   * @public
+   */
+  MaterialSlider.prototype.change = function(value) {
+
+    if (typeof value !== 'undefined') {
+      this.element_.value = value;
+    }
+    this.updateValueStyles_();
+  };
+  MaterialSlider.prototype['change'] = MaterialSlider.prototype.change;
+
+  /**
+   * Initialize element.
+   */
+  MaterialSlider.prototype.init = function() {
+
+    if (this.element_) {
+      if (this.isIE_) {
+        // Since we need to specify a very large height in IE due to
+        // implementation limitations, we add a parent here that trims it down to
+        // a reasonable size.
+        var containerIE = document.createElement('div');
+        containerIE.classList.add(this.CssClasses_.IE_CONTAINER);
+        this.element_.parentElement.insertBefore(containerIE, this.element_);
+        this.element_.parentElement.removeChild(this.element_);
+        containerIE.appendChild(this.element_);
+      } else {
+        // For non-IE browsers, we need a div structure that sits behind the
+        // slider and allows us to style the left and right sides of it with
+        // different colors.
+        var container = document.createElement('div');
+        container.classList.add(this.CssClasses_.SLIDER_CONTAINER);
+        this.element_.parentElement.insertBefore(container, this.element_);
+        this.element_.parentElement.removeChild(this.element_);
+        container.appendChild(this.element_);
+        var backgroundFlex = document.createElement('div');
+        backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);
+        container.appendChild(backgroundFlex);
+        this.backgroundLower_ = document.createElement('div');
+        this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);
+        backgroundFlex.appendChild(this.backgroundLower_);
+        this.backgroundUpper_ = document.createElement('div');
+        this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);
+        backgroundFlex.appendChild(this.backgroundUpper_);
+      }
+
+      this.boundInputHandler = this.onInput_.bind(this);
+      this.boundChangeHandler = this.onChange_.bind(this);
+      this.boundMouseUpHandler = this.onMouseUp_.bind(this);
+      this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);
+      this.element_.addEventListener('input', this.boundInputHandler);
+      this.element_.addEventListener('change', this.boundChangeHandler);
+      this.element_.addEventListener('mouseup', this.boundMouseUpHandler);
+      this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);
+
+      this.updateValueStyles_();
+      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialSlider,
+    classAsString: 'MaterialSlider',
+    cssClass: 'mdl-js-slider',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/slider/snippets/demo.html b/node_modules/material-design-lite/src/slider/snippets/demo.html
new file mode 100644
index 0000000..c7975d7
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/snippets/demo.html
@@ -0,0 +1,10 @@
+  <div class="demo-preview-block">
+    <p>
+      <input class="mdl-slider mdl-js-slider" type="range"
+        min="0" max="100" value="0" tabindex="0">
+    </p>
+    <p>
+      <input class="mdl-slider mdl-js-slider" type="range"
+        min="0" max="100" value="10" tabindex="0">
+    </p>
+  </div>
diff --git a/node_modules/material-design-lite/src/slider/snippets/slider-default-demo.html b/node_modules/material-design-lite/src/slider/snippets/slider-default-demo.html
new file mode 100644
index 0000000..53cce0e
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/snippets/slider-default-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-slider__slider-default .mdl-slider {
+    width: 30vw;
+    max-width: 260px;
+  }
+</style>
+{% include "slider-default.html" %}
diff --git a/node_modules/material-design-lite/src/slider/snippets/slider-default.html b/node_modules/material-design-lite/src/slider/snippets/slider-default.html
new file mode 100644
index 0000000..c0fd976
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/snippets/slider-default.html
@@ -0,0 +1,3 @@
+<!-- Default Slider -->
+<input class="mdl-slider mdl-js-slider" type="range"
+  min="0" max="100" value="0" tabindex="0">
diff --git a/node_modules/material-design-lite/src/slider/snippets/slider-starting-value-demo.html b/node_modules/material-design-lite/src/slider/snippets/slider-starting-value-demo.html
new file mode 100644
index 0000000..f3378c5
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/snippets/slider-starting-value-demo.html
@@ -0,0 +1,8 @@
+<style>
+  .demo-slider__slider-starting-value .mdl-slider {
+    width: 30vw;
+    max-width: 260px;
+  }
+</style>
+
+{% include "slider-starting-value.html" %}
diff --git a/node_modules/material-design-lite/src/slider/snippets/slider-starting-value.html b/node_modules/material-design-lite/src/slider/snippets/slider-starting-value.html
new file mode 100644
index 0000000..80f97b9
--- /dev/null
+++ b/node_modules/material-design-lite/src/slider/snippets/slider-starting-value.html
@@ -0,0 +1,3 @@
+<!-- Slider with Starting Value -->
+<input class="mdl-slider mdl-js-slider" type="range"
+  min="0" max="100" value="25" tabindex="0">
diff --git a/node_modules/material-design-lite/src/snackbar/README.md b/node_modules/material-design-lite/src/snackbar/README.md
new file mode 100644
index 0000000..4bace84
--- /dev/null
+++ b/node_modules/material-design-lite/src/snackbar/README.md
@@ -0,0 +1,102 @@
+## Introduction
+
+The Material Design Lite (MDL) **snackbar** component is a container used to notify a user of an operation's status.
+It displays at the bottom of the screen.
+A snackbar may contain an action button to execute a command for the user.
+Actions should undo the committed action or retry it if it failed for example.
+Actions should not be to close the snackbar.
+By not providing an action, the snackbar becomes a **toast** component.
+
+## Basic Usage:
+
+Start a snackbar with a container div element.
+On that container define the `mdl-js-snackbar` and `mdl-snackbar` classes.
+It is also beneficial to add the aria live and atomic values to this container.
+
+Within the container create a container element for the message.
+This element should have the class `mdl-snackbar__text`.
+Leave this element empty!
+Text is added when the snackbar is called to be shown.
+
+Second in the container, add a button element.
+This element should have the class `mdl-snackbar__action`.
+It is recommended to set the type to button to make sure no forms get submitted by accident.
+Leave the text content empty here as well!
+Do not directly apply any event handlers.
+
+You now have complete markup for the snackbar to function.
+All that is left is within your JavaScript to call the `showSnackbar` method on the snackbar container.
+This takes a [plain object](#data-object) to configure the snackbar content appropriately.
+You may call it multiple consecutive times and messages will stack.
+
+## Examples
+
+All snackbars should be shown through the same element.
+
+#### Markup:
+
+```html
+<div aria-live="assertive" aria-atomic="true" aria-relevant="text" class="mdl-snackbar mdl-js-snackbar">
+    <div class="mdl-snackbar__text"></div>
+    <button type="button" class="mdl-snackbar__action"></button>
+</div>
+```
+
+> Note: In this example there are a few aria attributes for accessibility. Please modify these as-needed for your site.
+
+### Snackbar
+
+```javascript
+var notification = document.querySelector('.mdl-js-snackbar');
+var data = {
+  message: 'Message Sent',
+  actionHandler: function(event) {},
+  actionText: 'Undo',
+  timeout: 10000
+};
+notification.MaterialSnackbar.showSnackbar(data);
+```
+
+### Toast
+
+```javascript
+var notification = document.querySelector('.mdl-js-snackbar');
+notification.MaterialSnackbar.showSnackbar(
+  {
+    message: 'Image Uploaded'
+  }
+);
+```
+
+## CSS Classes
+
+### Blocks
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-snackbar` | Defines the container of the snackbar component. | Required on snackbar container |
+
+### Elements
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-snackbar__text` | Defines the element containing the text of the snackbar. | Required |
+| `mdl-snackbar__action` | Defines the element that triggers the action of a snackbar. | Required |
+
+### Modifiers
+
+| MDL Class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-snackbar--active` | Marks the snackbar as active which causes it to display. | Required when active. Controlled in JavaScript |
+
+## Data Object
+
+The Snackbar components `showSnackbar` method takes an object for snackbar data.
+The table below shows the properties and their usage.
+
+| Property | Effect | Remarks | Type |
+|-----------|--------|---------|---------|
+| message   | The text message to display. | Required | String |
+| timeout   | The amount of time in milliseconds to show the snackbar. | Optional (default 2750) | Integer |
+| actionHandler | The function to execute when the action is clicked. | Optional | Function |
+| actionText | The text to display for the action button. | Required if actionHandler is set |  String. |
diff --git a/node_modules/material-design-lite/src/snackbar/_snackbar.scss b/node_modules/material-design-lite/src/snackbar/_snackbar.scss
new file mode 100644
index 0000000..ac97598
--- /dev/null
+++ b/node_modules/material-design-lite/src/snackbar/_snackbar.scss
@@ -0,0 +1,89 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-snackbar {
+  position: fixed;
+  bottom: 0;
+  left: 50%;
+  cursor: default;
+  background-color: $snackbar-background-color;
+  z-index: 3;
+  display: block;
+  display: flex;
+  justify-content: space-between;
+  font-family: $preferred_font;
+  will-change: transform;
+  transform: translate(0, 80px);
+  transition: transform 0.25s $animation-curve-fast-out-linear-in;
+  pointer-events: none;
+  @media(max-width: $snackbar-tablet-breakpoint - 1) {
+    width: 100%;
+    left: 0;
+    min-height: 48px;
+    max-height: 80px;
+  }
+  @media(min-width: $snackbar-tablet-breakpoint) {
+    min-width: 288px;
+    max-width: 568px;
+    border-radius: 2px;
+    transform: translate(-50%, 80px);
+  }
+  &--active {
+    transform: translate(0, 0);
+    pointer-events: auto;
+    transition: transform 0.25s $animation-curve-linear-out-slow-in;
+
+    @media(min-width: $snackbar-tablet-breakpoint) {
+      transform: translate(-50%, 0);
+    }
+  }
+
+  &__text {
+    padding: 14px 12px 14px 24px;
+    vertical-align: middle;
+    color: white;
+    float: left;
+  }
+
+  &__action {
+    background: transparent;
+    border: none;
+    color: $snackbar-action-color;
+    float: right;
+    text-transform: uppercase;
+    padding: 14px 24px 14px 12px;
+    @include typo-button();
+    overflow: hidden;
+    outline: none;
+    opacity: 0;
+    pointer-events: none;
+    cursor: pointer;
+    text-decoration: none;
+    text-align: center;
+    align-self: center;
+
+    &::-moz-focus-inner {
+      border: 0;
+    }
+    &:not([aria-hidden]) {
+      opacity: 1;
+      pointer-events: auto;
+    }
+  }
+}
diff --git a/node_modules/material-design-lite/src/snackbar/snackbar.js b/node_modules/material-design-lite/src/snackbar/snackbar.js
new file mode 100644
index 0000000..7a855ab
--- /dev/null
+++ b/node_modules/material-design-lite/src/snackbar/snackbar.js
@@ -0,0 +1,189 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Snackbar MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialSnackbar = function MaterialSnackbar(element) {
+    this.element_ = element;
+    this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);
+    this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);
+    if (!this.textElement_) {
+      throw new Error('There must be a message element for a snackbar.');
+    }
+    if (!this.actionElement_) {
+      throw new Error('There must be an action element for a snackbar.');
+    }
+    this.active = false;
+    this.actionHandler_ = undefined;
+    this.message_ = undefined;
+    this.actionText_ = undefined;
+    this.queuedNotifications_ = [];
+    this.setActionHidden_(true);
+  };
+  window['MaterialSnackbar'] = MaterialSnackbar;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialSnackbar.prototype.Constant_ = {
+    // The duration of the snackbar show/hide animation, in ms.
+    ANIMATION_LENGTH: 250
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialSnackbar.prototype.cssClasses_ = {
+    SNACKBAR: 'mdl-snackbar',
+    MESSAGE: 'mdl-snackbar__text',
+    ACTION: 'mdl-snackbar__action',
+    ACTIVE: 'mdl-snackbar--active'
+  };
+
+  /**
+   * Display the snackbar.
+   *
+   * @private
+   */
+  MaterialSnackbar.prototype.displaySnackbar_ = function() {
+    this.element_.setAttribute('aria-hidden', 'true');
+
+    if (this.actionHandler_) {
+      this.actionElement_.textContent = this.actionText_;
+      this.actionElement_.addEventListener('click', this.actionHandler_);
+      this.setActionHidden_(false);
+    }
+
+    this.textElement_.textContent = this.message_;
+    this.element_.classList.add(this.cssClasses_.ACTIVE);
+    this.element_.setAttribute('aria-hidden', 'false');
+    setTimeout(this.cleanup_.bind(this), this.timeout_);
+
+  };
+
+  /**
+   * Show the snackbar.
+   *
+   * @param {Object} data The data for the notification.
+   * @public
+   */
+  MaterialSnackbar.prototype.showSnackbar = function(data) {
+    if (data === undefined) {
+      throw new Error(
+        'Please provide a data object with at least a message to display.');
+    }
+    if (data['message'] === undefined) {
+      throw new Error('Please provide a message to be displayed.');
+    }
+    if (data['actionHandler'] && !data['actionText']) {
+      throw new Error('Please provide action text with the handler.');
+    }
+    if (this.active) {
+      this.queuedNotifications_.push(data);
+    } else {
+      this.active = true;
+      this.message_ = data['message'];
+      if (data['timeout']) {
+        this.timeout_ = data['timeout'];
+      } else {
+        this.timeout_ = 2750;
+      }
+      if (data['actionHandler']) {
+        this.actionHandler_ = data['actionHandler'];
+      }
+      if (data['actionText']) {
+        this.actionText_ = data['actionText'];
+      }
+      this.displaySnackbar_();
+    }
+  };
+  MaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;
+
+  /**
+   * Check if the queue has items within it.
+   * If it does, display the next entry.
+   *
+   * @private
+   */
+  MaterialSnackbar.prototype.checkQueue_ = function() {
+    if (this.queuedNotifications_.length > 0) {
+      this.showSnackbar(this.queuedNotifications_.shift());
+    }
+  };
+
+  /**
+   * Cleanup the snackbar event listeners and accessiblity attributes.
+   *
+   * @private
+   */
+  MaterialSnackbar.prototype.cleanup_ = function() {
+    this.element_.classList.remove(this.cssClasses_.ACTIVE);
+    setTimeout(function() {
+      this.element_.setAttribute('aria-hidden', 'true');
+      this.textElement_.textContent = '';
+      if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {
+        this.setActionHidden_(true);
+        this.actionElement_.textContent = '';
+        this.actionElement_.removeEventListener('click', this.actionHandler_);
+      }
+      this.actionHandler_ = undefined;
+      this.message_ = undefined;
+      this.actionText_ = undefined;
+      this.active = false;
+      this.checkQueue_();
+    }.bind(this), /** @type {number} */ (this.Constant_.ANIMATION_LENGTH));
+  };
+
+  /**
+   * Set the action handler hidden state.
+   *
+   * @param {boolean} value
+   * @private
+   */
+  MaterialSnackbar.prototype.setActionHidden_ = function(value) {
+    if (value) {
+      this.actionElement_.setAttribute('aria-hidden', 'true');
+    } else {
+      this.actionElement_.removeAttribute('aria-hidden');
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialSnackbar,
+    classAsString: 'MaterialSnackbar',
+    cssClass: 'mdl-js-snackbar',
+    widget: true
+  });
+
+})();
diff --git a/node_modules/material-design-lite/src/snackbar/snippets/snackbar.html b/node_modules/material-design-lite/src/snackbar/snippets/snackbar.html
new file mode 100644
index 0000000..6e07fee
--- /dev/null
+++ b/node_modules/material-design-lite/src/snackbar/snippets/snackbar.html
@@ -0,0 +1,27 @@
+<button id="demo-show-snackbar" class="mdl-button mdl-js-button mdl-button--raised" type="button">Show Snackbar</button>
+<div id="demo-snackbar-example" class="mdl-js-snackbar mdl-snackbar">
+  <div class="mdl-snackbar__text"></div>
+  <button class="mdl-snackbar__action" type="button"></button>
+</div>
+<script>
+(function() {
+  'use strict';
+  var snackbarContainer = document.querySelector('#demo-snackbar-example');
+  var showSnackbarButton = document.querySelector('#demo-show-snackbar');
+  var handler = function(event) {
+    showSnackbarButton.style.backgroundColor = '';
+  };
+  showSnackbarButton.addEventListener('click', function() {
+    'use strict';
+    showSnackbarButton.style.backgroundColor = '#' +
+        Math.floor(Math.random() * 0xFFFFFF).toString(16);
+    var data = {
+      message: 'Button color changed.',
+      timeout: 2000,
+      actionHandler: handler,
+      actionText: 'Undo'
+    };
+    snackbarContainer.MaterialSnackbar.showSnackbar(data);
+  });
+}());
+</script>
diff --git a/node_modules/material-design-lite/src/snackbar/snippets/toast.html b/node_modules/material-design-lite/src/snackbar/snippets/toast.html
new file mode 100644
index 0000000..6505692
--- /dev/null
+++ b/node_modules/material-design-lite/src/snackbar/snippets/toast.html
@@ -0,0 +1,18 @@
+<button id="demo-show-toast" class="mdl-button mdl-js-button mdl-button--raised" type="button">Show Toast</button>
+<div id="demo-toast-example" class="mdl-js-snackbar mdl-snackbar">
+  <div class="mdl-snackbar__text"></div>
+  <button class="mdl-snackbar__action" type="button"></button>
+</div>
+<script>
+(function() {
+  'use strict';
+  window['counter'] = 0;
+  var snackbarContainer = document.querySelector('#demo-toast-example');
+  var showToastButton = document.querySelector('#demo-show-toast');
+  showToastButton.addEventListener('click', function() {
+    'use strict';
+    var data = {message: 'Example Message # ' + ++counter};
+    snackbarContainer.MaterialSnackbar.showSnackbar(data);
+  });
+}());
+</script>
diff --git a/node_modules/material-design-lite/src/spinner/README.md b/node_modules/material-design-lite/src/spinner/README.md
new file mode 100755
index 0000000..1da695c
--- /dev/null
+++ b/node_modules/material-design-lite/src/spinner/README.md
@@ -0,0 +1,48 @@
+## Introduction
+
+The Material Design Lite (MDL) **spinner** component is an enhanced replacement for the classic "wait cursor" (which varies significantly among hardware and software versions) and indicates that there is an ongoing process, the results of which are not yet available. A spinner consists of an open circle that changes colors as it animates in a clockwise direction, and clearly communicates that a process has been started but not completed.
+
+A spinner performs no action itself, either by its display nor when the user clicks or touches it, and does not indicate a process's specific progress or degree of completion. The MDL spinner component provides various types of spinners, and allows you to add display effects.
+
+Spinners are a fairly new feature of most user interfaces, and provide users with a consistent visual cue about ongoing activity, regardless of hardware device,  operating system, or browser environment. Their design and use is an important factor in the overall user experience.
+
+### To include an MDL **spinner** component:
+
+&nbsp;1. Code an element, such as a `<div>`, `<p>`, or `<span>`, to contain the spinner; the element should have no content of its own.
+```html
+<div></div>
+```
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the container using the `class` attribute.
+```html
+<div class="mdl-spinner mdl-js-spinner is-active"></div>
+```
+
+The spinner component is ready for use.
+
+#### Examples
+
+A default spinner in a div.
+
+```html
+<div class="mdl-spinner mdl-js-spinner is-active"></div>
+```
+
+A single-color spinner in a paragraph.
+
+```html
+<p class="mdl-spinner mdl-js-spinner mdl-spinner--single-color is-active"></p>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements to the spinner. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-spinner` | Defines the container as an MDL spinner component | Required |
+| `mdl-js-spinner` | Assigns basic MDL behavior to spinner | Required |
+| `is-active` | Makes the spinner visible and animated | Optional |
+| `mdl-spinner--single-color` | Uses a single (primary palette) color instead of changing colors | Optional
+
+>**Note:** There is no specific *disabled* version of a spinner; the presence or absence of the `is-active` class determines whether the spinner is visible. For example, this spinner is inactive and invisible: `<div class="mdl-spinner mdl-js-spinner"></div>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/spinner/_spinner.scss b/node_modules/material-design-lite/src/spinner/_spinner.scss
new file mode 100644
index 0000000..602e597
--- /dev/null
+++ b/node_modules/material-design-lite/src/spinner/_spinner.scss
@@ -0,0 +1,256 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+
+.mdl-spinner {
+  display: inline-block;
+  position: relative;
+  width: $spinner-size;
+  height: $spinner-size;
+
+  &:not(.is-upgraded).is-active:after {
+    content: "Loading...";
+  }
+
+  &.is-upgraded.is-active {
+    animation: mdl-spinner__container-rotate $spinner-duration linear infinite;
+  }
+}
+
+@keyframes mdl-spinner__container-rotate {
+  to { transform: rotate(360deg) }
+}
+
+.mdl-spinner__layer {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  opacity: 0;
+}
+
+.mdl-spinner__layer-1 {
+  border-color: $spinner-color-1;
+
+  .mdl-spinner--single-color & {
+    border-color: $spinner-single-color;
+  }
+
+  .mdl-spinner.is-active & {
+    animation:
+        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both,
+        mdl-spinner__layer-1-fade-in-out (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both;
+  }
+}
+
+.mdl-spinner__layer-2 {
+  border-color: $spinner-color-2;
+
+  .mdl-spinner--single-color & {
+    border-color: $spinner-single-color;
+  }
+
+  .mdl-spinner.is-active & {
+    animation:
+        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both,
+        mdl-spinner__layer-2-fade-in-out (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both;
+  }
+}
+
+.mdl-spinner__layer-3 {
+  border-color: $spinner-color-3;
+
+  .mdl-spinner--single-color & {
+    border-color: $spinner-single-color;
+  }
+
+  .mdl-spinner.is-active & {
+    animation:
+        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both,
+        mdl-spinner__layer-3-fade-in-out (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both;
+  }
+}
+
+.mdl-spinner__layer-4 {
+  border-color: $spinner-color-4;
+
+  .mdl-spinner--single-color & {
+    border-color: $spinner-single-color;
+  }
+
+  .mdl-spinner.is-active & {
+    animation:
+        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both,
+        mdl-spinner__layer-4-fade-in-out (4 * $spinner-arc-time)
+            $animation-curve-fast-out-slow-in infinite both;
+  }
+}
+
+@keyframes mdl-spinner__fill-unfill-rotate {
+  12.5% { transform: rotate(0.5 * $spinner-arc-size);  }
+  25%   { transform: rotate($spinner-arc-size);  }
+  37.5% { transform: rotate(1.5 * $spinner-arc-size);  }
+  50%   { transform: rotate(2 * $spinner-arc-size);  }
+  62.5% { transform: rotate(2.5 * $spinner-arc-size);  }
+  75%   { transform: rotate(3 * $spinner-arc-size);  }
+  87.5% { transform: rotate(3.5 * $spinner-arc-size); }
+  to    { transform: rotate(4 * $spinner-arc-size); }
+}
+
+/**
+* HACK: Even though the intention is to have the current .mdl-spinner__layer-N
+* at `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome
+* to do proper subpixel rendering for the elements being animated. This is
+* especially visible in Chrome 39 on Ubuntu 14.04. See:
+*
+* - https://github.com/Polymer/paper-spinner/issues/9
+* - https://code.google.com/p/chromium/issues/detail?id=436255
+*/
+@keyframes mdl-spinner__layer-1-fade-in-out {
+  from { opacity: 0.99; }
+  25% { opacity: 0.99; }
+  26% { opacity: 0; }
+  89% { opacity: 0; }
+  90% { opacity: 0.99; }
+  100% { opacity: 0.99; }
+}
+
+@keyframes mdl-spinner__layer-2-fade-in-out {
+  from { opacity: 0; }
+  15% { opacity: 0; }
+  25% { opacity: 0.99; }
+  50% { opacity: 0.99; }
+  51% { opacity: 0; }
+}
+
+@keyframes mdl-spinner__layer-3-fade-in-out {
+  from { opacity: 0; }
+  40% { opacity: 0; }
+  50% { opacity: 0.99; }
+  75% { opacity: 0.99; }
+  76% { opacity: 0; }
+}
+
+@keyframes mdl-spinner__layer-4-fade-in-out {
+  from { opacity: 0; }
+  65% { opacity: 0; }
+  75% { opacity: 0.99; }
+  90% { opacity: 0.99; }
+  100% { opacity: 0; }
+}
+
+/**
+* Patch the gap that appear between the two adjacent
+* div.mdl-spinner__circle-clipper while the spinner is rotating
+* (appears on Chrome 38, Safari 7.1, and IE 11).
+*
+* Update: the gap no longer appears on Chrome when .mdl-spinner__layer-N's
+* opacity is 0.99, but still does on Safari and IE.
+*/
+.mdl-spinner__gap-patch {
+  position: absolute;
+  box-sizing: border-box;
+  top: 0;
+  left: 45%;
+  width: 10%;
+  height: 100%;
+  overflow: hidden;
+  border-color: inherit;
+
+  & .mdl-spinner__circle {
+    width: 1000%;
+    left: -450%;
+  }
+}
+
+.mdl-spinner__circle-clipper {
+  display: inline-block;
+  position: relative;
+  width: 50%;
+  height: 100%;
+  overflow: hidden;
+  border-color: inherit;
+
+  &.mdl-spinner__left {
+    float: left;
+  }
+
+  &.mdl-spinner__right {
+    float: right;
+  }
+
+  & .mdl-spinner__circle {
+    width: 200%;
+  }
+}
+
+.mdl-spinner__circle {
+  box-sizing: border-box;
+  height: 100%;
+  border-width: $spinner-stroke-width;
+  border-style: solid;
+  border-color: inherit;
+  border-bottom-color: transparent !important;
+  border-radius: 50%;
+  animation: none;
+
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+
+  .mdl-spinner__left & {
+    border-right-color: transparent !important;
+    transform: rotate(129deg);
+
+    .mdl-spinner.is-active & {
+      animation: mdl-spinner__left-spin $spinner-arc-time
+          $animation-curve-fast-out-slow-in infinite both;
+    }
+  }
+
+  .mdl-spinner__right & {
+    left: -100%;
+    border-left-color: transparent !important;
+    transform: rotate(-129deg);
+
+    .mdl-spinner.is-active & {
+      animation: mdl-spinner__right-spin $spinner-arc-time
+          $animation-curve-fast-out-slow-in infinite both;
+    }
+  }
+}
+
+@keyframes mdl-spinner__left-spin {
+  from { transform: rotate(130deg); }
+  50% { transform: rotate(-5deg); }
+  to { transform: rotate(130deg); }
+}
+
+@keyframes mdl-spinner__right-spin {
+  from { transform: rotate(-130deg); }
+  50% { transform: rotate(5deg); }
+  to { transform: rotate(-130deg); }
+}
diff --git a/node_modules/material-design-lite/src/spinner/snippets/spinner-default.html b/node_modules/material-design-lite/src/spinner/snippets/spinner-default.html
new file mode 100644
index 0000000..26961c8
--- /dev/null
+++ b/node_modules/material-design-lite/src/spinner/snippets/spinner-default.html
@@ -0,0 +1,2 @@
+<!-- MDL Spinner Component -->
+<div class="mdl-spinner mdl-js-spinner is-active"></div>
diff --git a/node_modules/material-design-lite/src/spinner/snippets/spinner-single-color.html b/node_modules/material-design-lite/src/spinner/snippets/spinner-single-color.html
new file mode 100644
index 0000000..083abdf
--- /dev/null
+++ b/node_modules/material-design-lite/src/spinner/snippets/spinner-single-color.html
@@ -0,0 +1,2 @@
+<!-- MDL Spinner Component with Single Color -->
+<div class="mdl-spinner mdl-spinner--single-color mdl-js-spinner is-active"></div>
diff --git a/node_modules/material-design-lite/src/spinner/spinner.js b/node_modules/material-design-lite/src/spinner/spinner.js
new file mode 100644
index 0000000..8159fb3
--- /dev/null
+++ b/node_modules/material-design-lite/src/spinner/spinner.js
@@ -0,0 +1,147 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Spinner MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @param {HTMLElement} element The element that will be upgraded.
+   * @constructor
+   */
+  var MaterialSpinner = function MaterialSpinner(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialSpinner'] = MaterialSpinner;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialSpinner.prototype.Constant_ = {
+    MDL_SPINNER_LAYER_COUNT: 4
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialSpinner.prototype.CssClasses_ = {
+    MDL_SPINNER_LAYER: 'mdl-spinner__layer',
+    MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',
+    MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',
+    MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',
+    MDL_SPINNER_LEFT: 'mdl-spinner__left',
+    MDL_SPINNER_RIGHT: 'mdl-spinner__right'
+  };
+
+  /**
+   * Auxiliary method to create a spinner layer.
+   *
+   * @param {number} index Index of the layer to be created.
+   * @public
+   */
+  MaterialSpinner.prototype.createLayer = function(index) {
+    var layer = document.createElement('div');
+    layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);
+    layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);
+
+    var leftClipper = document.createElement('div');
+    leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);
+    leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);
+
+    var gapPatch = document.createElement('div');
+    gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);
+
+    var rightClipper = document.createElement('div');
+    rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);
+    rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);
+
+    var circleOwners = [leftClipper, gapPatch, rightClipper];
+
+    for (var i = 0; i < circleOwners.length; i++) {
+      var circle = document.createElement('div');
+      circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);
+      circleOwners[i].appendChild(circle);
+    }
+
+    layer.appendChild(leftClipper);
+    layer.appendChild(gapPatch);
+    layer.appendChild(rightClipper);
+
+    this.element_.appendChild(layer);
+  };
+  MaterialSpinner.prototype['createLayer'] =
+      MaterialSpinner.prototype.createLayer;
+
+  /**
+   * Stops the spinner animation.
+   * Public method for users who need to stop the spinner for any reason.
+   *
+   * @public
+   */
+  MaterialSpinner.prototype.stop = function() {
+    this.element_.classList.remove('is-active');
+  };
+  MaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;
+
+  /**
+   * Starts the spinner animation.
+   * Public method for users who need to manually start the spinner for any reason
+   * (instead of just adding the 'is-active' class to their markup).
+   *
+   * @public
+   */
+  MaterialSpinner.prototype.start = function() {
+    this.element_.classList.add('is-active');
+  };
+  MaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;
+
+  /**
+   * Initialize element.
+   */
+  MaterialSpinner.prototype.init = function() {
+    if (this.element_) {
+      for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {
+        this.createLayer(i);
+      }
+
+      this.element_.classList.add('is-upgraded');
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialSpinner,
+    classAsString: 'MaterialSpinner',
+    cssClass: 'mdl-js-spinner',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/styleguide.scss b/node_modules/material-design-lite/src/styleguide.scss
new file mode 100644
index 0000000..ee418fb
--- /dev/null
+++ b/node_modules/material-design-lite/src/styleguide.scss
@@ -0,0 +1,101 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "material-design-lite";
+
+$padding: 24px;
+
+body {
+  margin: 0px;
+}
+
+.styleguide-demo h1 {
+  margin: ($padding * 2) $padding 0 $padding;
+}
+
+.styleguide-demo h1:after {
+  content: '';
+
+  display: block;
+  width: 100%;
+
+  border-bottom: 1px solid rgba(0,0,0,0.5);
+  margin-top: $padding;
+}
+
+.styleguide-demo {
+  opacity: 0;
+
+  transition: opacity 0.6s ease;
+}
+
+.styleguide-masthead {
+  height: 256px;
+  background: unquote("rgb(#{nth($palette-grey, 10)})");
+  padding: 115px 16px 0;
+}
+
+.styleguide-container {
+  position: relative;
+  max-width: 960px;
+  width: 100%;
+}
+
+.styleguide-title {
+  color: #fff;
+  bottom: auto;
+  position: relative;
+  font-size: 56px;
+  font-weight: 300;
+  line-height: 1;
+  letter-spacing: -0.02em;
+
+  &:after {
+    border-bottom: 0px;
+  }
+
+  span {
+    font-weight: 300;
+  }
+}
+
+.mdl-styleguide .mdl-layout__drawer .mdl-navigation__link {
+  padding: 10px 24px;
+}
+
+.demosLoaded .styleguide-demo {
+  opacity: 1;
+}
+
+iframe {
+  display: block;
+
+  width: 100%;
+
+  border: none;
+}
+
+iframe.heightSet {
+  overflow: hidden;
+}
+
+.demo-wrapper {
+  margin: $padding;
+
+  iframe {
+    border: 1px solid rgba(0,0,0,0.5);
+  }
+}
diff --git a/node_modules/material-design-lite/src/switch/README.md b/node_modules/material-design-lite/src/switch/README.md
new file mode 100755
index 0000000..566c212
--- /dev/null
+++ b/node_modules/material-design-lite/src/switch/README.md
@@ -0,0 +1,64 @@
+## Introduction
+
+The Material Design Lite (MDL) **switch** component is an enhanced version of the standard HTML `<input type="checkbox">` element. A switch consists of a short horizontal "track" with a prominent circular state indicator and, typically, text that clearly communicates a binary condition that will be set or unset when the user clicks or touches it. Like checkboxes, switches may appear individually or in groups, and can be selected and deselected individually. However, switches provide a more intuitive visual representation of their state: left/gray for *off*, right/colored for *on*. The MDL switch component allows you to add both display and click effects.
+
+Switches, particularly as a replacement for certain checkboxes, can be a valuable feature in user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the switch component's [Material Design specifications page](http://www.google.com/design/spec/components/selection-controls.html#selection-controls-switch) for details.
+
+The enhanced switch component has a more vivid visual look than a standard checkbox, and may be initially or programmatically *disabled*.
+
+### To include an MDL **switch** component:
+
+&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the switch it will contain.
+```html
+<label for="switch1">
+...
+</label>
+```
+&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `"checkbox"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.
+```html
+<label for="switch1">
+  <input type="checkbox" id="switch1">
+</label>
+```
+&nbsp;3. Also inside the label, after the checkbox, code a `<span>` element containing the switch's text caption.
+```html
+<label for="switch1">
+  <input type="checkbox" id="switch1">
+  <span>Sound off/on</span>
+</label>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, switch, and caption using the `class` attribute.
+```html
+<label for="switch1" class="mdl-switch mdl-js-switch">
+  <input type="checkbox" id="switch1" class="mdl-switch__input">
+  <span class="mdl-switch__label">Sound off/on</span>
+</label>
+```
+
+The switch component is ready for use.
+
+#### Example
+
+A switch with a ripple click effect.
+
+```html
+<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
+  <input type="checkbox" id="switch1" class="mdl-switch__input">
+  <span class="mdl-switch__label">Sound off/on</span>
+</label>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the switch. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-switch` | Defines label as an MDL component | Required on label element|
+| `mdl-js-switch` | Assigns basic MDL behavior to label | Required on label element |
+| `mdl-switch__input` | Applies basic MDL behavior to switch | Required on input element (switch) |
+| `mdl-switch__label` | Applies basic MDL behavior to caption | Required on span element (caption) |
+| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (switch) |
+
+>**Note:** Disabled versions of all available switch types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type="checkbox" id="switch5" class="mdl-switch__input" disabled>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/switch/_switch.scss b/node_modules/material-design-lite/src/switch/_switch.scss
new file mode 100644
index 0000000..9cd726f
--- /dev/null
+++ b/node_modules/material-design-lite/src/switch/_switch.scss
@@ -0,0 +1,203 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+@import "../variables";
+@import "../mixins";
+
+.mdl-switch {
+  position: relative;
+
+  z-index: 1;
+
+  vertical-align: middle;
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: 100%;
+  height: $switch-label-height;
+  margin: 0;
+  padding: 0;
+
+  overflow: visible;
+
+  &.is-upgraded {
+    padding-left: $switch-track-length - 8px;
+  }
+
+  // avoids blue box around switch
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.mdl-switch__input {
+  line-height: $switch-label-height;
+
+  .mdl-switch.is-upgraded & {
+    // Hide input element, while still making it respond to focus.
+    position: absolute;
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+    -ms-appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+    border: none;
+  }
+}
+
+.mdl-switch__track {
+  background: $switch-off-track-color;
+  position: absolute;
+  left: 0;
+  top: $switch-track-top;
+  height: $switch-track-height;
+  width: $switch-track-length;
+  border-radius: $switch-track-height;
+
+  cursor: pointer;
+
+  .mdl-switch.is-checked & {
+    background: $switch-track-color;
+  }
+
+  fieldset[disabled] .mdl-switch,
+  .mdl-switch.is-disabled & {
+    background: $switch-disabled-track-color;
+    cursor: auto;
+  }
+}
+
+.mdl-switch__thumb {
+  background: $switch-off-thumb-color;
+  position: absolute;
+  left: 0;
+  top: $switch-thumb-top;
+  height: $switch-thumb-size;
+  width: $switch-thumb-size;
+  border-radius: 50%;
+
+  cursor: pointer;
+
+  @include shadow-2dp();
+
+  @include material-animation-default(0.28s);
+  transition-property: left;
+
+  .mdl-switch.is-checked & {
+    background: $switch-thumb-color;
+    left: $switch-track-length - $switch-thumb-size;
+
+    @include shadow-3dp();
+  }
+
+  fieldset[disabled] .mdl-switch,
+  .mdl-switch.is-disabled & {
+    background: $switch-disabled-thumb-color;
+    cursor: auto;
+  }
+}
+
+.mdl-switch__focus-helper {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+
+  transform: translate(-$switch-helper-size / 2, -$switch-helper-size / 2);
+
+  display: inline-block;
+
+  box-sizing: border-box;
+  width: $switch-helper-size;
+  height: $switch-helper-size;
+  border-radius: 50%;
+
+  background-color: transparent;
+
+  .mdl-switch.is-focused & {
+    box-shadow: 0 0 0px (($switch-ripple-size - $switch-helper-size) / 2)
+        rgba(0, 0, 0, 0.1);
+    background-color: rgba(0, 0, 0, 0.1);
+  }
+
+  .mdl-switch.is-focused.is-checked & {
+    box-shadow: 0 0 0px (($switch-ripple-size - $switch-helper-size) / 2)
+        $switch-faded-color;
+    background-color: $switch-faded-color;
+  }
+}
+
+.mdl-switch__label {
+  position: relative;
+  cursor: pointer;
+  font-size: $switch-label-font-size;
+  line-height: $switch-label-height;
+  margin: 0;
+  left: 24px;
+
+  fieldset[disabled] .mdl-switch,
+  .mdl-switch.is-disabled & {
+    color: $switch-disabled-thumb-color;
+    cursor: auto;
+  }
+}
+
+.mdl-switch__ripple-container {
+  position: absolute;
+  z-index: 2;
+  top: -($switch-ripple-size - $switch-label-height) / 2;
+  left: $switch-thumb-size / 2 - $switch-ripple-size / 2;
+
+  box-sizing: border-box;
+  width: $switch-ripple-size;
+  height: $switch-ripple-size;
+  border-radius: 50%;
+
+  cursor: pointer;
+
+  overflow: hidden;
+  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
+
+  transition-duration: 0.40s;
+  transition-timing-function: step-end;
+  transition-property: left;
+
+  & .mdl-ripple {
+    background: $switch-color;
+  }
+
+  fieldset[disabled] .mdl-switch,
+  .mdl-switch.is-disabled & {
+    cursor: auto;
+  }
+
+  fieldset[disabled] .mdl-switch & .mdl-ripple,
+  .mdl-switch.is-disabled & .mdl-ripple {
+    background: transparent;
+  }
+
+  .mdl-switch.is-checked & {
+    left: $switch-track-length - $switch-ripple-size / 2 -
+        $switch-thumb-size / 2;
+  }
+}
diff --git a/node_modules/material-design-lite/src/switch/snippets/switch-off.html b/node_modules/material-design-lite/src/switch/snippets/switch-off.html
new file mode 100644
index 0000000..08f2c76
--- /dev/null
+++ b/node_modules/material-design-lite/src/switch/snippets/switch-off.html
@@ -0,0 +1,4 @@
+<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-2">
+  <input type="checkbox" id="switch-2" class="mdl-switch__input">
+  <span class="mdl-switch__label"></span>
+</label>
diff --git a/node_modules/material-design-lite/src/switch/snippets/switch-on.html b/node_modules/material-design-lite/src/switch/snippets/switch-on.html
new file mode 100644
index 0000000..cc44cee
--- /dev/null
+++ b/node_modules/material-design-lite/src/switch/snippets/switch-on.html
@@ -0,0 +1,4 @@
+<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1">
+  <input type="checkbox" id="switch-1" class="mdl-switch__input" checked>
+  <span class="mdl-switch__label"></span>
+</label>
diff --git a/node_modules/material-design-lite/src/switch/switch.js b/node_modules/material-design-lite/src/switch/switch.js
new file mode 100644
index 0000000..e71a591
--- /dev/null
+++ b/node_modules/material-design-lite/src/switch/switch.js
@@ -0,0 +1,273 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Checkbox MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialSwitch = function MaterialSwitch(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialSwitch'] = MaterialSwitch;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialSwitch.prototype.Constant_ = {
+    TINY_TIMEOUT: 0.001
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialSwitch.prototype.CssClasses_ = {
+    INPUT: 'mdl-switch__input',
+    TRACK: 'mdl-switch__track',
+    THUMB: 'mdl-switch__thumb',
+    FOCUS_HELPER: 'mdl-switch__focus-helper',
+    RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',
+    RIPPLE_CONTAINER: 'mdl-switch__ripple-container',
+    RIPPLE_CENTER: 'mdl-ripple--center',
+    RIPPLE: 'mdl-ripple',
+    IS_FOCUSED: 'is-focused',
+    IS_DISABLED: 'is-disabled',
+    IS_CHECKED: 'is-checked'
+  };
+
+  /**
+   * Handle change of state.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSwitch.prototype.onChange_ = function(event) {
+    this.updateClasses_();
+  };
+
+  /**
+   * Handle focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSwitch.prototype.onFocus_ = function(event) {
+    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle lost focus of element.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSwitch.prototype.onBlur_ = function(event) {
+    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle mouseup.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialSwitch.prototype.onMouseUp_ = function(event) {
+    this.blur_();
+  };
+
+  /**
+   * Handle class updates.
+   *
+   * @private
+   */
+  MaterialSwitch.prototype.updateClasses_ = function() {
+    this.checkDisabled();
+    this.checkToggleState();
+  };
+
+  /**
+   * Add blur.
+   *
+   * @private
+   */
+  MaterialSwitch.prototype.blur_ = function() {
+    // TODO: figure out why there's a focus event being fired after our blur,
+    // so that we can avoid this hack.
+    window.setTimeout(function() {
+      this.inputElement_.blur();
+    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));
+  };
+
+  // Public methods.
+
+  /**
+   * Check the components disabled state.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.checkDisabled = function() {
+    if (this.inputElement_.disabled) {
+      this.element_.classList.add(this.CssClasses_.IS_DISABLED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
+    }
+  };
+  MaterialSwitch.prototype['checkDisabled'] =
+      MaterialSwitch.prototype.checkDisabled;
+
+  /**
+   * Check the components toggled state.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.checkToggleState = function() {
+    if (this.inputElement_.checked) {
+      this.element_.classList.add(this.CssClasses_.IS_CHECKED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);
+    }
+  };
+  MaterialSwitch.prototype['checkToggleState'] =
+      MaterialSwitch.prototype.checkToggleState;
+
+  /**
+   * Disable switch.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.disable = function() {
+    this.inputElement_.disabled = true;
+    this.updateClasses_();
+  };
+  MaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;
+
+  /**
+   * Enable switch.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.enable = function() {
+    this.inputElement_.disabled = false;
+    this.updateClasses_();
+  };
+  MaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;
+
+  /**
+   * Activate switch.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.on = function() {
+    this.inputElement_.checked = true;
+    this.updateClasses_();
+  };
+  MaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;
+
+  /**
+   * Deactivate switch.
+   *
+   * @public
+   */
+  MaterialSwitch.prototype.off = function() {
+    this.inputElement_.checked = false;
+    this.updateClasses_();
+  };
+  MaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;
+
+  /**
+   * Initialize element.
+   */
+  MaterialSwitch.prototype.init = function() {
+    if (this.element_) {
+      this.inputElement_ = this.element_.querySelector('.' +
+          this.CssClasses_.INPUT);
+
+      var track = document.createElement('div');
+      track.classList.add(this.CssClasses_.TRACK);
+
+      var thumb = document.createElement('div');
+      thumb.classList.add(this.CssClasses_.THUMB);
+
+      var focusHelper = document.createElement('span');
+      focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);
+
+      thumb.appendChild(focusHelper);
+
+      this.element_.appendChild(track);
+      this.element_.appendChild(thumb);
+
+      this.boundMouseUpHandler = this.onMouseUp_.bind(this);
+
+      if (this.element_.classList.contains(
+          this.CssClasses_.RIPPLE_EFFECT)) {
+        this.element_.classList.add(
+            this.CssClasses_.RIPPLE_IGNORE_EVENTS);
+        this.rippleContainerElement_ = document.createElement('span');
+        this.rippleContainerElement_.classList.add(
+            this.CssClasses_.RIPPLE_CONTAINER);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);
+        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);
+        this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);
+
+        var ripple = document.createElement('span');
+        ripple.classList.add(this.CssClasses_.RIPPLE);
+
+        this.rippleContainerElement_.appendChild(ripple);
+        this.element_.appendChild(this.rippleContainerElement_);
+      }
+
+      this.boundChangeHandler = this.onChange_.bind(this);
+      this.boundFocusHandler = this.onFocus_.bind(this);
+      this.boundBlurHandler = this.onBlur_.bind(this);
+
+      this.inputElement_.addEventListener('change', this.boundChangeHandler);
+      this.inputElement_.addEventListener('focus', this.boundFocusHandler);
+      this.inputElement_.addEventListener('blur', this.boundBlurHandler);
+      this.element_.addEventListener('mouseup', this.boundMouseUpHandler);
+
+      this.updateClasses_();
+      this.element_.classList.add('is-upgraded');
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialSwitch,
+    classAsString: 'MaterialSwitch',
+    cssClass: 'mdl-js-switch',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/tabs/README.md b/node_modules/material-design-lite/src/tabs/README.md
new file mode 100755
index 0000000..c3f37c6
--- /dev/null
+++ b/node_modules/material-design-lite/src/tabs/README.md
@@ -0,0 +1,150 @@
+## Introduction
+
+The Material Design Lite (MDL) **tab** component is a user interface element that allows different content blocks to share the same screen space in a mutually exclusive manner. Tabs are always presented in sets of two or more, and they make it easy to explore and switch among different views or functional aspects of an app, or to browse categorized data sets individually. Tabs serve as "headings" for their respective content; the *active* tab &mdash; the one whose content is currently displayed &mdash; is always visually distinguished from the others so the user knows which heading the current content belongs to.
+
+Tabs are an established but non-standardized feature in user interfaces, and allow users to view different, but often related, blocks of content (often called *panels*). Tabs save screen real estate and provide intuitive and logical access to data while reducing navigation and associated user confusion. Their design and use is an important factor in the overall user experience. See the tab component's [Material Design specifications page](http://www.google.com/design/spec/components/tabs.html) for details.
+
+### To include a set of MDL **tab** components:
+
+&nbsp;1. Code a `<div>` element; this is the "outer" div, intended to contain all of the tabs and their content.
+```html
+<div>
+</div>
+```
+&nbsp;2. Inside the "outer" div, code one "inner" div for the tabs themselves, and one for each tab's content, all siblings. That is, for three content tabs, you would code four "inner" divs.
+```html
+<div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+  <div>
+  ...
+  </div>
+</div>
+```
+&nbsp;3. Inside the first "inner" div (the tabs), code one anchor `<a>` (link) tag for each tab. Include `href` attributes with values to match the tabs' `id` attribute values, and some brief link text. On the remaining "inner" divs (the content), code `id` attributes whose values match the links' `href`s.
+```html
+<div>
+  <div>
+    <a href="#tab1">Tab One</a>
+    <a href="#tab2">Tab Two</a>
+    <a href="#tab3">Tab Three</a>
+  </div>
+  <div id="tab1">
+  ...
+  </div>
+  <div id="tab2">
+  ...
+  </div>
+  <div id="tab3">
+  ...
+  </div>
+</div>
+```
+&nbsp;4. Inside the remaining "inner" divs, code the content you intend to display in each panel; use standard HTML tags to structure the content as desired.
+```html
+<div>
+  <div>
+    <a href="#tab1">Tab One</a>
+    <a href="#tab2">Tab Two</a>
+    <a href="#tab3">Tab Three</a>
+  </div>
+  <div id="tab1">
+    <p>First tab's content.</p>
+  </div>
+  <div id="tab2">
+    <p>Second tab's content.</p>
+  </div>
+  <div id="tab3">
+    <p>Third tab's content.</p>
+  </div>
+</div>
+```
+&nbsp;5. Add one or more MDL classes, separated by spaces, to the "outer" and "inner" divs using the `class` attribute; be sure to include the `is-active` class on the tab you want to be displayed by default.
+```html
+<div class="mdl-tabs mdl-js-tabs">
+  <div class="mdl-tabs__tab-bar">
+    <a href="#tab1" class="mdl-tabs__tab">Tab One</a>
+    <a href="#tab2" class="mdl-tabs__tab">Tab Two</a>
+    <a href="#tab3" class="mdl-tabs__tab">Tab Three</a>
+  </div>
+  <div class="mdl-tabs__panel is-active" id="tab1">
+    <p>First tab's content.</p>
+  </div>
+  <div class="mdl-tabs__panel" id="tab2">
+    <p>Second tab's content.</p>
+  </div>
+  <div class="mdl-tabs__panel" id="tab3">
+    <p>Third tab's content.</p>
+  </div>
+</div>
+```
+
+The tab components are ready for use.
+
+#### Example
+
+Three tabs, with ripple effect on tab links.
+
+```html
+<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
+  <div class="mdl-tabs__tab-bar">
+    <a href="#about-panel" class="mdl-tabs__tab is-active">About the Beatles</a>
+    <a href="#members-panel" class="mdl-tabs__tab">Members</a>
+    <a href="#albums-panel" class="mdl-tabs__tab">Discography</a>
+  </div>
+  <div class="mdl-tabs__panel is-active" id="about-panel">
+    <p><b>The Beatles</b> were a four-piece musical group from Liverpool, England.
+    Formed in 1960, their career spanned just over a decade, yet they are widely
+    regarded as the most influential band in history.</p>
+    <p>Their songs are among the best-loved music of all time. It is said that every
+    minute of every day, a radio station somewhere is playing a Beatles song.</p>
+  </div>
+  <div class="mdl-tabs__panel" id="members-panel">
+    <p>The Beatles' members were:</p>
+    <ul>
+      <li>John Lennon (1940-1980)</li>
+      <li>Paul McCartney (1942-)</li>
+      <li>George Harrison (1943-2001)</li>
+      <li>Ringo Starr (1940-)</li>
+    </ul>
+  </div>
+  <div class="mdl-tabs__panel" id="albums-panel">
+    <p>The Beatles' original UK LPs, in order of release:</p>
+    <ol>
+      <li>Please Please Me (1963)</li>
+      <li>With the Beatles (1963)</li>
+      <li>A Hard Day's Night (1964)</li>
+      <li>Beatles for Sale (1964)</li>
+      <li>Help! (1965)</li>
+      <li>Rubber Soul (1965)</li>
+      <li>Revolver (1966)</li>
+      <li>Sgt. Pepper's Lonely Hearts Club Band (1967)</li>
+      <li>The Beatles ("The White Album", 1968)</li>
+      <li>Yellow Submarine (1969)</li>
+      <li>Abbey Road (1969)</li>
+      <li>Let It Be (1970)</li>
+    </ol>
+  </div>
+</div>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the tabs. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-tabs` | Defines a tabs container as an MDL component | Required on "outer" div element |
+| `mdl-js-tabs` | Assigns basic MDL behavior to tabs container | Required on "outer" div element|
+| `mdl-js-ripple-effect` | Applies *ripple* click effect to tab links | Optional; goes on "outer" div element|
+| `mdl-tabs__tab-bar` | Defines a container as an MDL tabs link bar | Required on first "inner" div element |
+| `mdl-tabs__tab` | Defines an anchor (link) as an MDL tab activator | Required on all links in first "inner" div element |
+| `is-active` | Defines a tab as the default display tab | Required on one (and only one) of the "inner" div (tab) elements |
+| `mdl-tabs__panel` | Defines a container as tab content | Required on each of the "inner" div (tab) elements |
diff --git a/node_modules/material-design-lite/src/tabs/_tabs.scss b/node_modules/material-design-lite/src/tabs/_tabs.scss
new file mode 100644
index 0000000..a9ec51d
--- /dev/null
+++ b/node_modules/material-design-lite/src/tabs/_tabs.scss
@@ -0,0 +1,114 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+
+.mdl-tabs {
+  display: block;
+  width: 100%;
+}
+
+.mdl-tabs__tab-bar {
+    display         : flex;
+    flex-direction  : row;
+    justify-content : center; // ⇾
+    align-content   : space-between; // ||
+    align-items     : flex-start; // ↓
+
+    height          : 48px;
+    padding         : 0 0 0 0;
+    margin          : 0;
+    border-bottom   : 1px solid $tab-border-color;
+}
+
+.mdl-tabs__tab {
+  margin: 0;
+  border: none;
+  padding: 0 24px 0 24px;
+
+  float: left;
+  position: relative;
+  display: block;
+
+  text-decoration: none;
+  height: 48px;
+  line-height: 48px;
+
+  text-align: center;
+  font-weight: 500;
+  font-size: $layout-tab-font-size;
+  text-transform: uppercase;
+
+  color: $tab-text-color;
+  overflow: hidden;
+
+  .mdl-tabs.is-upgraded &.is-active {
+    color: $tab-active-text-color;
+  }
+
+  .mdl-tabs.is-upgraded &.is-active:after {
+    height: 2px;
+    width: 100%;
+    display: block;
+    content: " ";
+    bottom: 0px;
+    left: 0px;
+    position: absolute;
+    background: $tab-highlight-color;
+    animation: border-expand 0.2s cubic-bezier(0.4, 0.0, 0.4, 1) 0.01s alternate forwards;
+    transition: all 1s cubic-bezier(0.4, 0.0, 1, 1);
+  }
+
+  & .mdl-tabs__ripple-container {
+    display: block;
+    position: absolute;
+    height: 100%;
+    width: 100%;
+    left: 0px;
+    top: 0px;
+    z-index: 1;
+    overflow: hidden;
+
+    & .mdl-ripple {
+      background: $tab-highlight-color;
+    }
+  }
+}
+
+.mdl-tabs__panel {
+  display: block;
+
+  .mdl-tabs.is-upgraded & {
+    display: none;
+  }
+
+  .mdl-tabs.is-upgraded &.is-active {
+    display: block;
+  }
+}
+
+@keyframes border-expand {
+  0% {
+    opacity: 0;
+    width: 0;
+  }
+
+  100% {
+    opacity: 1;
+    width: 100%;
+  }
+}
diff --git a/node_modules/material-design-lite/src/tabs/snippets/tabs.html b/node_modules/material-design-lite/src/tabs/snippets/tabs.html
new file mode 100644
index 0000000..ec88207
--- /dev/null
+++ b/node_modules/material-design-lite/src/tabs/snippets/tabs.html
@@ -0,0 +1,33 @@
+<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
+  <div class="mdl-tabs__tab-bar">
+      <a href="#starks-panel" class="mdl-tabs__tab is-active">Starks</a>
+      <a href="#lannisters-panel" class="mdl-tabs__tab">Lannisters</a>
+      <a href="#targaryens-panel" class="mdl-tabs__tab">Targaryens</a>
+  </div>
+
+  <div class="mdl-tabs__panel is-active" id="starks-panel">
+    <ul>
+      <li>Eddard</li>
+      <li>Catelyn</li>
+      <li>Robb</li>
+      <li>Sansa</li>
+      <li>Brandon</li>
+      <li>Arya</li>
+      <li>Rickon</li>
+    </ul>
+  </div>
+  <div class="mdl-tabs__panel" id="lannisters-panel">
+    <ul>
+      <li>Tywin</li>
+      <li>Cersei</li>
+      <li>Jamie</li>
+      <li>Tyrion</li>
+    </ul>
+  </div>
+  <div class="mdl-tabs__panel" id="targaryens-panel">
+    <ul>
+      <li>Viserys</li>
+      <li>Daenerys</li>
+    </ul>
+  </div>
+</div>
diff --git a/node_modules/material-design-lite/src/tabs/tabs.js b/node_modules/material-design-lite/src/tabs/tabs.js
new file mode 100644
index 0000000..110997b
--- /dev/null
+++ b/node_modules/material-design-lite/src/tabs/tabs.js
@@ -0,0 +1,164 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Tabs MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {Element} element The element that will be upgraded.
+   */
+  var MaterialTabs = function MaterialTabs(element) {
+    // Stores the HTML element.
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialTabs'] = MaterialTabs;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialTabs.prototype.Constant_ = {
+    // None at the moment.
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialTabs.prototype.CssClasses_ = {
+    TAB_CLASS: 'mdl-tabs__tab',
+    PANEL_CLASS: 'mdl-tabs__panel',
+    ACTIVE_CLASS: 'is-active',
+    UPGRADED_CLASS: 'is-upgraded',
+
+    MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',
+    MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',
+    MDL_RIPPLE: 'mdl-ripple',
+    MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'
+  };
+
+  /**
+   * Handle clicks to a tabs component
+   *
+   * @private
+   */
+  MaterialTabs.prototype.initTabs_ = function() {
+    if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {
+      this.element_.classList.add(
+        this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);
+    }
+
+    // Select element tabs, document panels
+    this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);
+    this.panels_ =
+        this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);
+
+    // Create new tabs for each tab element
+    for (var i = 0; i < this.tabs_.length; i++) {
+      new MaterialTab(this.tabs_[i], this);
+    }
+
+    this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);
+  };
+
+  /**
+   * Reset tab state, dropping active classes
+   *
+   * @private
+   */
+  MaterialTabs.prototype.resetTabState_ = function() {
+    for (var k = 0; k < this.tabs_.length; k++) {
+      this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);
+    }
+  };
+
+  /**
+   * Reset panel state, droping active classes
+   *
+   * @private
+   */
+  MaterialTabs.prototype.resetPanelState_ = function() {
+    for (var j = 0; j < this.panels_.length; j++) {
+      this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);
+    }
+  };
+
+  /**
+   * Initialize element.
+   */
+  MaterialTabs.prototype.init = function() {
+    if (this.element_) {
+      this.initTabs_();
+    }
+  };
+
+  /**
+   * Constructor for an individual tab.
+   *
+   * @constructor
+   * @param {Element} tab The HTML element for the tab.
+   * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.
+   */
+  function MaterialTab(tab, ctx) {
+    if (tab) {
+      if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {
+        var rippleContainer = document.createElement('span');
+        rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);
+        rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);
+        var ripple = document.createElement('span');
+        ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);
+        rippleContainer.appendChild(ripple);
+        tab.appendChild(rippleContainer);
+      }
+
+      tab.addEventListener('click', function(e) {
+        if (tab.getAttribute('href').charAt(0) === '#') {
+          e.preventDefault();
+          var href = tab.href.split('#')[1];
+          var panel = ctx.element_.querySelector('#' + href);
+          ctx.resetTabState_();
+          ctx.resetPanelState_();
+          tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
+          panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
+        }
+      });
+
+    }
+  }
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialTabs,
+    classAsString: 'MaterialTabs',
+    cssClass: 'mdl-js-tabs'
+  });
+})();
diff --git a/node_modules/material-design-lite/src/template.scss b/node_modules/material-design-lite/src/template.scss
new file mode 100644
index 0000000..4515a80
--- /dev/null
+++ b/node_modules/material-design-lite/src/template.scss
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Material Design Lite */
+
+$styleguide-generate-template: true;
+
+@import "styleguide";
diff --git a/node_modules/material-design-lite/src/textfield/README.md b/node_modules/material-design-lite/src/textfield/README.md
new file mode 100755
index 0000000..7ca9d7a
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/README.md
@@ -0,0 +1,259 @@
+## Introduction
+
+The Material Design Lite (MDL) **text field** component is an enhanced version of the standard HTML `<input type="text">` and `<input type="textarea">` elements. A text field consists of a horizontal line indicating where keyboard input can occur and, typically, text that clearly communicates the intended contents of the text field. The MDL text field component provides various types of text fields, and allows you to add both display and click effects.
+
+Text fields are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the text field component's [Material Design specifications page](http://www.google.com/design/spec/components/text-fields.html) for details.
+
+The enhanced text field component has a more vivid visual look than a standard text field, and may be initially or programmatically *disabled*.
+There are three main types of text fields in the text field component, each with its own basic coding requirements. The types are *single-line*, *multi-line*, and *expandable*.
+
+### To include a *single-line* MDL **text field** component:
+
+&nbsp;1. Code a `<div>` element to hold the text field.
+```html
+<div>
+...
+</div>
+```
+&nbsp;2. Inside the div, code an `<input>` element with a `type` attribute of `"text"` (the text field), and an `id` attribute of your choice.
+```html
+<div>
+  <input type="text" id="user">
+</div>
+```
+&nbsp;3. Also inside the div, after the text field, code a `<label>` element with a `for` attribute whose value matches the `input` element's `id` value, and a short string to be used as the field's placeholder text.
+```html
+<div>
+  <input type="text" id="user">
+  <label for="user">User name</label>
+</div>
+```
+&nbsp;4. Optionally, add a `pattern` attribute and value to the `<input>` element (see the [W3C HTML5 forms specification](http://www.w3.org/TR/html5/forms.html#the-pattern-attribute) for details) and an associated error message in a `<span>` element following the `<label>`.
+```html
+<div>
+  <input type="text" id="user" pattern="[A-Z,a-z, ]*">
+  <label for="user">User name</label>
+  <span>Letters and spaces only</span>
+</div>
+```
+&nbsp;5. Add one or more MDL classes, separated by spaces, to the div container, text field, field label, and error message using the `class` attribute.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <input class="mdl-textfield__input" type="text" id="user" pattern="[A-Z,a-z, ]*">
+  <label class="mdl-textfield__label" for="user">User name</label>
+  <span class="mdl-textfield__error">Letters and spaces only</span>
+</div>
+```
+The single-line text field component is ready for use.
+
+#### Examples
+
+Single-line text field with a standard label.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <input class="mdl-textfield__input" type="text" id="fname">
+  <label class="mdl-textfield__label" for="fname">First name</label>
+</div>
+```
+
+Single-line text field with a floating label.
+```html
+<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
+  <input class="mdl-textfield__input" type="text" id="addr1">
+  <label class="mdl-textfield__label" for="addr1">Address line 1</label>
+</div>
+```
+
+Single-line text field with a standard label, pattern matching, and error message.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <input class="mdl-textfield__input" type="text" pattern="[0-9]*" id="phone">
+  <label class="mdl-textfield__label" for="phone">Phone</label>
+  <span class="mdl-textfield__error">Digits only</span>
+</div>
+```
+
+### To include a *multi-line* MDL **text field** component:
+
+&nbsp;1. Code a `<div>` element to hold the text field.
+```html
+<div>
+...
+</div>
+```
+&nbsp;2. Inside the div, code a `<textarea>` element with a `type` attribute of `"text"` (the multi-line text field), and an `id` attribute of your choice. Include a `rows` attribute with a value of `"1"` (this attribute sets the number of *concurrently visible* input rows).
+```html
+<div>
+  <textarea type="text" rows="1" id="address"></textarea>
+</div>
+```
+&nbsp;3. Also inside the div, after the text field, code a `<label>` element with a `for` attribute whose value matches the `<textarea>` element's `id` value, and a short string to be used as the field's placeholder text.
+```html
+<div>
+  <textarea type="text" rows="1" id="address"></textarea>
+  <label for="address">Full address</label>
+</div>
+```
+&nbsp;4. Add one or more MDL classes, separated by spaces, to the div container, text field, and field label using the `class` attribute.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <textarea class="mdl-textfield__input" type="text" rows="1" id="address"></textarea>
+  <label class="mdl-textfield__label" for="address">Full address</label>
+</div>
+```
+
+The multi-line text field component is ready for use.
+
+#### Examples
+
+Multi-line text field with one visible input line.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <textarea class="mdl-textfield__input" type="text" rows="1" id="schools"></textarea>
+  <label class="mdl-textfield__label" for="schools">Schools attended</label>
+</div>
+```
+
+Multi-line text field with one visible input line and floating label.
+```html
+<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
+  <textarea class="mdl-textfield__input" type="text" rows= "1" id="schools"></textarea>
+  <label class="mdl-textfield__label" for="schools">Schools attended</label>
+</div>
+```
+
+Multi-line text field with multiple visible input lines and a maximum number of lines.
+```html
+<div class="mdl-textfield mdl-js-textfield">
+  <textarea class="mdl-textfield__input" type="text" rows="3" maxrows="6"
+   id="schools"></textarea>
+  <label class="mdl-textfield__label" for="schools">Schools attended (max. 6)</label>
+</div>
+```
+
+### To include an *expandable* MDL **text field** component:
+
+&nbsp;1. Code an "outer" `<div>` element to hold the expandable text field.
+```html
+<div>
+...
+</div>
+```
+&nbsp;2. Inside the div, code a `<label>` element with a `for` attribute whose value will match the `<input>` element's `id` value (to be coded in step 5).
+```html
+<div>
+  <label for="expando1">
+  ...
+  </label>
+</div>
+```
+&nbsp;3. Inside the label, code a `<span>` element; the span should be empty, and should be the label's only content. This element will contain the expandable text field's icon.
+```html
+<div>
+  <label for="expando1">
+    <span></span>
+  </label>
+</div>
+```
+&nbsp;4. Still inside the "outer" div, after the label containing the span, code an "inner" (nested) `<div>` element.
+```html
+<div>
+  <label for="expando1">
+    <span></span>
+  </label>
+  <div>
+  ...
+  </div>
+</div>
+```
+&nbsp;5. Inside the "inner" div, code an `<input>` element with a `type` attribute of `"text"` (the text field), and an `id` attribute whose value matches that of the `for` attribute in step 2.
+```html
+<div>
+  <label for="expando1">
+    <span></span>
+  </label>
+  <div>
+    <input type="text" id="expando1">
+  </div>
+</div>
+```
+&nbsp;6. Still inside the "inner" div, after the text field, code a `<label>` element with a `for` attribute whose value also matches the `<input>` element's `id` value (coded in step 5), and a short string to be used as the field's placeholder text.
+```html
+<div>
+  <label for="expando1">
+    <span></span>
+  </label>
+  <div>
+    <input type="text" id="expando1">
+    <label for="expando1">Expandable text field</label>
+  </div>
+</div>
+```
+&nbsp;7. Add one or more MDL classes, separated by spaces, to the "outer" div container, label, and span, and to the "inner" div container, text field, and field label using the `class` attribute.
+```html
+<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable">
+  <label class="mdl-button mdl-js-button mdl-button--icon" for="expando1">
+    <i class="material-icons">search</i>
+  </label>
+  <div class="mdl-textfield__expandable-holder">
+    <input class="mdl-textfield__input" type="text" id="expando1">
+    <label class="mdl-textfield__label" for="expando1">Expandable text field</label>
+  </div>
+</div>
+```
+
+The expandable text field component is ready for use. It will expand when the icon (the empty `<span>`) is clicked or gains focus.
+
+#### Examples
+
+Expandable text field with a standard label.
+```html
+<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable">
+  <label class="mdl-button mdl-js-button mdl-button--icon" for="search-expandable">
+    <i class="material-icons">search</i>
+  </label>
+  <div class="mdl-textfield__expandable-holder">
+    <input class="mdl-textfield__input" type="text" id="search-expandable">
+    <label class="mdl-textfield__label" for="search-expandable">Search text</label>
+  </div>
+</div>
+```
+
+Expandable text field with a floating label.
+```html
+<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable
+ mdl-textfield--floating-label">
+  <label class="mdl-button mdl-js-button mdl-button--icon" for="search-expandable2">
+    <i class="material-icons">search</i>
+  </label>
+  <div class="mdl-textfield__expandable-holder">
+    <input class="mdl-textfield__input" type="text" id="search-expandable2">
+    <label class="mdl-textfield__label" for="search-expandable2">
+      Enter search text below
+    </label>
+  </div>
+</div>
+```
+## Configuration options
+
+The MDL CSS classes apply various predefined visual and behavioral enhancements to the text field. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-textfield` | Defines container as an MDL component | Required on "outer" div element|
+| `mdl-js-textfield` | Assigns basic MDL behavior to input | Required on "outer" div element |
+| `mdl-textfield__input` | Defines element as textfield input | Required on input or textarea element |
+| `mdl-textfield__label` | Defines element as textfield label | Required on label element for input or textarea elements |
+| `mdl-textfield--floating-label` | Applies *floating label* effect | Optional; goes on "outer" div element |
+| `mdl-textfield__error` | Defines span as an MDL error message | Optional; goes on span element for MDL input element with *pattern*|
+| `mdl-textfield--expandable` | Defines a div as an MDL expandable text field container | For expandable input fields, required on "outer" div element |
+| `mdl-button` | Defines label as an MDL icon button | For expandable input fields, required on "outer" div's label element |
+| `mdl-js-button` | Assigns basic behavior to icon container | For expandable input fields, required on "outer" div's label element |
+| `mdl-button--icon` | Defines label as an MDL icon container | For expandable input fields, required on "outer" div's label element |
+| `mdl-input__expandable-holder` | Defines a container as an MDL component | For expandable input fields, required on "inner" div element |
+| `is-invalid` | Defines the textfield as invalid on initial load. | Optional on `mdl-textfield` element |
+
+(1) The "search" icon is used here as an example. Other icons can be used by modifying the text. For a list of available icons, see [this page](https://www.google.com/design/icons).
+
+>**Note:** Disabled versions of each text field type are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input class="mdl-textfield mdl-js-textfield" type="text" disabled>`
+>This attribute may be added or removed programmatically via scripting.
diff --git a/node_modules/material-design-lite/src/textfield/_textfield.scss b/node_modules/material-design-lite/src/textfield/_textfield.scss
new file mode 100644
index 0000000..b2b1d60
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/_textfield.scss
@@ -0,0 +1,223 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+// The container for the whole component.
+.mdl-textfield {
+  position: relative;
+  font-size: $input-text-font-size;
+  display: inline-block;
+  box-sizing: border-box;
+  width: 300px;
+  max-width: 100%;
+  margin: 0;
+  padding: $input-text-vertical-spacing 0;
+
+  // Align buttons, if used.
+  & .mdl-button {
+    position: absolute;
+    bottom: $input-text-vertical-spacing;
+  }
+}
+
+// Optional class to align right.
+.mdl-textfield--align-right {
+  text-align: right;
+}
+
+// Optional class to display at full width.
+.mdl-textfield--full-width {
+  width: 100%;
+}
+
+// Optional class to make the text field expandable.
+.mdl-textfield--expandable {
+  min-width: $input-text-button-size;
+  width: auto;
+  min-height: $input-text-button-size;
+  
+  // Align icon button
+  .mdl-button--icon {
+    top: $input-text-expandable-icon-top;
+  }
+}
+
+// Styling for the input element.
+.mdl-textfield__input {
+  border: none;
+  border-bottom: 1px solid $input-text-bottom-border-color;
+  display: block;
+  font-size: $input-text-font-size;
+  font-family: $performance_font;
+  margin: 0;
+  padding: $input-text-padding 0;
+  width: $input-text-width;
+  background: none;
+  text-align: left;
+  color: inherit;
+
+  &[type="number"] {
+    -moz-appearance: textfield;
+  }
+
+  &[type="number"]::-webkit-inner-spin-button,
+  &[type="number"]::-webkit-outer-spin-button {
+    -webkit-appearance: none;
+    margin: 0;
+  }
+
+  .mdl-textfield.is-focused & {
+    outline: none;
+  }
+
+  .mdl-textfield.is-invalid & {
+    border-color: $input-text-error-color;
+    box-shadow: none;
+  }
+
+  fieldset[disabled] .mdl-textfield &,
+  .mdl-textfield.is-disabled & {
+    background-color: transparent;
+    border-bottom: 1px dotted $input-text-disabled-color;
+    color: $input-text-disabled-text-color;
+  }
+}
+
+.mdl-textfield textarea.mdl-textfield__input {
+  display: block;
+}
+
+// Styling for the label / floating label.
+.mdl-textfield__label {
+  bottom: 0;
+  color: $input-text-label-color;
+  font-size: $input-text-font-size;
+  left: 0;
+  right: 0;
+  pointer-events: none;
+  position: absolute;
+  display: block;
+  top: ($input-text-padding + $input-text-vertical-spacing);
+  width: 100%;
+  overflow: hidden;
+  white-space: nowrap;
+  text-align: left;
+
+  .mdl-textfield.is-dirty &,
+  .mdl-textfield.has-placeholder & {
+    visibility: hidden;
+  }
+
+  // Floating Label
+  .mdl-textfield--floating-label & {
+    @include material-animation-default();
+  }
+
+  .mdl-textfield--floating-label.has-placeholder & {
+    transition: none;
+  }
+
+  fieldset[disabled] .mdl-textfield &,
+  .mdl-textfield.is-disabled.is-disabled & {
+    color: $input-text-disabled-text-color;
+  }
+
+  .mdl-textfield--floating-label.is-focused &,
+  .mdl-textfield--floating-label.is-dirty &,
+  .mdl-textfield--floating-label.has-placeholder & {
+    color: $input-text-highlight-color;
+    font-size : $input-text-floating-label-fontsize;
+    top: $input-text-vertical-spacing - ($input-text-floating-label-fontsize + $input-text-padding);
+    visibility: visible;
+  }
+
+  .mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder &,
+  .mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder &,
+  .mdl-textfield--floating-label.has-placeholder .mdl-textfield__expandable-holder & {
+    top: -($input-text-floating-label-fontsize + $input-text-padding);
+  }
+
+  .mdl-textfield--floating-label.is-invalid & {
+    color: $input-text-error-color;
+    font-size: $input-text-floating-label-fontsize;
+  }
+
+  // The after label is the colored underline for the TextField.
+  &:after {
+    background-color: $input-text-highlight-color;
+    bottom: $input-text-vertical-spacing;
+    content: '';
+    height: 2px;
+    left: 45%;
+    position: absolute;
+    @include material-animation-default();
+    visibility: hidden;
+    width: 10px;
+  }
+
+  .mdl-textfield.is-focused &:after {
+    left: 0;
+    visibility: visible;
+    width: 100%;
+  }
+
+  .mdl-textfield.is-invalid &:after {
+    background-color: $input-text-error-color;
+  }
+}
+
+// TextField Error.
+.mdl-textfield__error {
+  color: $input-text-error-color;
+  position: absolute;
+  font-size: $input-text-floating-label-fontsize;
+  margin-top: 3px;
+  visibility: hidden;
+  display: block;
+
+  .mdl-textfield.is-invalid & {
+    visibility: visible;
+  }
+}
+
+// Expandable Holder.
+.mdl-textfield__expandable-holder {
+  display: inline-block;
+  position: relative;
+  margin-left: $input-text-button-size;
+
+  @include material-animation-default();
+  display: inline-block;
+
+  // Safari (possibly others) need to be convinced that this field is actually
+  // visible, otherwise it cannot be tabbed to nor focused via a <label>.
+  // TODO: In some cases (Retina displays), this is big enough to render the
+  // inner element :(
+  max-width: 0.1px;
+
+  .mdl-textfield.is-focused &, .mdl-textfield.is-dirty & {
+    // This is an unfortunate hack. Animating between widths in percent (%)
+    // in many browsers (Chrome, Firefox) only animates the inner visual style
+    // of the input - the outer bounding box still 'jumps'.
+    // Thus assume a sensible maximum, and animate to/from that value.
+    max-width: 600px;
+  }
+  .mdl-textfield__label:after {
+    bottom: 0;
+  }
+}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding-demo.html
new file mode 100644
index 0000000..02c49b1
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-expanding .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-expanding.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding.html
new file mode 100644
index 0000000..53453e4
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-expanding.html
@@ -0,0 +1,12 @@
+<!-- Expandable Textfield -->
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable">
+    <label class="mdl-button mdl-js-button mdl-button--icon" for="sample6">
+      <i class="material-icons">search</i>
+    </label>
+    <div class="mdl-textfield__expandable-holder">
+      <input class="mdl-textfield__input" type="text" id="sample6">
+      <label class="mdl-textfield__label" for="sample-expandable">Expandable Input</label>
+    </div>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric-demo.html
new file mode 100644
index 0000000..38676e6
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-floating-numeric .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-floating-numeric.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric.html
new file mode 100644
index 0000000..a08e55a
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-numeric.html
@@ -0,0 +1,8 @@
+<!-- Numeric Textfield with Floating Label -->
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
+    <input class="mdl-textfield__input" type="text" pattern="-?[0-9]*(\.[0-9]+)?" id="sample4">
+    <label class="mdl-textfield__label" for="sample4">Number...</label>
+    <span class="mdl-textfield__error">Input is not a number!</span>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text-demo.html
new file mode 100644
index 0000000..b85cadf
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-floating-text .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-floating-text.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text.html
new file mode 100644
index 0000000..c2708b9
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-floating-text.html
@@ -0,0 +1,8 @@
+<!-- Textfield with Floating Label -->
+
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
+    <input class="mdl-textfield__input" type="text" id="sample3">
+    <label class="mdl-textfield__label" for="sample3">Text...</label>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line-demo.html
new file mode 100644
index 0000000..2771004
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-multi-line .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-multi-line.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line.html
new file mode 100644
index 0000000..97acdfb
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-multi-line.html
@@ -0,0 +1,7 @@
+<!-- Floating Multiline Textfield -->
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield">
+    <textarea class="mdl-textfield__input" type="text" rows= "3" id="sample5" ></textarea>
+    <label class="mdl-textfield__label" for="sample5">Text lines...</label>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric-demo.html
new file mode 100644
index 0000000..b66bedb
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-numeric .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-numeric.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric.html
new file mode 100644
index 0000000..2c87b7e
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-numeric.html
@@ -0,0 +1,8 @@
+<!-- Numeric Textfield -->
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield">
+    <input class="mdl-textfield__input" type="text" pattern="-?[0-9]*(\.[0-9]+)?" id="sample2">
+    <label class="mdl-textfield__label" for="sample2">Number...</label>
+    <span class="mdl-textfield__error">Input is not a number!</span>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-text-demo.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-text-demo.html
new file mode 100644
index 0000000..da0ccd7
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-text-demo.html
@@ -0,0 +1,7 @@
+<style>
+  .demo-textfield__textfield-text .mdl-textfield {
+    width: 100px;
+  }
+</style>
+
+{% include "textfield-text.html" %}
diff --git a/node_modules/material-design-lite/src/textfield/snippets/textfield-text.html b/node_modules/material-design-lite/src/textfield/snippets/textfield-text.html
new file mode 100644
index 0000000..e93667e
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/snippets/textfield-text.html
@@ -0,0 +1,7 @@
+<!-- Simple Textfield -->
+<form action="#">
+  <div class="mdl-textfield mdl-js-textfield">
+    <input class="mdl-textfield__input" type="text" id="sample1">
+    <label class="mdl-textfield__label" for="sample1">Text...</label>
+  </div>
+</form>
diff --git a/node_modules/material-design-lite/src/textfield/textfield.js b/node_modules/material-design-lite/src/textfield/textfield.js
new file mode 100644
index 0000000..23883f3
--- /dev/null
+++ b/node_modules/material-design-lite/src/textfield/textfield.js
@@ -0,0 +1,284 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Textfield MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialTextfield = function MaterialTextfield(element) {
+    this.element_ = element;
+    this.maxRows = this.Constant_.NO_MAX_ROWS;
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialTextfield'] = MaterialTextfield;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialTextfield.prototype.Constant_ = {
+    NO_MAX_ROWS: -1,
+    MAX_ROWS_ATTRIBUTE: 'maxrows'
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialTextfield.prototype.CssClasses_ = {
+    LABEL: 'mdl-textfield__label',
+    INPUT: 'mdl-textfield__input',
+    IS_DIRTY: 'is-dirty',
+    IS_FOCUSED: 'is-focused',
+    IS_DISABLED: 'is-disabled',
+    IS_INVALID: 'is-invalid',
+    IS_UPGRADED: 'is-upgraded',
+    HAS_PLACEHOLDER: 'has-placeholder'
+  };
+
+  /**
+   * Handle input being entered.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialTextfield.prototype.onKeyDown_ = function(event) {
+    var currentRowCount = event.target.value.split('\n').length;
+    if (event.keyCode === 13) {
+      if (currentRowCount >= this.maxRows) {
+        event.preventDefault();
+      }
+    }
+  };
+
+  /**
+   * Handle focus.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialTextfield.prototype.onFocus_ = function(event) {
+    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle lost focus.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialTextfield.prototype.onBlur_ = function(event) {
+    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+  };
+
+  /**
+   * Handle reset event from out side.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialTextfield.prototype.onReset_ = function(event) {
+    this.updateClasses_();
+  };
+
+  /**
+   * Handle class updates.
+   *
+   * @private
+   */
+  MaterialTextfield.prototype.updateClasses_ = function() {
+    this.checkDisabled();
+    this.checkValidity();
+    this.checkDirty();
+    this.checkFocus();
+  };
+
+  // Public methods.
+
+  /**
+   * Check the disabled state and update field accordingly.
+   *
+   * @public
+   */
+  MaterialTextfield.prototype.checkDisabled = function() {
+    if (this.input_.disabled) {
+      this.element_.classList.add(this.CssClasses_.IS_DISABLED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
+    }
+  };
+  MaterialTextfield.prototype['checkDisabled'] =
+      MaterialTextfield.prototype.checkDisabled;
+
+  /**
+  * Check the focus state and update field accordingly.
+  *
+  * @public
+  */
+  MaterialTextfield.prototype.checkFocus = function() {
+    if (Boolean(this.element_.querySelector(':focus'))) {
+      this.element_.classList.add(this.CssClasses_.IS_FOCUSED);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);
+    }
+  };
+  MaterialTextfield.prototype['checkFocus'] =
+    MaterialTextfield.prototype.checkFocus;
+
+  /**
+   * Check the validity state and update field accordingly.
+   *
+   * @public
+   */
+  MaterialTextfield.prototype.checkValidity = function() {
+    if (this.input_.validity) {
+      if (this.input_.validity.valid) {
+        this.element_.classList.remove(this.CssClasses_.IS_INVALID);
+      } else {
+        this.element_.classList.add(this.CssClasses_.IS_INVALID);
+      }
+    }
+  };
+  MaterialTextfield.prototype['checkValidity'] =
+      MaterialTextfield.prototype.checkValidity;
+
+  /**
+   * Check the dirty state and update field accordingly.
+   *
+   * @public
+   */
+  MaterialTextfield.prototype.checkDirty = function() {
+    if (this.input_.value && this.input_.value.length > 0) {
+      this.element_.classList.add(this.CssClasses_.IS_DIRTY);
+    } else {
+      this.element_.classList.remove(this.CssClasses_.IS_DIRTY);
+    }
+  };
+  MaterialTextfield.prototype['checkDirty'] =
+      MaterialTextfield.prototype.checkDirty;
+
+  /**
+   * Disable text field.
+   *
+   * @public
+   */
+  MaterialTextfield.prototype.disable = function() {
+    this.input_.disabled = true;
+    this.updateClasses_();
+  };
+  MaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;
+
+  /**
+   * Enable text field.
+   *
+   * @public
+   */
+  MaterialTextfield.prototype.enable = function() {
+    this.input_.disabled = false;
+    this.updateClasses_();
+  };
+  MaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;
+
+  /**
+   * Update text field value.
+   *
+   * @param {string} value The value to which to set the control (optional).
+   * @public
+   */
+  MaterialTextfield.prototype.change = function(value) {
+
+    this.input_.value = value || '';
+    this.updateClasses_();
+  };
+  MaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;
+
+  /**
+   * Initialize element.
+   */
+  MaterialTextfield.prototype.init = function() {
+
+    if (this.element_) {
+      this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);
+      this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);
+
+      if (this.input_) {
+        if (this.input_.hasAttribute(
+              /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE))) {
+          this.maxRows = parseInt(this.input_.getAttribute(
+              /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE)), 10);
+          if (isNaN(this.maxRows)) {
+            this.maxRows = this.Constant_.NO_MAX_ROWS;
+          }
+        }
+
+        if (this.input_.hasAttribute('placeholder')) {
+          this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);
+        }
+
+        this.boundUpdateClassesHandler = this.updateClasses_.bind(this);
+        this.boundFocusHandler = this.onFocus_.bind(this);
+        this.boundBlurHandler = this.onBlur_.bind(this);
+        this.boundResetHandler = this.onReset_.bind(this);
+        this.input_.addEventListener('input', this.boundUpdateClassesHandler);
+        this.input_.addEventListener('focus', this.boundFocusHandler);
+        this.input_.addEventListener('blur', this.boundBlurHandler);
+        this.input_.addEventListener('reset', this.boundResetHandler);
+
+        if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {
+          // TODO: This should handle pasting multi line text.
+          // Currently doesn't.
+          this.boundKeyDownHandler = this.onKeyDown_.bind(this);
+          this.input_.addEventListener('keydown', this.boundKeyDownHandler);
+        }
+        var invalid = this.element_.classList
+          .contains(this.CssClasses_.IS_INVALID);
+        this.updateClasses_();
+        this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
+        if (invalid) {
+          this.element_.classList.add(this.CssClasses_.IS_INVALID);
+        }
+        if (this.input_.hasAttribute('autofocus')) {
+          this.element_.focus();
+          this.checkFocus();
+        }
+      }
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialTextfield,
+    classAsString: 'MaterialTextfield',
+    cssClass: 'mdl-js-textfield',
+    widget: true
+  });
+})();
diff --git a/node_modules/material-design-lite/src/third_party/rAF.js b/node_modules/material-design-lite/src/third_party/rAF.js
new file mode 100644
index 0000000..863f561
--- /dev/null
+++ b/node_modules/material-design-lite/src/third_party/rAF.js
@@ -0,0 +1,50 @@
+// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js
+// Adapted from https://gist.github.com/paulirish/1579671 which derived from
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+// requestAnimationFrame polyfill by Erik Möller.
+// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon
+
+// MIT license
+
+(function() {
+  'use strict';
+
+  if (!Date.now) {
+    /**
+     * Date.now polyfill.
+     * @return {number} the current Date
+     */
+    Date.now = function() { return new Date().getTime(); };
+    Date['now'] = Date.now;
+  }
+
+  var vendors = ['webkit', 'moz'];
+  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
+    var vp = vendors[i];
+    window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
+    window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] ||
+        window[vp + 'CancelRequestAnimationFrame']);
+    window['requestAnimationFrame'] = window.requestAnimationFrame;
+    window['cancelAnimationFrame'] = window.cancelAnimationFrame;
+  }
+
+  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
+    var lastTime = 0;
+    /**
+     * requestAnimationFrame polyfill.
+     * @param  {!Function} callback the callback function.
+     */
+    window.requestAnimationFrame = function(callback) {
+      var now = Date.now();
+      var nextTime = Math.max(lastTime + 16, now);
+      return setTimeout(function() { callback(lastTime = nextTime); },
+                        nextTime - now);
+    };
+    window.cancelAnimationFrame = clearTimeout;
+    window['requestAnimationFrame'] = window.requestAnimationFrame;
+    window['cancelAnimationFrame'] = window.cancelAnimationFrame;
+  }
+
+})();
diff --git a/node_modules/material-design-lite/src/tooltip/README.md b/node_modules/material-design-lite/src/tooltip/README.md
new file mode 100755
index 0000000..db61294
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/README.md
@@ -0,0 +1,70 @@
+## Introduction
+
+The Material Design Lite (MDL) **tooltip** component is an enhanced version of the standard HTML tooltip as produced by the `title` attribute. A tooltip consists of text and/or an image that clearly communicates additional information about an element when the user hovers over or, in a touch-based UI, touches the element. The MDL tooltip component is pre-styled (colors, fonts, and other settings are contained in *material.min.css*) to provide a vivid, attractive visual element that displays related but typically non-essential content, e.g., a definition, clarification, or brief instruction.
+
+Tooltips are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is an important factor in the overall user experience. See the tooltip component's [Material Design specifications page](http://www.google.com/design/spec/components/tooltips.html) for details.
+
+### To include an MDL **tooltip** component:
+
+&nbsp;1. Code an element, such as a `<div>`, `<p>`, or `<span>`, and style it as desired; this will be the tooltip's target. Include an `id` attribute and unique value to link the container to its tooltip.
+```html
+<p id="tt1">HTML</p>
+```
+&nbsp;2. Following the target element, code a second element, such as a `<div>`, `<p>`, or `<span>`; this will be the tooltip itself. Include a `for` (or `data-mdl-for`) attribute whose value matches that of the target's `id`.
+```html
+<p id="tt1">HTML</p>
+<span for="tt1">HyperText Markup Language</span>
+```
+&nbsp;3. Add one or more MDL classes, separated by spaces, to the tooltip element using the `class` attribute.
+```html
+<p id="tt1">HTML</p>
+<span for="tt1" class="mdl-tooltip">HyperText Markup Language</span>
+```
+
+The tooltip component is ready for use.
+
+#### Examples
+
+A target with a simple text tooltip.
+```html
+<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
+<span class="mdl-tooltip" for="xml">eXtensible Markup Language</span>
+```
+
+A target with "rich" (containing HTML markup) tooltip text.
+```html
+<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
+<span class="mdl-tooltip" for="xml">e<b>X</b>tensible <b>M</b>arkup <b>L</b>anguage</span>
+```
+
+A target with a long text tooltip that automatically wraps.
+```html
+<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
+<span class="mdl-tooltip" for="xml">XML is an acronym for eXtensible Markup Language</span>
+```
+
+A target with tooltip text in a larger font size.
+```html
+<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
+<span class="mdl-tooltip mdl-tooltip--large" for="xml">eXtensible Markup Language</span>
+```
+
+A target with a tooltip containing both an image and text.
+```html
+<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
+<span class="mdl-tooltip" for="xml">
+<img src="xml-logo-small.png" width="20" height="10"> eXtensible Markup Language</span>
+```
+
+## Configuration options
+
+The MDL CSS classes apply various predefined visual enhancements to the tooltip. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-tooltip` | Defines a container as an MDL tooltip | Required on tooltip container element |
+| `mdl-tooltip--large` | Applies large-font effect | Optional; goes on tooltip container element |
+| `mdl-tooltip--left` | Positions the tooltip to the left of the target | Optional; goes on tooltip container element |
+| `mdl-tooltip--right` | Positions the tooltip to the right of the target | Optional; goes on tooltip container element |
+| `mdl-tooltip--top` | Positions the tooltip to the top of the target | Optional; goes on tooltip container element |
+| `mdl-tooltip--bottom` | Positions the tooltip to the bottom of the target | Optional; goes on tooltip container element |
diff --git a/node_modules/material-design-lite/src/tooltip/_tooltip.scss b/node_modules/material-design-lite/src/tooltip/_tooltip.scss
new file mode 100644
index 0000000..bec1cd5
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/_tooltip.scss
@@ -0,0 +1,65 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+
+.mdl-tooltip {
+  transform: scale(0);
+  transform-origin: top center;
+  z-index: 999;
+  background: $tooltip-background-color;
+  border-radius: 2px;
+  color: $tooltip-text-color;
+  display: inline-block;
+  font-size: $tooltip-font-size;
+  font-weight: 500;
+  line-height: 14px;
+  max-width: 170px;
+  position: fixed;
+  top: -500px;
+  left: -500px;
+  padding: 8px;
+  text-align: center;
+}
+.mdl-tooltip.is-active {
+  animation: pulse 200ms $animation-curve-linear-out-slow-in forwards;
+}
+
+.mdl-tooltip--large {
+  line-height: 14px;
+  font-size: $tooltip-font-size-large;
+  padding: 16px;
+}
+
+@keyframes pulse {
+  0% {
+    transform: scale(0);
+    opacity: 0;
+  }
+  50% {
+    // Fixes a weird bug with the interaction between Safari and the result of
+    // the SASS compilation for the animation.
+    // Essentially, we need to make sure that "50%" and "100%" don't get merged
+    // into a single "50%, 100%" entry, so we need to avoid them having any
+    // matching properties.
+    transform: scale(0.99);
+  }
+  100% {
+    transform: scale(1);
+    opacity: 1;
+    visibility: visible;
+  }
+}
diff --git a/node_modules/material-design-lite/src/tooltip/snippets/tooltip-large.html b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-large.html
new file mode 100644
index 0000000..6d55dc1
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-large.html
@@ -0,0 +1,5 @@
+<!-- Large Tooltip -->
+<div id="tt2" class="icon material-icons">print</div>
+<div class="mdl-tooltip mdl-tooltip--large" for="tt2">
+Print
+</div>
diff --git a/node_modules/material-design-lite/src/tooltip/snippets/tooltip-multiline.html b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-multiline.html
new file mode 100644
index 0000000..7bc555b
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-multiline.html
@@ -0,0 +1,5 @@
+<!-- Multiline Tooltip -->
+<div id="tt4" class="icon material-icons">share</div>
+<div class="mdl-tooltip" for="tt4">
+Share your content<br>via social media
+</div>
diff --git a/node_modules/material-design-lite/src/tooltip/snippets/tooltip-rich.html b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-rich.html
new file mode 100644
index 0000000..dab28f5
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-rich.html
@@ -0,0 +1,5 @@
+<!-- Rich Tooltip -->
+<div id="tt3" class="icon material-icons">cloud_upload</div>
+<div class="mdl-tooltip" data-mdl-for="tt3">
+Upload <strong>file.zip</strong>
+</div>
diff --git a/node_modules/material-design-lite/src/tooltip/snippets/tooltip-simple.html b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-simple.html
new file mode 100644
index 0000000..78ba6fc
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/snippets/tooltip-simple.html
@@ -0,0 +1,5 @@
+<!-- Simple Tooltip -->
+<div id="tt1" class="icon material-icons">add</div>
+<div class="mdl-tooltip" data-mdl-for="tt1">
+Follow
+</div>
diff --git a/node_modules/material-design-lite/src/tooltip/tooltip.js b/node_modules/material-design-lite/src/tooltip/tooltip.js
new file mode 100644
index 0000000..bfdacca
--- /dev/null
+++ b/node_modules/material-design-lite/src/tooltip/tooltip.js
@@ -0,0 +1,154 @@
+/**
+ * @license
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+  'use strict';
+
+  /**
+   * Class constructor for Tooltip MDL component.
+   * Implements MDL component design pattern defined at:
+   * https://github.com/jasonmayes/mdl-component-design-pattern
+   *
+   * @constructor
+   * @param {HTMLElement} element The element that will be upgraded.
+   */
+  var MaterialTooltip = function MaterialTooltip(element) {
+    this.element_ = element;
+
+    // Initialize instance.
+    this.init();
+  };
+  window['MaterialTooltip'] = MaterialTooltip;
+
+  /**
+   * Store constants in one place so they can be updated easily.
+   *
+   * @enum {string | number}
+   * @private
+   */
+  MaterialTooltip.prototype.Constant_ = {
+    // None for now.
+  };
+
+  /**
+   * Store strings for class names defined by this component that are used in
+   * JavaScript. This allows us to simply change it in one place should we
+   * decide to modify at a later date.
+   *
+   * @enum {string}
+   * @private
+   */
+  MaterialTooltip.prototype.CssClasses_ = {
+    IS_ACTIVE: 'is-active',
+    BOTTOM: 'mdl-tooltip--bottom',
+    LEFT: 'mdl-tooltip--left',
+    RIGHT: 'mdl-tooltip--right',
+    TOP: 'mdl-tooltip--top'
+  };
+
+  /**
+   * Handle mouseenter for tooltip.
+   *
+   * @param {Event} event The event that fired.
+   * @private
+   */
+  MaterialTooltip.prototype.handleMouseEnter_ = function(event) {
+    var props = event.target.getBoundingClientRect();
+    var left = props.left + (props.width / 2);
+    var top = props.top + (props.height / 2);
+    var marginLeft = -1 * (this.element_.offsetWidth / 2);
+    var marginTop = -1 * (this.element_.offsetHeight / 2);
+
+    if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {
+      left = (props.width / 2);
+      if (top + marginTop < 0) {
+        this.element_.style.top = '0';
+        this.element_.style.marginTop = '0';
+      } else {
+        this.element_.style.top = top + 'px';
+        this.element_.style.marginTop = marginTop + 'px';
+      }
+    } else {
+      if (left + marginLeft < 0) {
+        this.element_.style.left = '0';
+        this.element_.style.marginLeft = '0';
+      } else {
+        this.element_.style.left = left + 'px';
+        this.element_.style.marginLeft = marginLeft + 'px';
+      }
+    }
+
+    if (this.element_.classList.contains(this.CssClasses_.TOP)) {
+      this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';
+    } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {
+      this.element_.style.left = props.left + props.width + 10 + 'px';
+    } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {
+      this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';
+    } else {
+      this.element_.style.top = props.top + props.height + 10 + 'px';
+    }
+
+    this.element_.classList.add(this.CssClasses_.IS_ACTIVE);
+  };
+
+  /**
+   * Hide tooltip on mouseleave or scroll
+   *
+   * @private
+   */
+  MaterialTooltip.prototype.hideTooltip_ = function() {
+    this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);
+  };
+
+  /**
+   * Initialize element.
+   */
+  MaterialTooltip.prototype.init = function() {
+
+    if (this.element_) {
+      var forElId = this.element_.getAttribute('for') ||
+          this.element_.getAttribute('data-mdl-for');
+
+      if (forElId) {
+        this.forElement_ = document.getElementById(forElId);
+      }
+
+      if (this.forElement_) {
+        // It's left here because it prevents accidental text selection on Android
+        if (!this.forElement_.hasAttribute('tabindex')) {
+          this.forElement_.setAttribute('tabindex', '0');
+        }
+
+        this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);
+        this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);
+        this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);
+        this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);
+        this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);
+        window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);
+        window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);
+      }
+    }
+  };
+
+  // The component registers itself. It can assume componentHandler is available
+  // in the global scope.
+  componentHandler.register({
+    constructor: MaterialTooltip,
+    classAsString: 'MaterialTooltip',
+    cssClass: 'mdl-tooltip'
+  });
+})();
diff --git a/node_modules/material-design-lite/src/typography/README.md b/node_modules/material-design-lite/src/typography/README.md
new file mode 100755
index 0000000..d382fc3
--- /dev/null
+++ b/node_modules/material-design-lite/src/typography/README.md
@@ -0,0 +1,106 @@
+## Introduction
+
+The Material Design Lite (MDL) **typography** component is a comprehensive approach to standardizing the use of typefaces in applications and page displays. MDL typography elements are intended to replace the myriad fonts used by developers (which vary significantly in appearance) and provide a robust, uniform library of text styles from which developers can choose.
+
+The "Roboto" typeface is the standard for MDL display; it can easily be integrated into a web page using the CSS3 `@font-face` rule. However, Roboto is most simply accessed and included using a single standard HTML `<link>` element, which can be obtained at [this Google fonts page](http://www.google.com/fonts#UsePlace:use/Collection:Roboto).
+
+Because of the many possible variations in font display characteristics in HTML and CSS, MDL typography aims to provide simple and intuitive styles that use the Roboto font and produce visually attractive and internally consistent text results. See the typography component's [Material Design specifications page](http://www.google.com/design/spec/style/typography.html) for details.
+
+## Basic use
+
+Include a link to the Google stylesheet that accesses the font and its desired variations.
+
+```html
+<head>
+<link
+ href='http://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic'
+ rel='stylesheet' type='text/css'>
+...
+</head>
+```
+
+### To include an MDL **typography** component:
+
+&nbsp;1. Code any element (`<div>`,`<p>`,`<span>`, etc.) that can contain text, including whatever content is appropriate.
+```html
+<p>This is a standard paragraph.</p>
+```
+&nbsp;2. Add one or more MDL classes, separated by spaces, to the element using the `class` attribute.
+```html
+<p class="mdl-typography--body-1">This is a standard paragraph.</p>
+```
+
+The typography component is ready for use.
+
+#### Examples
+
+A "headline" paragraph.
+
+```html
+<p class="mdl-typography--headline">Regular 24px</p>
+```
+
+A "title" paragraph.
+```html
+<p class="mdl-typography--title">Medium 20px</p>
+```
+
+A "caption" span.
+```html
+<span class="mdl-typography--caption">Regular 12px</span>
+```
+
+A "button" span.
+```html
+<span class="mdl-typography--button">Medium (All Caps) 14px</span>
+```
+A "display 1" table cell.
+```html
+<td class="mdl-typography--display-1">Regular 34px</td>
+```
+A "body-1" paragraph, also uppercased.
+```html
+<p class="mdl-typography--body-1 mdl-typography--text-uppercase">
+ This is a standard paragraph, but uppercased.
+</p>
+```
+
+>**Note:** Because the Roboto font is intended to apply to the entire page, standard "unclassed" HTML elements (e.g., heading levels, divs, paragraphs, spans, tables, etc. with no `class` attribute) and text modifiers (e.g., strong, em, small, etc.) will use Roboto, while also retaining their inherent and/or inherited characteristics.
+>
+>Also note that MDL typography provides some automatic adjustments based on its display environment. For example, the `body-1` style renders at 14px on a mobile device, but 13px on a desktop. You need not do anything to activate these self-modifiers; they are built into the MDL styles.
+
+## Configuration options
+
+The MDL CSS classes specify the style to use. The table below lists the available classes and their effects.
+
+| MDL class | Effect | Remarks |
+|-----------|--------|---------|
+| `mdl-typography--body-1` | Regular 14px (Device), Regular 13px (Desktop) | Optional |
+| `mdl-typography--body-1-force-preferred-font` | Regular 14px (Device), Regular 13px (Desktop) | Optional |
+| `mdl-typography--body-2` | Medium 14px (Device), Medium 13px (Desktop) | Optional |
+| `mdl-typography--body-2` | mdl-typography-body-2 | Optional |
+| `mdl-typography--body-2-color-contrast` | Body with color contrast | Optional |
+| `mdl-typography--body-2-force-preferred-font` | Medium 14px (Device), Medium 13px (Desktop) | Optional |
+| `mdl-typography--button` | Medium (All Caps) 14px | Optional |
+| `mdl-typography--caption` | Regular 12px | Optional |
+| `mdl-typography--caption-color-contrast` | Caption with color contrast | Optional |
+| `mdl-typography--display-1` | Regular 34px | Optional |
+| `mdl-typography--display-1-color-contrast` | Display with color contrast | Optional |
+| `mdl-typography--display-2` | Regular 45px | Optional |
+| `mdl-typography--display-3` | Regular 56px | Optional |
+| `mdl-typography--display-4` | Light 112px | Optional |
+| `mdl-typography--headline` | Regular 24px | Optional |
+| `mdl-typography--menu` | Medium 14px (Device), Medium 13px (Desktop) | Optional |
+| `mdl-typography--subhead` | Regular 16px (Device), Regular 15px (Desktop) | Optional |
+| `mdl-typography--subhead-color-contrast` | Subhead with color contrast | Optional |
+| `mdl-typography--table-striped` | Striped table| Optional |
+| `mdl-typography--text-capitalize` | Capitalized text | Optional |
+| `mdl-typography--text-center` | Center aligned text | Optional |
+| `mdl-typography--text-justify` | Justified text | Optional |
+| `mdl-typography--text-left` | Left aligned text | Optional |
+| `mdl-typography--text-lowercase` | Lowercased text | Optional |
+| `mdl-typography--text-nowrap` | No wrap text | Optional |
+| `mdl-typography--text-right` | Right aligned text | Optional |
+| `mdl-typography--text-uppercase` | Uppercased text | Optional |
+| `mdl-typography--title` | Medium 20px | Optional |
+| `mdl-typography--title-color-contrast` | Title with color contrast | Optional |
diff --git a/node_modules/material-design-lite/src/typography/_typography.scss b/node_modules/material-design-lite/src/typography/_typography.scss
new file mode 100644
index 0000000..3b0e889
--- /dev/null
+++ b/node_modules/material-design-lite/src/typography/_typography.scss
@@ -0,0 +1,301 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import "../variables";
+@import "../mixins";
+
+@if $target-elements-directly == true {
+  html, body {
+    font-family: $performance_font;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 20px;
+  }
+
+  h1, h2, h3, h4, h5, h6, p {
+    margin: 0;
+    padding: 0;
+  }
+
+  /**
+  * Styles for HTML elements
+  */
+
+  h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
+    @include typo-display-3($colorContrast: true);
+
+    font-size: 0.6em;
+  }
+
+  h1 {
+    @include typo-display-3;
+
+    margin-top: 24px;
+    margin-bottom: 24px;
+  }
+
+  h2 {
+    @include typo-display-2;
+
+    margin-top: 24px;
+    margin-bottom: 24px;
+  }
+
+  h3 {
+    @include typo-display-1;
+
+    margin-top: 24px;
+    margin-bottom: 24px;
+  }
+
+  h4 {
+    @include typo-headline;
+
+    margin-top: 24px;
+    margin-bottom: 16px;
+  }
+
+  h5 {
+    @include typo-title;
+
+    margin-top: 24px;
+    margin-bottom: 16px;
+  }
+
+  h6 {
+    @include typo-subhead;
+
+    margin-top: 24px;
+    margin-bottom: 16px;
+  }
+
+  p {
+    @include typo-body-1;
+
+    margin-bottom: 16px;
+  }
+
+  a {
+    color: $text-link-color;
+    font-weight: 500;
+  }
+
+  blockquote {
+    @include typo-blockquote;
+  }
+
+  mark {
+    background-color: #f4ff81;
+  }
+
+  dt {
+    font-weight: 700;
+  }
+
+  address {
+    @include typo-caption;
+
+    font-style: normal;
+  }
+
+  ul, ol {
+    @include typo-body-1;
+  }
+}
+
+/**
+ * Class Name Styles
+ */
+
+.mdl-typography--display-4 {
+  @include typo-display-4;
+}
+
+.mdl-typography--display-4-color-contrast {
+  @include typo-display-4($colorContrast: true);
+}
+
+.mdl-typography--display-3 {
+  @include typo-display-3;
+}
+
+.mdl-typography--display-3-color-contrast {
+  @include typo-display-3($colorContrast: true);
+}
+
+.mdl-typography--display-2 {
+  @include typo-display-2;
+}
+
+.mdl-typography--display-2-color-contrast {
+  @include typo-display-2($colorContrast: true);
+}
+
+.mdl-typography--display-1 {
+  @include typo-display-1;
+}
+
+.mdl-typography--display-1-color-contrast {
+  @include typo-display-1($colorContrast: true);
+}
+
+.mdl-typography--headline {
+  @include typo-headline;
+}
+
+.mdl-typography--headline-color-contrast {
+  @include typo-headline($colorContrast: true);
+}
+
+.mdl-typography--title {
+  @include typo-title;
+}
+
+.mdl-typography--title-color-contrast {
+  @include typo-title($colorContrast: true);
+}
+
+.mdl-typography--subhead {
+  @include typo-subhead;
+}
+
+.mdl-typography--subhead-color-contrast {
+  @include typo-subhead($colorContrast: true);
+}
+
+.mdl-typography--body-2 {
+  @include typo-body-2;
+}
+
+.mdl-typography--body-2-color-contrast {
+  @include typo-body-2($colorContrast: true);
+}
+
+.mdl-typography--body-1 {
+  @include typo-body-1;
+}
+
+.mdl-typography--body-1-color-contrast {
+  @include typo-body-1($colorContrast: true);
+}
+
+.mdl-typography--body-2-force-preferred-font {
+  @include typo-body-2($usePreferred: true);
+}
+
+.mdl-typography--body-2-force-preferred-font-color-contrast {
+  @include typo-body-2($colorContrast: true, $usePreferred: true);
+}
+
+.mdl-typography--body-1-force-preferred-font {
+  @include typo-body-1($usePreferred: true);
+}
+
+.mdl-typography--body-1-force-preferred-font-color-contrast {
+  @include typo-body-1($colorContrast: true, $usePreferred: true);
+}
+
+.mdl-typography--caption {
+  @include typo-caption;
+}
+
+.mdl-typography--caption-force-preferred-font {
+  @include typo-caption($usePreferred: true);
+}
+
+.mdl-typography--caption-color-contrast {
+  @include typo-caption($colorContrast: true);
+}
+
+.mdl-typography--caption-force-preferred-font-color-contrast {
+  @include typo-caption($colorContrast: true, $usePreferred: true);
+}
+
+.mdl-typography--menu {
+  @include typo-menu;
+}
+
+.mdl-typography--menu-color-contrast {
+  @include typo-menu($colorContrast: true);
+}
+
+.mdl-typography--button {
+  @include typo-button;
+}
+
+.mdl-typography--button-color-contrast {
+  @include typo-button($colorContrast: true);
+}
+
+.mdl-typography--text-left {
+  text-align: left;
+}
+
+.mdl-typography--text-right {
+  text-align: right;
+}
+
+.mdl-typography--text-center {
+  text-align: center;
+}
+
+.mdl-typography--text-justify {
+  text-align: justify;
+}
+
+.mdl-typography--text-nowrap {
+  white-space: nowrap;
+}
+
+.mdl-typography--text-lowercase {
+  text-transform: lowercase;
+}
+
+.mdl-typography--text-uppercase {
+  text-transform: uppercase;
+}
+
+.mdl-typography--text-capitalize {
+  text-transform: capitalize;
+}
+
+.mdl-typography--font-thin {
+  font-weight: 200 !important;
+}
+
+.mdl-typography--font-light {
+  font-weight: 300 !important;
+}
+
+.mdl-typography--font-regular {
+  font-weight: 400 !important;
+}
+
+.mdl-typography--font-medium {
+  font-weight: 500 !important;
+}
+
+.mdl-typography--font-bold {
+  font-weight: 700 !important;
+}
+
+.mdl-typography--font-black {
+  font-weight: 900 !important;
+}
+
+.material-icons {
+  @include typo-icon;
+}
diff --git a/node_modules/material-design-lite/src/typography/demo.css b/node_modules/material-design-lite/src/typography/demo.css
new file mode 100644
index 0000000..d1ae151
--- /dev/null
+++ b/node_modules/material-design-lite/src/typography/demo.css
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.demo-page--typography {
+  color: rgba(0, 0, 0, 0.87);
+}
+
+.demo-page--typography table th {
+  padding-right: 80px;
+
+  vertical-align: top;
+  text-align: left;
+}
+
+.demo-typography--white {
+  background-color: white;
+  color: black;
+}
+
+.demo-typography--black {
+  background-color: black;
+  color: white;
+}
+
+.demo-typography--white,
+.demo-typography--black,
+.demo-typography--img-1,
+.demo-typography--img-2 {
+  width: 360px;
+  height: 272px;
+
+  padding: 16px;
+  box-sizing: border-box;
+}
+
+.demo-typography--img-1 {
+  background-image: url(../demo-images/img-1.png);
+  color: white;
+}
+
+.demo-typography--img-2 {
+  background-image: url(../demo-images/img-2.png);
+  color: white;
+}
diff --git a/node_modules/material-design-lite/src/typography/demo.html b/node_modules/material-design-lite/src/typography/demo.html
new file mode 100644
index 0000000..7a2871e
--- /dev/null
+++ b/node_modules/material-design-lite/src/typography/demo.html
@@ -0,0 +1,228 @@
+  <h2>Scale &amp; Basic Styles</h2>
+
+  <div class="demo-preview-block demo-page--typography">
+    <table>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Display 4</th>
+        <td class="mdl-typography--display-4">Light 112px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Display 3</th>
+        <td class="mdl-typography--display-3">Regular 56px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Display 2</th>
+        <td class="mdl-typography--display-2">Regular 45px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Display 1</th>
+        <td class="mdl-typography--display-1">Regular 34px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Headline</th>
+        <td class="mdl-typography--headline">Regular 24px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Title</th>
+        <td class="mdl-typography--title">Medium 20px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Subhead</th>
+        <td class="mdl-typography--subhead">Regular 16px (Device), Regular 15px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Body 2</th>
+        <td class="mdl-typography--body-2">Medium 14px (Device), Medium 13px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Body 1</th>
+        <td class="mdl-typography--body-1">Regular 14px (Device), Regular 13px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Body 2 (force preferred font)</th>
+        <td class="mdl-typography--body-2-force-preferred-font">Medium 14px (Device), Medium 13px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Body 1 (force preferred font)</th>
+        <td class="mdl-typography--body-1-force-preferred-font">Regular 14px (Device), Regular 13px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Caption</th>
+        <td class="mdl-typography--caption">Regular 12px</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Menu</th>
+        <td class="mdl-typography--menu">Medium 14px (Device), Medium 13px (Desktop)</td>
+      </tr>
+      <tr>
+        <th class="mdl-typography--caption-color-contrast">Button</th>
+        <td class="mdl-typography--button">Medium (All Caps) 14px</td>
+      </tr>
+    </table>
+  </div>
+
+  <h2>HTML Elements</h2>
+
+  <div class="demo-preview-block">
+
+    <h3>Headings</h3>
+
+    <h1>&lt;h1&gt;</h1>
+    <h2>&lt;h2&gt;</h2>
+    <h3>&lt;h3&gt;</h3>
+    <h4>&lt;h4&gt;</h4>
+    <h5>&lt;h5&gt;</h5>
+    <h6>&lt;h6&gt;</h6>
+
+    <h3>Formatting</h3>
+
+    <p><u>&lt;u&gt;Underlined&lt;u&gt;</u></p>
+
+    <p><b>&lt;b&gt;Bold&lt;b&gt;</b></p>
+
+    <p><strong>&lt;strong&gt;Strong&lt;strong&gt;</strong></p>
+
+    <p><i>&lt;italic&gt;Italic&lt;italic&gt;</i></p>
+
+    <p><em>&lt;em&gt;Em&lt;em&gt;</em></p>
+
+    <p><s>&lt;s&gt;Strikethrough&lt;s&gt;</s></p>
+
+    <p><small>&lt;small&gt;Small&lt;small&gt;</small></p>
+
+    <p><mark>&lt;mark&gt;Mark&lt;mark&gt;</mark></p>
+
+    <h3>Body Text</h3>
+
+    <p>&lt;p&gt;</p>
+
+    <p class="mdl-typography--body-2">&lt;p class="mdl-typography-body-2"&gt;</p>
+
+    <p class="mdl-typography--caption">&lt;p class="mdl-typography-caption"&gt;</p>
+
+    <p class="mdl-typography--menu">&lt;p class="mdl-typography-menu"&gt;</p>
+
+    <p class="mdl-typography--button">&lt;p class="mdl-typography-button"&gt;</p>
+
+    <h3>Subtitles</h3>
+
+    <h1>&lt;h1&gt; <small>Subtitle</small></h1>
+    <h2>&lt;h2&gt; <small>Subtitle</small></h2>
+    <h3>&lt;h3&gt; <small>Subtitle</small></h3>
+    <h4>&lt;h4&gt; <small>Subtitle</small></h4>
+    <h5>&lt;h5&gt; <small>Subtitle</small></h5>
+    <h6>&lt;h6&gt; <small>Subtitle</small></h6>
+
+    <h3>Description</h3>
+
+    <dl>
+      <dt>Description lists</dt>
+      <dd>A description list is perfect for defining terms.</dd>
+      <dt>Euismod</dt>
+      <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+      <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+      <dt>Malesuada porta</dt>
+      <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+    </dl>
+  </div>
+
+  <h2>Quotes</h2>
+
+  <div class="demo-preview-block">
+    <blockquote>&lt;blockquote&gt;</blockquote>
+  </div>
+
+  <h2>Alignment</h2>
+
+  <p class="mdl-typography--text-left">Left aligned text.</p>
+  <p class="mdl-typography--text-center">Center aligned text.</p>
+  <p class="mdl-typography--text-right">Right aligned text.</p>
+  <p class="mdl-typography--text-justify">Justified text.</p>
+  <p class="mdl-typography--text-nowrap">No wrap text.</p>
+
+  <h2>Transformations</h2>
+  <p class="mdl-typography--text-lowercase">Lowercased text.</p>
+  <p class="mdl-typography--text-uppercase">Uppercased text.</p>
+  <p class="mdl-typography--text-capitalize">Capitalized text.</p>
+
+  <h2>Addresses</h2>
+
+  <address>
+    <strong>Googleplex</strong><br>
+    1600 Amphitheatre Pkwy<br>
+    Mountain View, CA 94043<br>
+    <abbr title="Phone">P:</abbr> (650) 253-0000
+  </address>
+
+  <h2>Code</h2>
+
+  <h3>Multi-line code blocks</h3>
+  <p>
+    Use &lt;pre&gt; for multi-line code blocks.
+    <pre>
+&lt;p&gt;This is the first line of code&lt;/p&gt;
+&lt;p&gt;This is the second line of code&lt;/p&gt;
+  </pre>
+  </p>
+
+  <h3>Inline code blocks</h3>
+  <p>Code blocks like <code>&lt;main&gt;</code> could be displayed inline.</p>
+
+
+  <h2>Color Contrasts</h2>
+
+  <div class="demo-preview-block">
+    <div class="demo-typography--white">
+      <p class="mdl-typography--caption-color-contrast">Caption</p>
+
+      <p class="mdl-typography--body-2-color-contrast">Body</p>
+
+      <p class="mdl-typography--subhead-color-contrast">Subhead</p>
+
+      <p class="mdl-typography--title-color-contrast">Title</p>
+
+      <p class="mdl-typography--display-1-color-contrast">Display</p>
+    </div>
+  </div>
+
+  <div class="demo-preview-block">
+    <div class="demo-typography--black">
+        <p class="mdl-typography--caption-color-contrast">Caption</p>
+
+        <p class="mdl-typography--body-2-color-contrast">Body</p>
+
+        <p class="mdl-typography--subhead-color-contrast">Subhead</p>
+
+        <p class="mdl-typography--title-color-contrast">Title</p>
+
+        <p class="mdl-typography--display-1-color-contrast">Display</p>
+    </div>
+  </div>
+
+  <div class="demo-preview-block">
+    <div class="demo-typography--img-1">
+        <p class="mdl-typography--caption-color-contrast">Caption</p>
+
+        <p class="mdl-typography--body-2-color-contrast">Body</p>
+
+        <p class="mdl-typography--subhead-color-contrast">Subhead</p>
+
+        <p class="mdl-typography--title-color-contrast">Title</p>
+
+        <p class="mdl-typography--display-1-color-contrast">Display</p>
+    </div>
+  </div>
+
+  <div class="demo-preview-block">
+    <div class="demo-typography--img-2">
+      <p class="mdl-typography--caption-color-contrast">Caption</p>
+
+      <p class="mdl-typography--body-2-color-contrast">Body</p>
+
+      <p class="mdl-typography--subhead-color-contrast">Subhead</p>
+
+      <p class="mdl-typography--title-color-contrast">Title</p>
+
+      <p class="mdl-typography--display-1-color-contrast">Display</p>
+    </div>
+  </div>
